Errors & rate limits

Handle errors as structured JSON.

Non-2xx Public API responses use the same error envelope. Usage-aware endpoints expose standard rate-limit headers when quota data is available.

Error body

Use the error code and message for user-safe handling, retries and integration diagnostics.

{
  "error": {
    "code": "invalid_json",
    "message": "Request body must be valid JSON.",
    "details": null
  },
  "meta": {
    "request_id": "req_...",
    "api_version": "2026-07-10"
  }
}

Rate-limit headers

When quota data is available, responses include x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset. A 429 response may also include retry-after.

Public error codes

Public APIs use this stable code set: missing_api_key, invalid_api_key, scope_not_allowed, quota_exceeded, invalid_json, invalid_request, validation_error, method_not_allowed, unsupported_api_version, job_not_found, backlog_high, upstream_timeout, upstream_error, internal_error.