Errors

HTTP status codes, error codes, and how to retry safely.

Updated May 18, 2026·4 min read

Error response shape

JSON
{
  "error": {
    "code": "invalid_request",
    "message": "Field 'price' must be a positive number.",
    "field": "price",
    "requestId": "req_01H9K3V5..."
  }
}

Common codes

FieldTypeDescription
400 invalid_requestclientBody or query is malformed. Inspect `field`.
401 invalid_keyauthBearer token missing, expired, or revoked.
403 insufficient_scopeauthToken lacks the required scope.
404 not_foundclientObject does not exist or your scope hides it.
409 conflictclientIdempotency-key reuse with different body, or version mismatch.
422 unprocessableclientBody is valid JSON but violates business rules.
429 rate_limitedclientSlow down. See Retry-After header.
500 internalserverOur problem. Retry with backoff. Include requestId when contacting support.

Retry policy

Retry idempotent (GET) and explicitly-keyed (POST/PATCH with Idempotency-Key) requests on 5xx and 429. Use exponential backoff: 1s, 2s, 4s, 8s, capped at 30s.

Do not retry 4xx
4xx errors mean the request itself is wrong. Retrying will fail identically. The exception is 429 — retry after the indicated delay.