Skip to main content
Every error response has this shape:
  • error: the stable code. Program against this field, not against message or the HTTP status (we sometimes share a status across different causes).
  • message: short text to show a human or to log.
  • request_id: UUID of the request. If you report a problem, send us this value: with it we can pinpoint what happened in seconds.
Some responses (a failed gate) include extra fields:

Catalog

Denial reasons (primary_reason)

When the HTTP status is 402 or 422, the primary_reason field tells you why:

Best practices for handling errors

The message field may get rewritten for clarity. The error is the contract: it does not change.
It is what we ask for when you report a bug. Without that ID, finding the request takes us minutes to hours.
4xx errors (except 429) are on the client side, so retrying will not fix them.
For 429 and 5xx, wait 1s, 2s, 4s, 8s with a bit of randomness so retries do not sync up.