Requests and responses
Send JSON bodies withContent-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-readablecode:
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: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 get429 with a Retry-After header until the minute is up. A sync that needs more should spread its work out.