Quickstart for OpenRouter users
Integrate our uncensored API using the OpenRouter-compatible standard. Replace your base URL and API key to start sending text requests with zero content refusals.
Installation & Setup
Our API follows the OpenAI-compatible standard, meaning you can use existing OpenRouter or OpenAI client libraries. The base URL is https://api.openrouterapi.cc/v1. You only need to configure two variables: base_url and api_key. No complex routing logic or model ID mapping is required. The model ID is simply uncensored. This setup removes the overhead of managing multiple endpoints while maintaining full compatibility with standard SDKs. If you are migrating from another provider, verify that your client library supports custom base URLs. Our service is independent and does not act as a reseller for OpenRouter, Anthropic, or other vendors.
Authentication
Authentication is handled via a Bearer token in the Authorization header. You generate this key on the Get API key page by signing in with Google or an email password. The key is displayed immediately after creation. Each account is limited to one active key; generating a new key replaces the previous one. There is no phone number requirement and no credit card needed for the initial trial. Keep your key secure, as it grants direct access to your prepaid credit. Errors in authentication are returned as standard HTTP 401 responses.
Basic Chat Completion
Send a standard chat/completions request with the model ID set to uncensored. The API accepts messages, temperature, top_p, and stop parameters. The context window is 64,000 tokens total, with a maximum output of 16,000 tokens per request (or 2,048 if max_tokens is unset). Pricing is transparent: $0.25 per 1M input tokens and $1.00 per 1M output tokens. Errors and refusals do not consume credit. Use this endpoint for direct text generation without content filters for lawful adult use.
Streaming Responses
Enable streaming by setting stream: true in your request. The API returns Server-Sent Events (SSE) for real-time token delivery. Token usage statistics are included only in the final chunk of the stream. This approach reduces perceived latency for long-form content generation. Ensure your client library handles SSE correctly. The streaming response maintains the same parameters as non-streaming requests, allowing you to toggle between modes without changing your integration logic.
Function Calling
Support for tool calling is built into the chat endpoint. Provide a tools array with function definitions and use tool_choice to control execution. The API returns structured tool calls that your application can execute. This feature is compatible with standard OpenAI SDKs. Note that we do not support embeddings, image generation, or fine-tuning, so function calling is limited to text-based tool invocation. Ensure your function definitions adhere to standard JSON schemas for best compatibility.
JSON Mode
Force structured output by setting response_format to {"type": "json_object"}. This ensures the model returns valid JSON, which is essential for programmatic integrations. Combined with function calling, this enables robust agent workflows. The uncensored model handles complex JSON structures reliably. If the output is invalid, the API may return an error or incomplete JSON. Always validate responses in your application logic. This feature works alongside temperature and top_p settings for fine-tuned control over output determinism.
cURL
curl https://api.openrouterapi.cc/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
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouterapi.cc/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.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouterapi.cc/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
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)Questions and answers
What happens if I exceed the rate limit?
Requests exceeding 300 per minute or 8 concurrent requests return a 429 status code. No credit is consumed for rate-limited requests. You must wait for the window to reset before sending more requests.
Is the trial credit refundable?
No, the $0.50 trial credit is valid for 7 days and cannot be refunded. It requires no card and is one per person. All prepaid credit never expires and is charged only for real token usage.
Do you store my prompts for training?
No, prompts are not used for training. An account requires only an email address. Your data remains private and is not used to improve other models.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.