Skip to main content

Requests and responses

Send JSON bodies with Content-Type: application/json. A single object comes back as { "data": { … } }. Timestamps are ISO 8601 in UTC, and ids are strings. Every response has an x-request-id header, errors included. Look it up under Developers → Logs to see how that request went, and include it when you contact support about a request. See Request logs.

Errors

An error has a status and a body with a machine-readable code:
An id from another workspace gets 404, the same as an id that does not exist.

Pagination

List endpoints return a page, newest first, with a cursor for the next one:
Pass limit (1 to 100, 20 by default) and the next_cursor you got back as cursor. When has_more is false, next_cursor is null and you have everything. Cursors are opaque: do not build or edit them. A conversation’s messages come oldest first, the order a transcript is read in.

Rate limits

Each key can make 120 requests a minute. Past that, requests get 429 with a Retry-After header until the minute is up. A sync that needs more should spread its work out.