Skip to content

List the people you can talk to

GET
/users
curl --request GET \
--url 'https://chat.work.optidata.cloud/api/users?paginated=false' \
--header 'Authorization: Bearer <token>'

Every user of the company except the caller. By default the whole list is returned as a plain array; pass paginated=true to get a paginated envelope instead.

paginated
boolean

Return a paginated envelope instead of a plain array.

The company’s users. A plain array, or a paginator envelope whose data carries the same items when paginated=true.

Media typeapplication/json
One of:
Array<object>

A person in the tenant.

object
id
required

Numeric id, used on the conversation and participant routes.

integer format: int64
uuid
required

Stable identifier of the user across the Optiwork suite.

string format: uuid
cuid

Identifier of the company the user belongs to.

string
username
string | null
email
required
string format: email
name
required
string
company_name
string | null
type

null for a person. 0 marks the Optiwork AI assistant, 1 a bot and 2 a contact reached over an external messaging integration.

integer | null
dark_mode
boolean
messenger_color

The colour used for this user’s name in the interface.

string
avatar_url
string | null format: uri
created_at
string format: date-time
updated_at
string format: date-time
deleted_at

Set when the user has been removed from the company.

string | null format: date-time
whatsapp_info

Details of the linked external-messaging contact, present when the user is reached over an external messaging integration (type 2); null for an ordinary person. Its keys depend on the integration, so treat it as an open object.

object | null
Examples
Exampleplain

Default — plain array

[
{
"id": 5,
"uuid": "7c2f4b18-a90d-4d6e-8f11-2b5c9e70a334",
"cuid": "a3f1c9a52-4d7e-4b31-9c02-77a1b6e5d840",
"username": null,
"email": "john.smith@acme.example",
"name": "John Smith",
"company_name": "Acme",
"created_at": "2026-08-14T14:00:10.000000Z",
"updated_at": "2026-08-14T14:00:10.000000Z",
"deleted_at": null,
"dark_mode": false,
"messenger_color": "#2180f3",
"type": null,
"avatar_url": "https://cdn.example/avatars/john.webp"
}
]

Missing, malformed or expired authentication key.

Media typeapplication/json

Authentication failures — and a few permission denials — 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"
}

Rate limit exceeded. Retry after the window resets.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Examplethrottled
{
"message": "Too Many Attempts."
}