Uncensored GPT API: Switch your client in three lines
Connect your existing OpenAI-compatible client to our endpoint by updating three configuration lines. This quickstart guides you through authentication, basic requests, and streaming.
https://api.uncensoredgptapi.com/v1uncensored
Prerequisites and Base URL
To use this uncensored gpt api, you need an API key and a client that supports the OpenAI format. Visit the Get API key page to sign up with an email and password. Your key appears immediately; no card is required for the $0.50 trial credit. The base URL for all requests is https://api.uncensoredgptapi.com/v1. We serve a single uncensored model with the ID uncensored. This model runs on our own GPU servers and does not refuse lawful adult, fictional, or controversial topics. It is not GPT, Claude, or any other vendor model. We support text-in, text-out via chat completions. No embeddings, images, or audio are provided. Your context window is 100,000 tokens for the combined prompt and completion.
Authentication
Pass your API key in the Authorization header using the Bearer scheme. Each account has one active key at a time. If you regenerate the key, the old one is immediately revoked. This resets your rate limit counter because the new key starts with a fresh quota. You do not need to top up to make your first requests; the trial credit covers initial usage. Ensure your client sends the key with every request to the base URL. If authentication fails, you receive a 401 error.
Basic Chat Completion
Send a POST request to /v1/chat/completions. Set the model field to uncensored. Include your system and user messages in the messages array. The API returns a text response. This works with any standard OpenAI SDK. You can adjust parameters like temperature or max_tokens to control creativity and length. The model answers directly without content refusals for lawful topics. Requests are limited to 8 MB in body size. Keep your prompts concise to stay within the 100k token window.
Python SDK Integration
Use the official openai Python package. Configure the base URL to point to our endpoint. Set the API key from your environment variable. Create a client instance and call chat.completions.create. Pass the uncensored model ID. The library handles retries and JSON parsing automatically. This approach works for both synchronous and asynchronous workflows. Ensure you are using a recent version of the SDK that supports custom base URLs. The response object provides the generated text in choices[0].message.content.
Node.js SDK Usage
Install the openai package for Node.js. Initialize the client with your base URL and API key. Call the chat completions endpoint with the uncensored model. The SDK returns a promise that resolves to the response object. You can handle errors by catching exceptions from the client. This method is suitable for server-side applications or CLI tools. Remember that the model ID is strictly uncensored. Do not attempt to use other model IDs. The response structure matches the standard OpenAI format, making migration from other providers straightforward.
Streaming Responses
Enable streaming by setting stream: true in your request. The API returns a Server-Sent Events (SSE) stream. Each chunk contains a partial text delta. Accumulate these deltas to reconstruct the full response. Streaming reduces perceived latency for long outputs. You can stop the stream early if needed. The model supports tool calling alongside streaming if your client handles function execution correctly. Monitor the stream for completion or errors. This feature is ideal for chat interfaces or real-time applications where immediate feedback is required.
Rate Limits and Errors
Each key allows 300 requests per minute. If you exceed this, you receive a 429 error. Regenerating your key revokes the old one and gives you a fresh quota. The 401 error indicates an invalid or missing key. The 402 error means your prepaid credit is exhausted; top up via crypto (USDT or USDC). Credits never expire. Request bodies must be under 8 MB. If you send invalid JSON, you get a 400 error. The model blocks sexual content involving minors. All other lawful adult content is permitted. Check the response body for detailed error messages.
cURL
curl https://api.uncensoredgptapi.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."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredgptapi.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)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.uncensoredgptapi.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);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)API specifications
Use this table to decide whether the API fits your project before you buy credit.
| Item | Value |
|---|---|
| Protocol | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| Authentication | Bearer token in the Authorization header |
| Base URL | https://api.uncensoredgptapi.com/v1 |
| Methods | POST /v1/chat/completions · GET /v1/models |
| Model ID | uncensored |
| Max context | 100,000 tokens, input and output combined |
| JSON mode | JSON object mode via response_format json_object |
| Streaming | Supported (stream: true), usage included at the end |
| Completion length | up to 16,000 tokens per request (default 2,048) |
| Tools / tool calls | Supported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages |
| Sampling parameters | temperature, top_p, stop, seed and the two penalties are passed through |
| Request size | 8 MB request body |
| Rate limit | 300 requests per minute per key |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Concurrency | 8 requests at the same time per key |
| Billing | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Bonus credit | +5% on $50+, +10% on $100+ |
| Payment | crypto: USDT on TRON or USDC on Base, $10–$500, any whole sum |
| Free trial | $0.50 for 7 days, no card |
| Price | $0.25 per 1M input tokens · $1.00 per 1M output tokens |
| Subscription | paid credit never expires, no subscription |
| Keys | one key per account, regenerate any time (the old one stops working) |
| Content | adult content allowed; sexual content involving minors is refused |
| Account | sign in with Google or with e-mail + password |
Error reference
The type field is stable, the message is for humans. Errors cost nothing.
| 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 | no key, wrong key, or a key replaced by a newer one |
402 | no_credit | balance is empty — top up, requests resume at once |
403 | content_blocked | refused by the content policy |
404 | not_found | only /v1/chat/completions and /v1/models exist |
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 |
Questions and answers
Do I need a credit card to start?
No. You can sign up with just an email and password. You receive $0.50 of trial credit valid for 7 days. This allows you to test the API without linking a payment method. You can top up later using crypto (USDT or USDC).
What happens if I regenerate my API key?
Regenerating your key immediately revokes the previous one. The old key stops working instantly. Your rate limit counter resets because the new key starts with a fresh allocation of 300 requests per minute. This is useful if you suspect a key leak or want to reset your quota.
Is this the same as OpenAI's GPT models?
No. We serve a single open-weight uncensored model with the ID <code>uncensored</code>. It is not GPT, Claude, Gemini, or any other vendor model. It runs on our dedicated GPU servers. It is optimized for unrestricted text generation without content refusals for lawful topics. Check our pricing page for token costs.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.