Errors & rate limits
Standard HTTP status codes and an OpenAI-style error body, so existing error handling works as-is.
Status codes
| Code | Meaning | What to do |
|---|---|---|
400 | Bad request | Check the request body |
401 | Invalid / missing key | Check your API key |
402 | Out of credits | Top up in the dashboard |
429 | Rate limited | Back off and retry |
5xx | Upstream / server error | Retry; 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
429and5xx. - 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.