Errors & rate limits

Standard HTTP status codes and an OpenAI-style error body, so existing error handling works as-is.

Status codes

CodeMeaningWhat to do
400Bad requestCheck the request body
401Invalid / missing keyCheck your API key
402Out of creditsTop up in the dashboard
429Rate limitedBack off and retry
5xxUpstream / server errorRetry; we auto-failover where possible

Error body

{
  "error": {
    "type": "rate_limit_error",
    "message": "Rate limit exceeded. Retry after 2s.",
    "code": 429
  }
}

Rate limits

Limits scale with your plan tier (see pricing). The 429 response includes a Retry-After header.

Retries & failover

  • Use exponential backoff on 429 and 5xx.
  • On upstream provider errors we automatically fail over to the next cheapest healthy provider for that model.
  • Make requests idempotent where possible.
Still stuck? Contact support with the request id from the response headers.