Skip to content

List categories

GET
/categories
curl --request GET \
--url https://flow.work.optidata.cloud/api/categories \
--header 'Authorization: Bearer <token>'

The categories the caller can see: every internal and public category of the company, plus the restricted ones shared with them — directly or through one of their groups. Company administrators see every category.

The categories visible to the caller.

Media typeapplication/json
Array<object>
object
id
required
integer
name
required
string
slug
required

URL-friendly form of the name.

string
description
string | null
visibility
required

Who can see a category. restricted: only the people and groups it is shared with. internal: everyone in the company. public: anyone with the link, including people who are not signed in.

string
Allowed values: restricted internal public
is_public
required

Shortcut for visibility == public.

boolean
identifier

Short public identifier of the category.

string | null
user_id

Id of the user who owns the category, when it has one.

integer | null
group_id

Set when the category mirrors a group: it is shared with the group’s members, and its name and description follow the group’s.

integer | null
cuid

Identifier of the company the category belongs to.

string
created_at
string format: date-time
updated_at
string format: date-time
deleted_at

Set when the category is in the trash.

string | null format: date-time
Examples
Examplecategories
[
{
"id": 864,
"cuid": "7f3c2a10-5b8e-4d21-9c6a-0e4f1b2d3c4a",
"name": "Documentation",
"slug": "documentation",
"description": "Product and process documentation.",
"created_at": "2026-09-02T12:10:14.000000Z",
"updated_at": "2026-09-02T12:10:14.000000Z",
"deleted_at": null,
"visibility": "internal",
"user_id": 157,
"identifier": "k2Rt9w",
"group_id": null,
"is_public": false
},
{
"id": 712,
"cuid": "7f3c2a10-5b8e-4d21-9c6a-0e4f1b2d3c4a",
"name": "Sales team",
"slug": "sales-team",
"description": null,
"created_at": "2026-04-15T18:02:51.000000Z",
"updated_at": "2026-04-15T18:02:51.000000Z",
"deleted_at": null,
"visibility": "restricted",
"user_id": null,
"identifier": null,
"group_id": 524,
"is_public": false
}
]

No authentication key was sent.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The authentication key is expired or not recognised. Get a fresh one and retry.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Exampleexpired
{
"error": "JWT passport expired: Passport expired"
}