Seeing The request is prohibited due to a violation of provider Terms Of Service usually means the request reached a policy or access-control decision, not that your OpenRouter credits are empty. The difficult part is that the same 403-shaped message can follow a blocked prompt, an account or region restriction, or an upstream provider refusal. Start by locating the rejection layer before changing keys or rewriting your entire integration.
The short answer: what this OpenRouter error actually tells you
OpenRouter’s Terms of Service, last updated August 31, 2026, say that each model has applicable provider terms, that the provider retains control over model access, and that OpenRouter may restrict access when it reasonably believes those terms were or may be violated. The error is therefore consistent with an upstream provider decision, an OpenRouter enforcement decision, or both; the text alone does not identify which one.
It is also not the same as every other API failure:
| Response | Usually points to | First check |
|---|---|---|
| 401 | Authentication | API key, header, key status |
| 402 | Credits or a spending limit | Account balance, key limit, usage |
| 403 provider-terms error | Policy, permission, region, guardrail, or provider access | Full JSON error and provider metadata |
| 429 | Rate limiting | Retry-After, request rate |
A 403 does not prove that the last prompt was illegal, and it does not prove that your whole OpenRouter account is permanently banned.
First locate the rejection layer
The useful question is not “How do I bypass the error?” It is “Which decision point rejected this request?” Record the model slug, selected provider, complete response body, timestamp, and request ID before testing anything else.
Signals that point upstream
A provider name, author banned message, provider-specific moderation text, or failure limited to one model/provider points toward an upstream access decision. OpenRouter’s terms state that each Model Provider retains sole control over access to its model and that users may need to contact the applicable provider when access is suspended.
A public GitHub issue shows why the raw fields matter: a Coarse PDF-review workflow received HTTP 403 through LiteLLM, but its provider_name field was null. The report included a $20 OpenRouter balance, so the evidence did not support an “insufficient credits” diagnosis.
Signals that point to account, workspace, or routing controls
If a neutral request fails across several unrelated providers, suspect an account, workspace, region, credential, or routing condition before blaming one prompt. OpenRouter’s terms allow it to suspend or limit API credentials when it reasonably believes that is necessary to protect the service or a third party. They also prohibit using VPNs or proxies to access restricted models.
OpenRouter’s provider directory exposes provider-level differences such as retention, training, BYOK availability, headquarters, and links to provider terms. Those fields help you choose an eligible route, but they are not proof that a particular account was blocked for a particular reason.
A safe diagnosis in 10 minutes
Use a small test matrix rather than repeatedly sending the rejected request.
- Save the original evidence. Copy the full JSON response, HTTP status, request ID, model slug, provider route, timestamp, and client or SDK version. Redact the key and private prompt content before sharing it.
- Send one neutral, minimal request. Use a short factual question with no files, tools, role-play, red-team language, or complex system prompt. Do not keep retrying the original payload.
- Pin one model and one provider. Disable automatic fallbacks temporarily so a successful response tells you which route worked.
- Check the Activity record. Look for the provider attempt, raw provider response, and any
provider_responsesor related metadata exposed by the dashboard or integration. - Repeat with a second eligible provider. Keep the neutral prompt and model capability as similar as practical. A one-provider failure is different from a cross-provider failure.
- Compare account scope. Test whether the failure affects one model, one provider family, one workspace, or every model available to the account. Do not create accounts to evade a restriction.
- Check configuration gates. Review workspace guardrails, provider ordering, data-retention or zero-data-retention requirements, data-region settings, API-key permissions, and IP allowlists.
- Stop on a policy match. If the original request clearly conflicts with the model’s terms, revise the use case instead of routing it through more providers.
The result is more useful than a guess:
| Test result | Working diagnosis | Next action |
|---|---|---|
| Only one provider rejects; another accepts the neutral test | Provider- or endpoint-specific restriction | Use an eligible provider for a compliant workload or contact the provider |
| Several providers under one account reject ordinary tests | Account, workspace, region, credential, or shared enforcement signal | Check settings and contact OpenRouter with evidence |
| Only the original prompt or attachment fails | Request content, context, file, or tool policy | Remove or revise the triggering material |
| Every request returns 401, 402, or 429 instead | Different failure class | Follow the authentication, billing, or rate-limit path |
What can trigger the message—and what remains unproven
The provider-terms message can be associated with more than a single sentence in a prompt. Possible factors include:
- Disallowed content or a long conversation containing disallowed context.
- System instructions, tool calls, file uploads, prompt-injection testing, or unauthorized red-team activity.
- A model restricted by geography, organization type, or provider eligibility rules.
- Account, workspace, payment, IP, or region signals used by an upstream provider’s risk controls.
- A mismatch between your data-region or retention requirements and the available endpoint.
- A provider key that lacks permission for the selected model when using BYOK.
OpenRouter’s terms confirm that providers may restrict models for certain countries or regions and that OpenRouter may request information supporting compliance. They do not publish a universal list of the exact signals that produce this error. Community reports are useful for spotting patterns, but they cannot prove that a particular payment card, VPN, country, or prompt caused an individual block.
“Your ‘blocking process’ is entirely opaque. To this day I don't think anyone who was blocked knows with 100% certainty why they were banned, they can only guess.” — u/pip25hu, r/openrouter
That uncertainty is why the raw provider response and a controlled comparison are more valuable than anecdotal explanations.
Fixes that are legitimate—and “fixes” that are not
Use the path that matches the test result:
- Content or context issue: remove the flagged material, shorten the conversation, eliminate unnecessary system instructions, and redesign the workflow for the provider’s acceptable-use rules.
- Model or provider restriction: choose a model and endpoint you are eligible to use. Check the provider’s linked terms from OpenRouter’s provider directory.
- Workspace or data-policy conflict: adjust a legitimate guardrail, retention, or region setting only if it matches your organization’s requirements. A stricter ZDR or region policy can remove otherwise valid endpoints.
- BYOK permission issue: verify that the provider key is enabled for the model, region, and account. BYOK changes which credential is used; it does not waive provider terms or make a restricted endpoint eligible.
- Account-level restriction: stop repeated retries, gather the evidence, and contact OpenRouter support. Ask which model/provider is restricted and what compliance information is required.
Changing providers can be a valid continuity measure when the new route is allowed for the same use case. It is not a permission to send prohibited content elsewhere. Do not use VPNs, proxies, new accounts, or repeated key creation to evade a restricted-model control; OpenRouter’s terms expressly prohibit circumventing those safeguards.
How to contact support without losing the useful evidence
Include a compact diagnostic packet:
- Account or workspace identifier, but never the API key.
- Exact model slug and intended provider route.
- UTC timestamp and request ID.
- HTTP status and complete sanitized error JSON.
- Whether a neutral request worked, and with which provider.
- Whether the failure affects one model, several providers, or the whole workspace.
- Relevant guardrail, region, ZDR, BYOK, or IP-allowlist settings.
- A short description of the use case, without pasting sensitive prompts unless support specifically requests them.
Ask whether the rejection came from the provider, OpenRouter account controls, or a routing/data-policy rule. If the response names an upstream provider, OpenRouter’s terms direct users to contact that provider to resolve model access. Do not assume that a new API key will remove an account-level restriction.
OpenRouter provider terms error FAQ
Is this an OpenRouter ban?
Not necessarily. It may be a single-provider or single-model refusal, an account or workspace restriction, a guardrail decision, or an upstream provider response. The error text alone cannot establish a permanent ban.
Is the provider or OpenRouter rejecting me?
Inspect the provider name, raw metadata, Activity record, and whether unrelated providers fail under the same neutral test. OpenRouter’s terms confirm that providers retain control over model access, while OpenRouter can also restrict service and credential access.
Can a harmless prompt still produce the error?
Yes. A harmless test can still fail when the restriction is attached to an account, region, credential, workspace, or provider eligibility condition rather than the current sentence. That is a diagnosis, not proof of which signal caused the restriction.
Will a new API key or VPN fix it?
There is no reliable reason to expect either to fix an account or provider restriction. VPN or proxy use can itself violate OpenRouter’s restricted-model rules. Check eligibility and contact support instead of trying to evade enforcement.
Can I be charged for a 403?
Do not infer billing from the status code alone. Check the request’s usage and Activity record. A rejected request should be reconciled from the actual record rather than assumed to be free or charged.
Should I use BYOK or another provider?
Use BYOK when you are authorized to use that provider and need control over provider credentials, limits, or costs. Use another provider only when it permits the same workload. Neither option overrides provider terms, regional restrictions, or your organization’s data policies.
The practical decision rule is simple: if one eligible provider fails, compare another compliant route; if several providers fail on a neutral request, stop retrying and investigate account, workspace, region, and credential conditions; if only the original content fails, revise the request rather than routing around the restriction.