Get API key

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.

SpecValue
CompatibilityOpenAI Chat Completions schema; official openai SDKs work unchanged
Modeluncensored
Base URLhttps://api.openrouteralternativeapi.com/v1
MethodsPOST /v1/chat/completions · GET /v1/models
AuthenticationBearer token in the Authorization header
Max outputup to 16,000 tokens per request (default 2,048)
Sampling parameterstemperature, top_p, stop, seed, presence_penalty, frequency_penalty
Function callingYes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool
StreamingYes — server-sent events; the last chunk carries token usage
Structured outputJSON object mode via response_format json_object
Max context64,000 tokens, input and output combined
Requests per minute300/min per key
Request sizeup to 8 MB per request
Response headersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Concurrency8 requests at the same time per key
How you payprepaid credit, charged by real token usage; errors and refusals are free
Token pricesinput $0.25 / 1M tokens, output $1.00 / 1M tokens
Top-upcrypto: USDT on TRON or USDC on Base, $10–$500, any whole sum
Free trial$0.50 for 7 days, no card
Subscriptionno monthly fee; paid credit does not expire
Volume bonus+5% on $50+, +10% on $100+
Keysone key per account, regenerate any time (the old one stops working)
AccountGoogle or e-mail and password
Contentadult 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.

StatusTypeReason
400bad_requestmalformed request or too long for the context window
401missing_key · invalid_key · key_revokedcheck the Authorization header or use your current key
402no_creditbalance is empty — top up, requests resume at once
403content_blockedrefused by the content policy
404not_foundonly /v1/chat/completions and /v1/models exist
413request_too_largerequest body larger than 8 MB
429rate_limited · concurrencyslow down: rate or parallel limit reached
503upstream_busymodel 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.