Integrate the uncensored API in minutes
Drop our uncensored API into your existing stack with zero configuration changes. Get a working integration in minutes using standard OpenAI-compatible endpoints.
Prerequisites and base URL setup
Start by generating your API key on the dashboard. You can sign in with Google or use an email and password; no phone number is required. Your key appears instantly. You only need one active key per account. If you generate a new key, the previous one is revoked immediately. We do not offer multiple keys for a single account.
Configure your environment variable for the base URL. Point your client to our specific endpoint. This ensures all requests go to our uncensored model. We do not route traffic through other providers. The base URL is essential for compatibility. You will use the standard OPENAI_BASE_URL variable.
The model ID you must specify is uncensored. This is a distinct open-weight model. It is not GPT, Claude, or any other vendor. It runs on our own servers. This guarantees consistent behavior. You do not need to change your SDK version. Any standard OpenAI-compatible client works.
curl https://api.unrestrictedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top five Rust crates for async networking."}]
}'
Your first request with the 'uncensored' model
Send a standard chat completion request to test connectivity. Use the POST /v1/chat/completions endpoint. Pass your API key in the Authorization header. Set the model to uncensored. Include a simple system prompt and a user message. The response will return text content. There are no hidden content refusals for lawful adult topics. Minors in sexual content remain the only hard limit.
You can adjust parameters like temperature and top_p. These control creativity and randomness. The model responds quickly. You do not need to wait for long processing times. Errors are returned as standard JSON. You can handle them in your code. This is a pure text API. No images or audio are generated. Focus on the text output. It works for coding and reasoning tasks. You get exactly what you ask for.
Streaming responses via SSE
Enable streaming by setting stream to true. This sends chunks of text as they are generated. You receive events via Server-Sent Events. Each chunk contains a partial delta. The final chunk includes token usage. This is crucial for billing accuracy. You can update your UI in real time. Users see tokens appearing instantly. This reduces perceived latency. The model supports this natively. You do not need a proxy. Handle the done event to close the stream. It marks the end of the response. Token counts are in the last chunk. Use this to track your credit usage. Errors can also be streamed. Handle them gracefully in your loop.
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)
Function calling and JSON mode
Use tools for structured data extraction. Define your functions in the request. The model returns arguments in JSON format. You can also force strict JSON output. Set response_format to {"type": "json_object"}. This ensures valid JSON every time. It is ideal for parsing responses. Use tool_choice to control behavior. Force a specific function or let the model decide. This works with standard tool schemas. You do not need custom parsers. The output is consistent. Errors are rare if the schema is clear. Validate your JSON on the client side. This adds an extra layer of safety.
from openai import OpenAI
client = OpenAI(base_url="https://api.unrestrictedllmonline.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)
Handling limits and errors
You have a limit of 300 requests per minute. This is per API key. You can run 8 concurrent requests. The request body must be under 8 MB. Exceeding these limits returns a 429 error. Retry with exponential backoff. A 401 error means your key is invalid. Check your credentials. A 402 error indicates insufficient credit. Top up via crypto to continue. The context window is 100,000 tokens. This includes prompt and completion. Max output is 16,000 tokens. Set max_tokens to avoid truncation. Errors do not consume credit. You only pay for successful tokens. This is transparent. No hidden fees apply. Refusals are free. Your credit balance updates accurately.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.unrestrictedllmonline.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);
Understanding token pricing in code
Input tokens cost $0.15 per 1 million. Output tokens cost $0.50 per 1 million. You pay only for what you use. Credit is prepaid. It never expires. Errors are free. This means failed requests do not charge you. You can estimate costs in your code. Multiply token counts by the rate. Track usage per request. This helps budget accurately. We do not charge for API calls. We charge for tokens. The final chunk shows usage. Use this to update your local balance. No subscription fees apply. No monthly costs. You control your spending. Top up when needed. Crypto payments are instant. USDT on TRC20 or USDC on Base. Start with a small amount. The trial gives you $0.50. Use it to test. It lasts 7 days. Just sign up and go.
Common questions
What is the base URL for the unrestricted LLM online API?
Use HTTPS://api.unrestrictedllmonline.com/v1 as your base URL. This works with any OpenAI-compatible SDK. Change the base_url variable in your client. Your API key authenticates requests. The model ID is always uncensored. This ensures you reach our uncensored model. No routing or proxies are involved. Requests go directly to our servers. This reduces latency. You get consistent performance. The URL is stable. Use it for all endpoints.
How do I handle rate limits and errors in my integration?
You are limited to 300 requests per minute. Concurrent requests are capped at 8. If you exceed this, you get a 429 error. Implement exponential backoff in your code. A 401 error means your key is invalid. Check your credentials and regenerate if needed. A 402 error indicates low credit. Top up via crypto to continue. Errors do not consume token credits. You only pay for successful token generation. This makes budgeting predictable. Handle errors gracefully in your loop.
Does the uncensored model support streaming and function calling?
Yes, the API supports streaming via Server-Sent Events. You receive chunks of text in real time. The final chunk includes token usage data. Function calling is also supported. Define tools in your request. The model returns structured arguments. You can force JSON mode for strict output. This works with standard tool schemas. Use these features for dynamic applications. Streaming reduces perceived latency. Function calling enables complex workflows. Both are fully compatible with OpenAI SDKs.
Get your API key instantly
Register, retrieve the key, update your endpoint. Complete integration.