OpenRouter Alternative: Switch your client in three lines
Drop your existing OpenAI-compatible client into our uncensored endpoint by updating the base URL and API key. No code changes required.
https://api.openrouteralternativeapi.com/v1uncensored
Base URL & Authentication
Our API follows the standard OpenAI-compatible structure. To switch providers, you only need to update your client configuration with our base URL and a valid API key. You can generate your key on the Get API key page after signing up with an email and password. No credit card is required for the trial.
Authentication is handled via the Authorization header. Ensure your key is sent as a Bearer token. The trial credit is $0.50 and lasts for 7 days. If you need more capacity, you can top up with crypto (USDT or USDC) starting at $10.
First Request
Send your first completion request using the standard POST /v1/chat/completions endpoint. Specify the model ID as uncensored to access our large language model tuned for minimal content refusals.
- Input tokens: $0.25 per 1M
- Output tokens: $1.00 per 1M
Remember that the context window is 64,000 tokens total. Requests exceeding the 8 MB body limit will be rejected.
curl https://api.openrouteralternativeapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'
Python SDK
Use the official openai Python SDK. Point it to our base URL and provide your API key. This works with any standard OpenAI-compatible client library.
The model ID is uncensored. This is an open-weight model running on our GPU servers, not a resell of GPT, Claude, or Gemini.
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouteralternativeapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Node SDK
For Node.js, use the official @anthropic-ai/sdk or openai package depending on your preference. Set the base URL to our endpoint. The model field should be set to uncensored. Ensure you are handling responses correctly for standard chat completions.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouteralternativeapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Streaming with SSE
We support Server-Sent Events (SSE) for streaming responses. Set stream: true in your request. The API will return a stream of deltas, allowing you to process tokens as they are generated. This is useful for real-time chat interfaces.
Ensure your client properly handles the stream termination and any intermediate errors.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Limits & Errors
Be aware of the following limits:
- Rate limit: 300 requests per minute per key.
- Request body: max 8 MB.
- Context window: 64,000 tokens.
Common errors include:
401: Invalid API key.402: Insufficient credit.429: Rate limit exceeded.
Content limit: Sexual content involving minors is always blocked, even in uncensored mode.
Specs at a glance
A quick checklist for developers: format, limits, features, billing.
| Spec | Value |
|---|---|
| Compatibility | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| Model | uncensored |
| Base URL | https://api.openrouteralternativeapi.com/v1 |
| Methods | POST /v1/chat/completions · GET /v1/models |
| Authentication | Bearer token in the Authorization header |
| Max output | up to 16,000 tokens per request (default 2,048) |
| Sampling parameters | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Function calling | Yes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool |
| Streaming | Yes — server-sent events; the last chunk carries token usage |
| Structured output | JSON object mode via response_format json_object |
| Max context | 64,000 tokens, input and output combined |
| Requests per minute | 300/min per key |
| Request size | up to 8 MB per request |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Concurrency | 8 requests at the same time per key |
| How you pay | prepaid credit, charged by real token usage; errors and refusals are free |
| Token prices | input $0.25 / 1M tokens, output $1.00 / 1M tokens |
| Top-up | crypto: USDT on TRON or USDC on Base, $10–$500, any whole sum |
| Free trial | $0.50 for 7 days, no card |
| Subscription | no monthly fee; paid credit does not expire |
| Volume bonus | +5% on $50+, +10% on $100+ |
| Keys | one key per account, regenerate any time (the old one stops working) |
| Account | Google or e-mail and password |
| Content | adult content allowed; sexual content involving minors is refused |
Errors and what to do
Errors come back as JSON with a stable type; failed and refused requests are not billed.
| Status | Type | Reason |
|---|---|---|
400 | bad_request | malformed request or too long for the context window |
401 | missing_key · invalid_key · key_revoked | check the Authorization header or use your current key |
402 | no_credit | balance is empty — top up, requests resume at once |
403 | content_blocked | refused by the content policy |
404 | not_found | only /v1/chat/completions and /v1/models exist |
413 | request_too_large | request body larger than 8 MB |
429 | rate_limited · concurrency | slow down: rate or parallel limit reached |
503 | upstream_busy | model busy — retry in a few seconds |
Questions and answers
Is this a resell of GPT or Claude?
No. We run our own open-weight model on our GPU servers. It is tuned for minimal refusals but is distinct from GPT, Claude, Gemini, or other vendor models.
Do you use prompts for training?
No. Your prompts are not used for training our model. We only require an email and password for your account.
Can I get a refund?
We do not explicitly state refund policies in this guide, but prepaid credit does not expire. Check the pricing page for top-up details and bonus structures.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.