EN ▾

Qwen Abliterated: Switch your client in three lines

Connect your existing OpenAI SDK client to our uncensored endpoint in under a minute. Replace the base URL and API key, then run your standard chat-completions calls without modification.

Authentication and Base URL

Our API follows the standard OpenAI format. You only need two things: the base URL and a valid API key. The base URL is https://api.qwenabliterated.top/v1. You do not need to import special libraries or change your code structure. Simply update your client configuration to point to this URL and provide the key you generated on the Get API key page. The system uses standard bearer token authentication, so any existing OpenAI-compatible SDK works out of the box.

curl https://api.qwenabliterated.top/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."}]
  }'

Keep your key secure. Unlike some providers, we do not track your identity beyond the email you use to sign up. Prompts are not used for training data. If you lose your key, generate a new one; it replaces the old active key immediately.

First Completion Request

Send your first message using the standard /v1/chat/completions endpoint. Pass the model ID as "uncensored". This model is open-weight, tuned for raw output, and does not apply the typical refusals found in general-purpose models. It handles adult, controversial, or technical topics without extra noise, provided the content does not involve minors.

from openai import OpenAI

client = OpenAI(base_url="https://api.qwenabliterated.top/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)

The response returns the generated text in the choices[0].message.content field. If the request fails due to an invalid key, you will receive a 401 error. If your prepaid credit is exhausted, you will receive a 402 error. Errors do not consume your token balance, so you can retry without penalty.

Streaming Responses

For real-time applications, enable streaming by setting stream: true. The API returns a Server-Sent Events (SSE) stream. Each chunk contains a partial token. The final chunk includes the total token usage for the request, allowing you to track costs accurately. This is ideal for chat interfaces or terminal-based tools where latency matters.

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)

Streaming does not change the model's behavior or context window. It only affects how the response is delivered. Ensure your client handles the stream correctly to avoid memory leaks. The uncensored model performs well under streaming, delivering coherent text without the typical mid-sentence cutoffs seen in filtered models.

JSON Mode

When you need structured data, use response_format: {"type": "json_object"}. The model is instructed to output valid JSON. This is useful for parsing configuration, generating code structures, or feeding data into downstream services. While not guaranteed to be perfect, the uncensored model handles complex structures better than standard models that might refuse to output raw JSON for safety reasons.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.qwenabliterated.top/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);

Always validate the output on your side. If the JSON is malformed, the API does not retry automatically. You can adjust the temperature to influence consistency. Lower temperatures yield more predictable JSON structures, while higher temperatures introduce more creativity but risk formatting errors.

Function Calling

Support for tools is built-in. Define your functions in the tools parameter and set tool_choice as needed. The model will return a tool_calls array if it decides to invoke a function. You must execute the function and pass the result back in a subsequent message with role: "tool". This follows the standard OpenAI tool-use pattern.

This feature works with any OpenAI-compatible SDK. The uncensored model handles tool definitions clearly, without refusing to output function names due to content filters. It is suitable for building agents or automating workflows that require external API calls.

Parameters, Limits, and Errors

The context window is 100,000 tokens, including both prompt and completion. There is no separate output cap (if max_tokens is unset, the response can run to the end of the window). You can control generation with temperature, top_p, stop, seed, and penalty parameters.

Rate limits are 300 requests per minute and 8 concurrent requests per key. If you exceed these, you will receive a 429 error. Request bodies must be under 8 MB. These limits ensure stable performance for high-volume users. There are no hidden restrictions on the type of content you can generate, except for the hard limit on sexual content involving minors.

API specifications

Before you integrate, here is exactly what you get with a key.

ItemValue
ProtocolOpenAI Chat Completions schema; official openai SDKs work unchanged
EndpointsPOST /v1/chat/completions · GET /v1/models
AuthenticationBearer token in the Authorization header
Model IDuncensored
Base URLhttps://api.qwenabliterated.top/v1
Max outputprompt + completion fit within 100,000 tokens; max_tokens optional, no separate output cap
Context window100,000 tokens, input and output combined
StreamingSupported (stream: true), usage included at the end
Sampling parameterstemperature, top_p, stop, seed and the two penalties are passed through
JSON modeJSON object mode via response_format json_object
Tools / tool callsSupported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages
Rate limit300 requests per minute per key
HeadersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Max body8 MB request body
Concurrency8 requests at the same time per key
Token prices$0.15 per 1M input tokens · $0.50 per 1M output tokens
Bonus credit+5% from $50, +10% from $100, +15% from $200
How you payprepaid credit, charged by real token usage; errors and refusals are free
Credit expirypaid credit never expires, no subscription
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
PaymentUSDT (TRC20) or USDC (Base), any whole amount from $20 to $500
Key managementone key per account, regenerate any time (the old one stops working)
Sign-inGoogle or e-mail and password
Contentadult content allowed; sexual content involving minors is refused

Error codes

Errors come back as JSON with a stable type; failed and refused requests are not billed.

CodeTypeMeaning
400bad_requestmalformed request or too long for the context window
401missing_key · invalid_key · key_revokedno key, wrong key, or a key replaced by a newer one
402no_creditbalance is empty — top up, requests resume at once
403content_blockedrefused by the content policy
404not_foundonly /v1/chat/completions and /v1/models exist
413request_too_largerequest body larger than 8 MB
429rate_limited · concurrencyslow down: rate or parallel limit reached
503upstream_busytemporary overload, retry shortly

Questions and answers

Is this the same as the official Qwen model?

No. We run an open-weight model tuned for uncensored output. It is not GPT, Claude, Gemini, Grok, or any other vendor's model. It is independent and serves our specific use case for raw content generation.

Can I use my existing OpenAI API key?

No. You must generate a key from our platform. The key format is standard, but it is tied to your prepaid credit account here, not to any other provider. Keys are shown immediately after signup.

What happens if I get a 402 error?

A 402 error means your prepaid credit is exhausted. Top up by crypto (USDT on TRC20, USDC on Base) to continue. Errors and refusals do not consume credit, so you only pay for successful token usage.

Your key is one form away

Create an account, copy the key, change the base URL. That is the whole setup.

Get API key