OpenRouter error
OpenRouter 403 Budget limit exceeded: what it means and how to fix it
403 Budget limit exceededRetry? NoLast verified 2 documented fixes2 sources
What it means
A guardrail budget, a workspace budget, or the key's own limit is spent, so the request is rejected before it reaches a provider. error.metadata.limit_source is openrouter_guardrail_budget, openrouter_workspace_budget, or openrouter_key_limit, with scope, limit_usd, spend_usd and resets_at.
Causes
- Guardrail budget spent for the current window
- Workspace budget spent
- The key's own limit spent
How to fix it
- Fix 1.
Wait for the budget window to reset (see metadata.resets_at), or ask your org admin to raise the budget. There is no Retry-After header because the wait is usually hours or days.
- Fix 2.
Call GET /api/v1/key before a long task and watch effective_budget.remaining_usd.
More OpenRouter errors
All 32 OpenRouter errors400 invalid_requestRetry? Not stated400 invalid_promptRetry? Not stated400 context_length_exceededRetry? Not stated400 max_tokens_exceededRetry? Not stated400 token_limit_exceededRetry? Not stated400 string_too_longRetry? Not stated400 invalid_imageRetry? Not stated400 image_too_largeRetry? Not stated
HTTP 403 at other providers
Compare 403 across providers403 AccessDeniedExceptionRetry? NoAmazon Bedrock403 InvalidClientTokenIdRetry? Not statedAmazon Bedrock403 MPAgreementBeingCreatedRetry? YesAmazon Bedrock403 AWS Marketplace Agreement Failed within 15 minutesRetry? Not statedAmazon Bedrock403 AWS Marketplace Agreement Pending after 15 minutesRetry? YesAmazon Bedrock403 permission_errorRetry? Not statedAnthropic API403 Forbidden (network access denied)Retry? Not statedAzure OpenAI403 Forbidden (resource has been temporarily blocked)Retry? Not statedAzure OpenAI403 permission_deniedRetry? NoGemini API403 PERMISSION_DENIEDRetry? NoGemini API403 ForbiddenRetry? Not statedGroq API403 ForbiddenRetry? Not statedMistral API
FAQ
What does the OpenRouter error "403 Budget limit exceeded" mean?
A guardrail budget, a workspace budget, or the key's own limit is spent, so the request is rejected before it reaches a provider. error.metadata.limit_source is openrouter_guardrail_budget, openrouter_workspace_budget, or openrouter_key_limit, with scope, limit_usd, spend_usd and resets_at.
How do I fix OpenRouter "403 Budget limit exceeded"?
There are 2 documented fixes. Start with the first: Wait for the budget window to reset (see metadata.resets_at), or ask your org admin to raise the budget. There is no Retry-After header because the wait is usually hours or days.
Should I retry OpenRouter "403 Budget limit exceeded"?
No. The official docs treat this error as not retryable: fix the cause before sending the request again.
Which other AI APIs return HTTP 403?
Per their official error docs: Amazon Bedrock (403 AccessDeniedException; 403 InvalidClientTokenId; 403 MPAgreementBeingCreated; 403 AWS Marketplace Agreement Failed within 15 minutes; 403 AWS Marketplace Agreement Pending after 15 minutes), Anthropic API (403 permission_error), Azure OpenAI (403 Forbidden (network access denied); 403 Forbidden (resource has been temporarily blocked)), Gemini API (403 permission_denied; 403 PERMISSION_DENIED), Groq API (403 Forbidden), Mistral API (403 Forbidden), OpenAI API (403 Country, region, or territory not supported; 403 PermissionDeniedError), Vertex AI (403 PERMISSION_DENIED), xAI API (403 Forbidden).
Sources
Last verified against 2 sources: OpenRouter's official docs and official SDK repositories.
Newsletter
Know when the APIs change
One email per week. New model releases, API changes, what broke, and how developers are working around it.