Quickstart: Integrate the Uncensored LLM Gateway
Integrate our uncensored LLM gateway with a single configuration change. Update your base URL and API key, then use standard OpenAI-compatible SDKs to send text and receive responses.
https://api.openllmgateway.com/v1uncensored
Prerequisites
You need an API key to authenticate requests. Sign up on the Get API key page with just an email and password. No credit card is required to start; new accounts receive $0.50 in trial credit valid for 7 days. Claim this credit with one click on your API key page. Your API key is displayed immediately after signup.
Prerequisites: An active API key and a supported programming language environment. The gateway accepts standard OpenAI-compatible clients, so you likely already have the necessary tools installed.
Install the SDK
While you can use raw HTTP requests, using an SDK simplifies handling JSON payloads and streaming responses. We recommend using the official openai Python package or the openai Node.js package.
- Python:
pip install openai - Node.js:
npm install openai
These libraries handle authentication and request formatting automatically when configured correctly.
Configure Base URL
The core advantage of this llm gateway is drop-in compatibility. You do not need to change your code logic, only the configuration. Point your SDK client to our base URL and provide your API key.
Base URL: https://api.openllmgateway.com/v1
Model ID: uncensored
This endpoint supports the standard chat/completions format. By changing only these two values, your existing applications can route through our uncensored model without vendor lock-in.
Send a Chat Completion
Send a simple text prompt to receive a response. The model processes text input and returns text output. You can include conversation history in the messages array.
Ensure your request body stays under 8 MB. The model supports a context window of 100,000 tokens for both prompt and completion combined.
Here is a basic example using cURL:
curl https://api.openllmgateway.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."}]
}'Replace $OPENLLM_API_KEY with your actual key. The response will be returned in JSON format with the generated text in choices[0].message.content.
Enable Streaming
For real-time user experiences, enable streaming by setting stream: true in your request. The API returns a Server-Sent Events (SSE) stream of partial responses.
Streaming reduces perceived latency, as tokens are delivered as soon as they are generated. This is particularly useful for long-form content or interactive applications.
Example using the Python SDK:
from openai import OpenAI
client = OpenAI(base_url="https://api.openllmgateway.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)Iterate over the response object to access each chunk. The model continues generating until it completes or hits the token limit.
Use Tool Calling
The API supports function calling, allowing the model to decide when to invoke external tools based on the user's prompt. Define your functions in the tools parameter.
When the model determines a tool should be used, it returns a tool_calls array in the response. You execute the function and send the result back to the model in a subsequent message.
Example using the Node.js SDK:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openllmgateway.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);This enables complex agentic workflows without leaving the standard OpenAI-compatible interface.
Check Available Models
Query the GET /v1/models endpoint to verify available models and their metadata. This is useful for debugging or dynamically selecting models.
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)The response will list the uncensored model. Note that this gateway does not offer embeddings, image generation, or audio processing. It is strictly a text-based chat completion API.
Limits, Errors, and Context
Rate Limits: You are limited to 300 requests per minute per API key. If you exceed this, you will receive a 429 Too Many Requests error.
Authentication: A 401 Unauthorized error indicates an invalid or missing API key. Regenerate your key in the dashboard if necessary.
Billing: A 402 Payment Required error occurs when your prepaid credit is exhausted. Top-ups start at $20, with bonus credits for larger deposits.
Context Window: The model supports 100,000 tokens. Manage your prompt and completion lengths to stay within this limit. Requests exceeding 8 MB will be rejected.
Questions and answers
Is the uncensored model proprietary?
No, it is an open-weight model run on our own GPU servers. It is not GPT, Claude, Gemini, or any other vendor's model. It is tuned to answer without content refusals for lawful adult use.
What happens if I exceed the rate limit?
You will receive a 429 error. The limit is 300 requests per minute per API key. You can regenerate your key to get a fresh start, but the rate limit applies per key.
Do you use my prompts for training?
No. Prompts are not used for training. Your data privacy is maintained; we only store what is necessary to process your requests and bill your account.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.
Under the hood: specs
A quick checklist for developers: format, limits, features, billing.
| Spec | Value |
|---|---|
| Compatibility | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| API key | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.openllmgateway.com/v1 |
| Methods | POST /v1/chat/completions · GET /v1/models |
| Model ID | uncensored |
| Sampling parameters | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Context window | 100,000 tokens (prompt + completion together) |
| JSON mode | JSON object mode via response_format json_object |
| Tools / tool calls | Yes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool |
| Streaming | Yes — server-sent events; the last chunk carries token usage |
| Max output | prompt + completion fit within 100,000 tokens; max_tokens optional, no separate output cap |
| Request size | up to 8 MB per request |
| Headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Requests per minute | 300/min per key |
| Concurrency | up to 8 in parallel per key |
| Billing | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Bonus credit | +5% from $50, +10% from $100, +15% from $200 |
| Top-up | USDT (TRC20) or USDC (Base), any whole amount from $20 to $500 |
| Trial credit | $0.50 of credit valid 7 days, no card needed · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up |
| Price | input $0.15 / 1M tokens, output $0.50 / 1M tokens |
| Subscription | paid credit never expires, no subscription |
| Sign-in | sign in with Google or with e-mail + password |
| Content | adult content allowed; sexual content involving minors is refused |
| Key management | one active key per account; a new key replaces the old one |
Error reference
The type field is stable, the message is for humans. Errors cost nothing.
| HTTP | Type | What to do |
|---|---|---|
400 | bad_request | malformed request or too long for the context window |
401 | missing_key · invalid_key · key_revoked | no key, wrong key, or a key replaced by a newer one |
402 | no_credit | out of credit; add credit and retry |
403 | content_blocked | refused by the content policy |
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 | temporary overload, retry shortly |