OpenRouter error
OpenRouter 403 refusal: what it means and how to fix it
403 refusalRetry? Not statedLast verified 1 documented fix1 source
What it means
The provider reported a model refusal as an error rather than as output. error.message carries the provider's explanation when available. A refusal the model returns as completed output is not an error.
Causes
- Provider returned a refusal or usage-policy error envelope
How to fix it
- Fix 1.
Read error.message and metadata.provider_name for the provider's explanation; fallback to another model runs before output is returned when routing allows it.
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 refusal" mean?
The provider reported a model refusal as an error rather than as output. error.message carries the provider's explanation when available. A refusal the model returns as completed output is not an error.
How do I fix OpenRouter "403 refusal"?
Read error.message and metadata.provider_name for the provider's explanation; fallback to another model runs before output is returned when routing allows it.
Should I retry OpenRouter "403 refusal"?
Not stated. The official docs do not say whether this error is retryable.
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 1 source: 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.