> For the complete documentation index, see [llms.txt](https://docs.kick.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kick.co/api/api-reference/classes.md).

# Classes

Classes are a workspace's tracking dimensions, shared by every entity in it, so all five endpoints are nested under the workspace uuid.

A class created without a `parentClassId` is the root of its own dimension; passing an existing class nests the new one beneath it. Labels have to be unique among siblings, and a duplicate is rejected with `409`. Listing walks every dimension, roots first within each tree.

Deleting a class deletes its whole subtree and removes the class assignments those transactions carried.

## List classes

> Returns the workspace's classes across every dimension, roots first within each tree. Results are paged with \`limit\`/\`offset\`.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/workspaces/{workspaceId}/classes":{"get":{"description":"Returns the workspace's classes across every dimension, roots first within each tree. Results are paged with `limit`/`offset`.","operationId":"classes.list","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"offset","schema":{"default":0,"minimum":0,"nullable":true,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"label":{"type":"string"},"parentClassId":{"description":"Direct parent of the class, null for a root class.","format":"uuid","nullable":true,"type":"string"},"rootClassId":{"description":"Root of the class tree (dimension). A transaction can carry at most one class per root. Root classes reference themselves.","format":"uuid","type":"string"}},"required":["id","label","parentClassId","rootClassId","createdAt"],"type":"object"},"type":"array"},"pagination":{"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"required":["limit","offset","total"],"type":"object"}},"required":["data","pagination"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"List classes","tags":["classes"]}}}}
```

## Create a class

> Creates a class in the workspace. Omit \`parentClassId\` to start a new dimension, or pass an existing class to nest under it. Labels must be unique among siblings.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/workspaces/{workspaceId}/classes":{"post":{"description":"Creates a class in the workspace. Omit `parentClassId` to start a new dimension, or pass an existing class to nest under it. Labels must be unique among siblings.","operationId":"classes.create","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"label":{"minLength":1,"type":"string"},"parentClassId":{"description":"Parent to nest the new class under. Omit or pass null to create a root class (a new dimension).","format":"uuid","nullable":true,"type":"string"}},"required":["label"],"type":"object"}}},"description":"Body"},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"class":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"label":{"type":"string"},"parentClassId":{"description":"Direct parent of the class, null for a root class.","format":"uuid","nullable":true,"type":"string"},"rootClassId":{"description":"Root of the class tree (dimension). A transaction can carry at most one class per root. Root classes reference themselves.","format":"uuid","type":"string"}},"required":["id","label","parentClassId","rootClassId","createdAt"],"type":"object"}},"required":["class"],"type":"object"}}},"description":"201"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"409":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"409"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Create a class","tags":["classes"]}}}}
```

## Retrieve a class

> Returns a single class of the workspace. A class outside the organization's book of business reads as not found.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/workspaces/{workspaceId}/classes/{classId}":{"get":{"description":"Returns a single class of the workspace. A class outside the organization's book of business reads as not found.","operationId":"classes.get","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"classId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"class":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"label":{"type":"string"},"parentClassId":{"description":"Direct parent of the class, null for a root class.","format":"uuid","nullable":true,"type":"string"},"rootClassId":{"description":"Root of the class tree (dimension). A transaction can carry at most one class per root. Root classes reference themselves.","format":"uuid","type":"string"}},"required":["id","label","parentClassId","rootClassId","createdAt"],"type":"object"}},"required":["class"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Retrieve a class","tags":["classes"]}}}}
```

## Update a class

> Renames a class. Labels must stay unique among siblings.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/workspaces/{workspaceId}/classes/{classId}":{"patch":{"description":"Renames a class. Labels must stay unique among siblings.","operationId":"classes.update","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"classId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"label":{"minLength":1,"type":"string"}},"required":["label"],"type":"object"}}},"description":"Body"},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"class":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"label":{"type":"string"},"parentClassId":{"description":"Direct parent of the class, null for a root class.","format":"uuid","nullable":true,"type":"string"},"rootClassId":{"description":"Root of the class tree (dimension). A transaction can carry at most one class per root. Root classes reference themselves.","format":"uuid","type":"string"}},"required":["id","label","parentClassId","rootClassId","createdAt"],"type":"object"}},"required":["class"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"409":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"409"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Update a class","tags":["classes"]}}}}
```

## Delete a class

> Deletes a class together with its whole subtree. Assignments to transactions are removed as well.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/workspaces/{workspaceId}/classes/{classId}":{"delete":{"description":"Deletes a class together with its whole subtree. Assignments to transactions are removed as well.","operationId":"classes.delete","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"classId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Delete a class","tags":["classes"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kick.co/api/api-reference/classes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
