Errors
Routify uses OpenAI-compatible error envelopes for drop-in compatibility.
Format
{
"error": {
"message": "Insufficient balance. Top up at https://routify.bytedance.city/dashboard/billing",
"type": "insufficient_balance",
"code": "balance_exhausted",
"param": null
}
}HTTP status codes
| Status | Type | When |
|---|---|---|
| 400 | invalid_request_error | Malformed body, unknown model |
| 401 | authentication_error | Missing / invalid API key |
| 402 | insufficient_balance | Account credit exhausted |
| 403 | permission_denied | Tier doesn't allow this model |
| 404 | not_found | Endpoint or resource missing |
| 408 | timeout | Upstream provider timeout |
| 422 | unprocessable | Body parsable but logically invalid |
| 429 | rate_limit | RPM / tokens-per-day exceeded |
| 500 | internal_error | Routify bug — should be reported |
| 502 | upstream_error | All channels failed |
| 503 | service_unavailable | Routify maintenance |
Retry policy
- 5xx / 429: retry with exponential backoff (1s, 2s, 4s, 8s, max 5 attempts)
- 4xx (except 429): do not retry — fix the request
- Connection errors: retry as 5xx
The official OpenAI SDKs handle this automatically.
Specific errors
balance_exhausted
Account credit ≤ $0. Top up at billing page.
model_not_allowed
Your tier doesn't include the model. Free tier excludes Claude, o1, GPT-4o.
rate_limit
Hit RPM ceiling. Response includes Retry-After header.
all_channels_failed
All healthy upstream channels for this model returned errors. Try again, or fall back to a different model. We're auto-disabling the failed channels and working on it.