SimpleKPI Logo

SimpleKPI AI › API reference

KPI Categories

Categories group KPIs so they can be found and reported on together. Every KPI belongs to one. A category has to be empty before it can be deleted.

Base URL https://api.simplekpi.com/v1

Endpoints

  1. List KPI categoriesGET /v1/kpicategories
  2. Create a KPI categoryPOST /v1/kpicategories
  3. Get a KPI categoryGET /v1/kpicategories/{id}
  4. Update a KPI categoryPUT /v1/kpicategories/{id}
  5. Delete a KPI categoryDELETE /v1/kpicategories/{id}

KPI category object

NameTypeRead OnlyMandatoryMax Len.Notes
idintegeryesno Assigned by SimpleKPI when the category is created.
namestringnoyes50What the category is called.
sort_orderinteger (16 bit)nono Position of the category in the list.
created_atdatetimeyesno  
updated_atdatetimeyesno  

List KPI categories

GET /v1/kpicategories

Requires kpis:read on the API key.

Parameters

NameTypeRequiredDefaultNotes
pageintegerno1Which page to return, counting from 1.
rowsintegerno500How many rows per page. Defaults to 500.

Using curl

curl https://api.simplekpi.com/v1/kpicategories \
  -H "Authorization: Bearer skpi_your_api_key"

Example response

Status: 200 OK
[
  {
    "id": 5478,
    "name": "Sales",
    "sort_order": 1,
    "created_at": "2026-02-21T10:57:00",
    "updated_at": "2026-02-21T10:57:00"
  }
]

Status codes

CodeMeaning
200OK
400Bad Request
401Unauthorized
403Forbidden
429Too Many Requests

 

Create a KPI category

POST /v1/kpicategories

Requires kpis:write on the API key.

Using curl

curl https://api.simplekpi.com/v1/kpicategories \
  -X POST \
  -H "Authorization: Bearer skpi_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"name":"Sales","sort_order":1}'

Example request body

{
  "name": "Sales",
  "sort_order": 1
}

Status codes

CodeMeaning
201Created
400Bad Request
401Unauthorized
403Forbidden
409Conflict
429Too Many Requests

 

Get a KPI category

GET /v1/kpicategories/{id}

Requires kpis:read on the API key.

Parameters

NameTypeRequiredDefaultNotes
idintegeryes The category to return.

Using curl

curl https://api.simplekpi.com/v1/kpicategories/{id} \
  -H "Authorization: Bearer skpi_your_api_key"

Status codes

CodeMeaning
200OK
401Unauthorized
403Forbidden
404Not Found
429Too Many Requests

 

Update a KPI category

PUT /v1/kpicategories/{id}

A full replacement, not a patch.

Requires kpis:write on the API key.

Parameters

NameTypeRequiredDefaultNotes
idintegeryes The category to replace.

Using curl

curl https://api.simplekpi.com/v1/kpicategories/{id} \
  -X PUT \
  -H "Authorization: Bearer skpi_your_api_key"

Status codes

CodeMeaning
200OK
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict
429Too Many Requests

 

Delete a KPI category

DELETE /v1/kpicategories/{id}

The category has to be empty. Move or delete its KPIs first, or the call returns 400.

Requires kpis:write on the API key.

Parameters

NameTypeRequiredDefaultNotes
idintegeryes The category to delete.

Using curl

curl https://api.simplekpi.com/v1/kpicategories/{id} \
  -X DELETE \
  -H "Authorization: Bearer skpi_your_api_key"

Status codes

CodeMeaning
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
429Too Many Requests