Build
Errors
Find your error code below for its HTTP status, example message and next steps.
Auto Free refusals
429 free_quota_exceeded includes Retry-After. 503 auto_unresolvable means Auto Free is temporarily unavailable. Unsupported features return 400 invalid_request. None of these errors triggers paid fallback.
See the Auto Free API guide for setup, account limits, and the separate chat trial.
| Code | HTTP | Retry as-is |
|---|---|---|
| trial_exhausted | 402 | No |
| trial_temporarily_unavailable | 503 | No |
| request_in_progress | 409 | No |
| insufficient_credits | 402 | No |
| invalid_api_key | 401 | No |
| unknown_model | 404 | No |
| model_not_allowed | 403 | No |
| model_alias_unavailable | 503 | Yes |
| model_unavailable | 503 | Yes |
| no_available_route | 503 | Yes |
| upstream_capacity_exceeded | 503 | Yes |
| upstream_rate_limited | 503 | Yes |
| auto_unresolvable | 503 | Yes |
| free_quota_exceeded | 429 | Yes |
| rate_limited | 429 | Yes |
| usage_limit_exceeded | 429 | Yes |
| spend_limit_exceeded | 403 | No |
| guardrail_blocked | 403 | No |
| context_too_long | 400 | No |
| provider_policy_rejected | 400 | No |
| upstream_response_invalid | 503 | Yes |
| upstream_error | 502 | Yes |
| image_request_failed | 502 | No |
| images_unavailable | 503 | Yes |
| upstream_capacity_unavailable | 503 | Yes |
| admission_unconfirmed | 502 | Yes |
| request_timeout | 504 | Yes |
| account_suspended | 403 | No |
| invalid_request | 400 | No |
| payload_too_large | 413 | No |
| overloaded | 503 | Yes |
Retry as-is means the identical request may succeed if sent again. Everything else needs a change first: credits, a key, a model ID, a smaller body.
Free allowance used
402 · trial_exhaustedFix: Add credits, then choose paid chat before sending again.
A chat request is settling
409 · request_in_progressFix: Wait for the previous request to settle before sending another.
Insufficient credits
402 · insufficient_creditsFix: Add credits. The message says which case you hit: a pre-request refusal names your available balance and the worst-case estimate it could not cover (nothing was sent or charged); a mid-stream stop names what the delivered tokens cost. The X-Minirouter-Balance-Usd header on the 402 reports your available balance.
Invalid API key
401 · invalid_api_keyFix: Create or rotate a key in the dashboard. The old key works for 24 hours after rotation. Revoke a key to disable it immediately.
Unknown model
404 · unknown_modelFix: Copy an exact model ID from the catalog or use the suggestion in the error.
Model not allowed on this key
403 · model_not_allowedFix: Pick a model the key allows, or widen the key or guardrail allowlist. The account-wide list on /dashboard/routing also applies.
No available provider route
503 · no_available_routeFix: Review model and provider restrictions on your account, API key, and request, or check model availability before retrying.
Provider at capacity
503 · upstream_capacity_exceededFix: Wait before retrying, or choose another model allowed by your account settings. This is provider capacity, not your account rate limit.
Provider rate limit
503 · upstream_rate_limitedFix: Wait before retrying, or choose another model allowed by your account settings. Raising your MiniRouter key limit will not change the provider limit.
No model available for auto
503 · auto_unresolvableFix: Auto walks an ordered list of models and every one was unavailable, not allowed on your key, or unable to price this request. The page lists the current candidates; pick one by name to bypass auto.
Free allowance exhausted
429 · free_quota_exceededFix: Wait until the quota resets. All keys on this account share the free allowance; creating another key does not reset it.
Rate limited
429 · rate_limitedFix: Wait for Retry-After. Raise key limits in the dashboard. Per-address limits cannot be raised: use a valid key after invalid-key requests, or cache the model list after too many catalog reads.
Usage limit reached
429 · usage_limit_exceededFix: Raise the named account or API-key rate limit (requests per minute, tokens per minute or concurrent requests), or wait a minute and retry. In-progress requests count toward the limit. Spend caps return spend_limit_exceeded instead.
Spend limit reached
403 · spend_limit_exceededFix: Raise the named limit, move the key to a guardrail with a larger budget, or wait for the window to reset. In-progress requests count toward the limit. Retrying before the reset returns the same error.
Blocked by a guardrail
403 · guardrail_blockedFix: Remove the flagged content, change the filter from block to redact, or unassign the guardrail from this key. The message names the detector, never the text it matched.
Context too long
400 · context_too_longFix: Shorten the prompt or pick a longer-context model.
Provider policy rejection
400 · provider_policy_rejectedFix: Review the request against the provider policy. If the rejection appears incorrect, contact support with the request ID.
Invalid upstream response
503 · upstream_response_invalidFix: Retry, or choose another model. If it repeats, contact support with the request ID; the reason names the failed check.
Upstream error
502 · upstream_errorFix: Retry the request. If output had barely started (under 50 tokens) the charge is written off automatically.
Image request failed
502 · image_request_failedFix: Check GET /v1/images/status?request_id=YOUR_REQUEST_ID with the same account. Final charges cannot exceed the original hold; unresolved holds release at the cost deadline. We do not automatically regenerate images.
Request could not start
502 · admission_unconfirmedFix: Try again. Nothing was charged for this request. Any temporary hold is released automatically within 20 minutes.
Request timed out
504 · request_timeoutFix: For long generations, use streaming and a realistic output limit. A timed-out request may still have run upstream; do not assume an automatic retry is free or that provider fallback was available.
Account suspended
403 · account_suspendedFix: Contact support. Suspension follows a chargeback, a sanctions-screening hit, or an acceptable-use breach.
Invalid request
400 · invalid_requestFix: Check the field named in the message. Remove unsupported fields or simplify an oversized or deeply nested schema. If your client generates the request, contact support with the model, client version, request ID and field path. For base-URL errors, use https://api.minirouter.sh/v1 or https://api.minirouter.sh without a /chat/completions suffix.
Request body too large
413 · payload_too_largeFix: Reduce the request size by shortening the conversation history or removing large attachments.
Gateway overloaded
503 · overloadedFix: Retry after Retry-After (5 seconds). This is the edge protecting itself, not a limit on your key: it refuses before placing any hold, so nothing is reserved or charged. If it persists, check the status page.