ZahrexDevelopersSign in

Errors and limits

Failures return a JSON error with an HTTP status, and usually a stable code.

Errors

StatusCodeMeaning
400invalid_requestThe token request body is malformed or grant_type is missing.
400unsupported_grant_typeOnly client_credentials is supported.
400invalid_scopeA requested scope is not granted to this app.
401invalid_clientThe client id or secret is wrong.
401messageThe API key or access token is missing, invalid, expired or revoked.
403scope_requiredThe key or token lacks the scope this call needs.
403capability_requiredThe organization does not have the platform capability.
413payload_too_largeThe request body is over the size limit.
422invalid_jsonThe body is not valid JSON.
422too_many_eventsThe batch holds more events than the limit.
422idempotency_key_too_longThe Idempotency-Key header is over 128 characters.
429rate_limitedToo many requests; wait for the Retry-After seconds.

Error shapes

Errors from the token endpoint and from every other endpoint have different JSON shapes. When code is a dash above, read the detail message instead.

Token endpoint
{
  "error": "<code>",
  "error_description": "<message>"
}
All other endpoints
{
  "detail": "<code or message>"
}

Limits

LimitValue
Requests per minute60
Burst120
Events per batch100
Maximum body size262144 bytes
Idempotency window7 days

Idempotency

Send a stable id per event so a retried request is not processed twice; duplicates are recognised for 7 days. On rate-limit errors, wait and retry with backoff.