Developer guide

Errors your code can reason about.

Every API error has an HTTP status plus a stable code, human-readable message, and optional details object.

Error shape

Example
{
  "error": {
    "code": "invalid_parameter",
    "message": "limit must be between 1 and 100.",
    "details": {
      "parameter": "limit"
    }
  }
}

Status codes

HTTP Use
401 · invalid_api_key Bearer key is missing, malformed, unknown, or revoked.
403 · subscription_inactive Bearer key is valid, but its account has no current API entitlement.
404 · not_found Endpoint or stable resource ID was not found.
405 · method_not_allowed HTTP method is not supported for this route.
422 · invalid_parameter A documented query parameter has an invalid value.
422 · unknown_parameter A query parameter name is outside the documented contract.
429 · rate_limit Per-minute request allowance is exhausted.
429 · monthly_quota Billing-period request allowance is exhausted.
503 · service_unavailable A required service such as the normalized store is unavailable.

Retry policy

  • Do not retry 401, 403, 404, 405, or 422 without changing credentials, billing state, or the request.
  • Retry 429 only after the applicable reset, with jitter.
  • Retry 503 with bounded exponential backoff.
  • Log the response request ID when present so support can trace a failure.