Uncensored AI Models: API Quickstart
Get started with our uncensored API in minutes. Use standard OpenAI-compatible SDKs to send requests to a single, direct endpoint with no aggregation layer.
- per 1M input tokens
- $0.25
- Output tokens / 1M
- $1.00
- token context
- 100,000
- trial credit
- $0.50
- requests per minute
- 300
Base URL & Authentication
Use the base URL https://api.uncensoredaimodels.com/v1 with your API key. Sign up on the Get API key page with just an email and password. The key is shown immediately after signup. No phone number or card is needed for the trial credit.
- Base URL:
https://api.uncensoredaimodels.com/v1 - Auth: Bearer token in the
Authorizationheader
Change the base_url in your SDK client to point to our endpoint. The model ID is always uncensored.
First Request
Send a standard chat completion request. The model is tuned to answer without content refusals for lawful adult use, though it blocks sexual content involving minors.
curl https://api.uncensoredaimodels.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."}]
}'You can check available models via GET /v1/models. The response confirms the single uncensored model is available for your integration.
Python SDK Integration
Use the official OpenAI Python package. Configure the client with our base URL and your key. This works for any standard chat completion call.
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredaimodels.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)Pass the message array with the model ID uncensored. The API supports standard parameters like temperature and max_tokens. No special SDK is required.
Node SDK Integration
Initialize the OpenAI Node client with our custom base URL. This allows you to use familiar JavaScript patterns for API calls.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.uncensoredaimodels.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);Set the apiKey and baseURL. Call chat.completions.create with the model set to uncensored. The response format matches the standard OpenAI schema.
Streaming Responses
Enable streaming by setting stream: true. The API returns Server-Sent Events (SSE). Parse the delta chunks to update your UI in real time.
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)Each chunk contains partial text. Handle the done event to finalize the response. This reduces perceived latency for long outputs.
Limits, Errors & Context
Your request body must be under 8 MB. You are limited to 300 requests per minute per key. If you exceed this, you receive a 429 error. Use 401 for invalid keys and 402 if prepaid credit is exhausted. The context window is 100,000 tokens total. Prompts are not used for training. Regenerate your key anytime from the dashboard.
API specifications
If your tool speaks the OpenAI API, these are the details that matter.
| Feature | Support |
|---|---|
| Compatibility | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| API key | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.uncensoredaimodels.com/v1 |
| Model | uncensored |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Other parameters | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Streaming | Supported (stream: true), usage included at the end |
| Function calling | Yes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool |
| Completion length | 16,000 tokens max; 2,048 if max_tokens is not set |
| Context window | 100,000 tokens (prompt + completion together) |
| Structured output | JSON object mode via response_format json_object |
| Requests per minute | 300 requests per minute per key |
| Parallel requests | 8 requests at the same time per key |
| Max body | 8 MB request body |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Subscription | paid credit never expires, no subscription |
| Volume bonus | +5% from $50, +10% from $100 |
| Free trial | $0.50 for 7 days, no card |
| Price | $0.25 per 1M input tokens · $1.00 per 1M output tokens |
| Top-up | crypto: USDT on TRON or USDC on Base, $10–$500, any whole sum |
| How you pay | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Content policy | adult content allowed; sexual content involving minors is refused |
| Keys | one active key per account; a new key replaces the old one |
| Account | Google or e-mail and password |
Error codes
Every error is JSON with a type you can switch on. You are never charged for an error.
| Status | Type | Reason |
|---|---|---|
400 | bad_request | invalid JSON, empty messages, bad parameter, or prompt + max_tokens over the window — fix and resend |
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 | sexual content involving minors — refused, not billed |
404 | not_found | unknown endpoint |
413 | request_too_large | request body larger than 8 MB |
429 | rate_limited · concurrency | over 300/min or 8 parallel — back off and retry |
503 | upstream_busy | model busy — retry in a few seconds |
Questions and answers
What is the context window size?
The context window is 100,000 tokens, counting both the prompt and the completion. This allows for substantial input and output in a single request.
Is the model specifically a coding LLM?
No. The model is an uncensored large language model tuned for broad use without refusals. It is not specifically designated as a 'coding LLM' in the fact sheet.
What content is blocked?
Sexual content involving minors is always blocked. All other lawful adult, fictional, or controversial topics are allowed without refusal.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.