Uncensored LLM API Quickstart | Uncensored LLM Hub
Integrate our uncensored llm into your application using the standard OpenAI-compatible interface. This guide covers authentication, request formats, streaming, and tool calling for immediate deployment.
Base URL & Authentication
Use the base URL https://api.uncensoredllmhub.com/v1 for all requests. Authentication requires an API key passed in the Authorization header as a Bearer token. You receive this key immediately upon signup via the Get API key page. The key is tied to a single account; you can regenerate it at any time, which invalidates the previous key. No phone number or credit card is required to start.
POST /v1/chat/completions
Send your prompt to the chat endpoint. The model id is always uncensored. The API accepts standard chat messages and returns text. It does not support images, audio, or embeddings. Ensure your request body stays under 8 MB. The following example demonstrates a basic text request using cURL:
curl https://api.uncensoredllmhub.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."}]
}'This returns a completion for your prompt. You can parse the response to extract the generated text for your application logic.
Python SDK Integration
Use the official openai Python package for easier integration. Configure the client with your base URL and API key. This approach simplifies JSON handling and type inference. The following example shows how to initialize the client and send a message:
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredllmhub.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)Replace YOUR_API_KEY with your actual key. The response object provides direct access to the content, making it easy to integrate into Python workflows.
Node SDK Integration
For JavaScript environments, use the OpenAI Node.js SDK. Set the base URL and API key in the configuration object. This allows you to use standard promise-based syntax. The following example demonstrates a simple chat completion:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.uncensoredllmhub.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);Ensure you handle the asynchronous response appropriately. This method works well for server-side applications or Node.js environments where you need to process the output immediately.
Streaming Responses (SSE)
Enable streaming by setting stream: true in your request. The API returns Server-Sent Events (SSE) instead of a single JSON object. This allows you to display tokens as they are generated, improving perceived latency. The following example shows how to handle the stream in Python:
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)Parse each chunk to extract the delta content. This is useful for chat interfaces where users expect real-time typing indicators. The stream ends when the final chunk is received.
Rate Limits, Errors & Context
You are limited to 300 requests per minute per key. If you exceed this, you receive a 429 error. Other common errors include 401 (invalid key) and 402 (insufficient credit). The context window is 100,000 tokens for prompt plus completion combined. If your input is too large, the model may truncate or reject the request. Always monitor your usage via the dashboard to avoid service interruptions.
Technical specifications
One table with every limit, feature and price that applies to your key.
| Spec | Value |
|---|---|
| API format | OpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Model | uncensored |
| Base URL | https://api.uncensoredllmhub.com/v1 |
| Authentication | Authorization: Bearer YOUR_KEY |
| Function calling | Supported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages |
| Max context | 100,000 tokens (prompt + completion together) |
| Sampling parameters | temperature, top_p, stop, seed and the two penalties are passed through |
| Structured output | response_format: {"type": "json_object"} |
| Completion length | up to the rest of the 100,000-token window; max_tokens optional (no separate cap) |
| Streaming | Yes — server-sent events; the last chunk carries token usage |
| Requests per minute | 300 requests per minute per key |
| Parallel requests | 8 requests at the same time per key |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Max body | 8 MB request body |
| Payment | USDT (TRC20) or USDC (Base), any whole amount from $10 to $500 |
| Free trial | $0.50 for 7 days, no card · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up |
| Subscription | no monthly fee; paid credit does not expire |
| How you pay | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Token prices | input $0.25 / 1M tokens, output $1.00 / 1M tokens |
| Bonus credit | +5% on $50+, +10% on $100+ |
| Account | Google or e-mail and password |
| Keys | one active key per account; a new key replaces the old one |
| Content policy | uncensored for adults; the only hard rule: no sexual content involving minors |
Errors and what to do
The type field is stable, the message is for humans. Errors cost nothing.
| Code | Type | Meaning |
|---|---|---|
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 | unknown endpoint |
413 | request_too_large | body over 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 an uncensored coding llm?
Yes, the model is tuned to answer without content refusals, including for controversial or adult topics, while still blocking sexual content involving minors. It handles code generation and technical queries effectively without standard corporate filters.
What happens if my API key is compromised?
You can regenerate your key immediately from the dashboard. This action revokes the old key, so any applications using it will stop working until updated. Each account allows only one active key at a time.
Do you support tool/function calling?
Yes, the endpoint supports tool definitions and function calling. You can define tools in your request, and the model will return structured JSON output that you can parse to execute specific functions in your application.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.
Get API keyhttps://api.uncensoredllmhub.com/v1