Errors
The error envelope, HTTP status codes, and machine-readable error codes.
Every error uses one envelope, everywhere:
code— a stable, machine-readable string. Branch your error handling on this, not on the message.message— a human-readable explanation. Safe to log; never contains stack traces, tenant IDs, or internal identifiers.request_id— the same value as theX-Request-Idresponse header. Include it in support requests.
Correlation
X-Request-Id is returned on every response — success or error. If you supply your own X-Request-Id on the
request, it is echoed back so you can correlate across your logs and ours.
HTTP status discipline
Error codes
Common code values and their typical status:
A cross-tenant read returns 404, not 403, so the API never reveals whether a resource you can’t access exists.
No tenant IDs, ever
Organization and workspace IDs are derived from your API key and appear in neither requests nor responses —
including error responses. Sending an unexpected field such as organization_id is rejected as 400 INVALID_REQUEST.