tr ▾
Get API key

Uncensored API Documentation and Quickstart

Connect your existing code to our uncensored LLM API using standard OpenAI-compatible endpoints. Get raw, unfiltered text generation with transparent, prepaid token billing and no account restrictions.

Base URL and Authentication Setup

Use our hosted endpoint to replace your current OpenAI base URL. The base URL is https://api.howtomakechatgptnsfw.com/v1. You authenticate by passing your API key in the Authorization header as a bearer token. Sign up via Google or email to receive a key instantly. No phone number is required. Each account holds one active key; generating a new one replaces the old. Keep your key secure. It grants full access to your prepaid credit. Errors and refusals do not consume tokens. This ensures you only pay for actual content generation. The model ID to send is always uncensored.

POST /v1/chat/completions: Request Format

Send a JSON payload to /v1/chat/completions to generate text. Include your API key and the uncensored model. The context window supports up to 100,000 tokens for prompt and completion combined. Max output is 16,000 tokens per request. If you omit max_tokens, it defaults to 2,048. This standard format works with any OpenAI-compatible client. You can adjust parameters like temperature or top_p. Streaming is supported via Server-Sent Events. Use the official SDKs for easier integration. Change the base URL in your client configuration. Point it to our endpoint. Your existing code works with minor tweaks.

curl https://api.howtomakechatgptnsfw.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Generate a simple hello world API endpoint"}]
  }'

Python SDK Integration

Install the official OpenAI Python package. Configure the client to use our base URL. Pass your API key as the api_key. Set the model to uncensored. This allows you to use familiar methods like chat.completions.create(). The client handles JSON serialization automatically. You can stream responses or get full text. Function calling and JSON mode are supported. Errors are raised as standard exceptions. Check the response for token usage. This approach minimizes boilerplate code. It integrates directly into your Python workflows. No custom parsing logic is needed. The SDK manages connection pooling efficiently.

from openai import OpenAI

client = OpenAI(base_url="https://api.howtomakechatgptnsfw.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 SDK Integration

Import the OpenAI Node package. Initialize the client with our base URL. Provide your API key for authentication. Set the model to uncensored. Use chat.completions.create() for synchronous calls. This works seamlessly with your existing Node.js applications. The library handles retries and timeouts. You can access usage statistics from the response object. JSON mode ensures structured outputs when needed. Function calling enables tool integration. The code remains clean and readable. This reduces development time significantly. You can switch back to OpenAI easily by changing the base URL. The interface stays consistent.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.howtomakechatgptnsfw.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 Responses and Token Usage

Enable streaming by setting stream: true. The API returns Server-Sent Events (SSE). Each chunk contains partial text and metadata. Token usage data appears in the last chunk. This allows real-time display of generated text. You can parse chunks as they arrive. This reduces perceived latency for users. The API sends usage stats at the end. This helps track prepaid credit consumption accurately. Errors during streaming still return proper HTTP codes. You can cancel streams early if needed. This feature is ideal for chat interfaces. It provides a smooth user experience. Monitor the final chunk for total token counts.

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)

Rate Limits, Context, and Errors

Each key supports 300 requests per minute. You can make 8 concurrent requests simultaneously. The request body limit is 8 MB. The context window is 100,000 tokens total. Errors return standard HTTP codes. A 401 indicates an invalid key. A 402 means your credit is exhausted. A 429 signals rate limit exceeded. Credit never expires. You can top up anytime using crypto. USDT (TRC20) or USDC (Base) are accepted. Bonuses apply for larger top-ups. Refunds are not issued for used credit. Mistakes like double charges are handled via support. This keeps your workflow predictable.

Frequently asked questions

How do I make chatgpt NSFW for my API requests?

Set the model parameter to <code>uncensored</code> in your requests. This model is tuned to answer without content refusals for lawful adult use. It is not GPT, Claude, or any other vendor's model. It runs on our own servers.

What happens if I get a 402 error?

A 402 error means your prepaid credit is exhausted. Errors and refusals do not consume tokens. You can top up using USDT or USDC. Credit never expires. You can continue making requests once you add funds.

Can I use this with existing OpenAI clients?

Yes, it is an OpenAI-compatible API. Change the base URL and API key in your client configuration. The endpoints and request formats match the OpenAI standard. You can use any SDK that supports the <code>/v1/chat/completions</code> endpoint.

Obtain your API key

Register, retrieve the key, and update your base URL. That is the complete configuration.

Get API key