Errors
A single format, stable codes.
{
"error": {
"code": "contact_not_allowed",
"message": "The text contains contact details.",
"fields": [{ "path": "description", "code": "contact_not_allowed" }],
"requestId": "req_ab12cd34"
}
}
message can be translated; code never changes without a new version (/v2). fields only appears for validation errors, with path (where in the request) and code.
HTTP codes
| Code | Means |
|---|---|
400 | invalid request or cursor |
401 | missing or invalid credential |
402 | the plan doesn't include the API |
403 | insufficient permission |
404 | resource missing or inaccessible (including "not yours") |
409 | conflict (cursor changed, idempotency) |
422 | business validation (for example, text with contact details) |
429 | rate limited — see Retry-After |
503 | temporary unavailability |
404 is also used when the resource exists but you don't have a right to it — so we don't confirm which identifiers are valid for others.
requestId is useful for support: we keep it in our own logs too.