he ▾
Uncensored API. Zero fluff. Pure tokens.apinsfw.com
$0.15per 1M input tokens
100,000token context
Create key

IntroSetup guide

API documentation for uncensored models

Start using our uncensored LLM API immediately with standard OpenAI-compatible endpoints. You get direct text generation without content filters, transparent token billing, and a simple crypto-only payment flow.

Base URL and Authentication

Your API key authenticates every request to the base URL https://api.apinsfw.com/v1. Pass this key in the Authorization header using the Bearer scheme. The service expects standard OpenAI headers, so you can swap your existing client configuration without rewriting logic. A 402 response indicates your prepaid credit is exhausted, preventing further requests until you top up via USDT or USDC.

First Request

Send a POST request to /v1/chat/completions with the model ID set to uncensored. This endpoint handles text generation and supports up to 16,000 output tokens per request.

curl https://api.apinsfw.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List 5 endpoints for the current session"}]
  }'

The response returns a JSON object containing the generated text in choices[0].message.content. You are billed based on the actual tokens consumed, priced at $0.15 per million input tokens and $0.50 per million output tokens. Errors do not charge your credit.

Python SDK Integration

Use the official OpenAI Python library to interact with the API by pointing it to our base URL. Initialize the client with your API key and specify the uncensored model. This approach works seamlessly with existing codebases that already use OpenAI endpoints.

from openai import OpenAI

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

Configure the client to handle streaming or synchronous calls based on your application needs. The library handles JSON serialization and header management automatically, reducing boilerplate code in your project.

Node SDK Implementation

Initialize the Node.js OpenAI client with the custom base URL and your API key. Set the model to uncensored and send a chat completion request. This setup allows you to integrate uncensored generation into web servers or backend services efficiently.

import OpenAI from "openai";

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

The SDK manages the HTTP connection and response parsing. You can access the generated content from the response object and handle errors gracefully within your Node.js environment.

Streaming and Token Usage

Enable streaming by setting stream: true in your request. The API returns Server-Sent Events (SSE) for each token generated, allowing real-time display of output. The final chunk of the stream contains the complete token usage statistics for billing and monitoring.

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)

Parse the SSE data to update your UI incrementally. This method reduces perceived latency for users waiting for long responses, especially when generating detailed narratives or code.

Rate Limits and Constraints

Each API key is limited to 300 requests per minute and allows only 8 concurrent requests. The maximum request body size is 8 MB. If you exceed the rate limit, the API returns a 429 status code. You can request a new key via the dashboard, which replaces the existing one, or wait for the window to reset.

The context window supports 100,000 tokens total, including both prompt and completion. This allows for extensive conversation history or large document processing within a single session.

Common questions

How do I get an NSFW API key?

Sign up using your email or Google account on the Get API key page. You receive $0.50 in trial credit valid for 7 days to test the service.

What is the uncensored LLM model used?

We use a single open-weight model tuned for adult content and lack of refusals. It is not GPT, Claude, or any other vendor's model. The model ID is simply <code>uncensored</code>.

How does payment work for the NSFW LLM API?

We accept crypto only: USDT on TRC20 or USDC on Base. Top-ups range from $20 to $500, with bonus credits for larger amounts. Your credit never expires, and errors are free.

Generate your API key

Register, grab your key, update your base URL. That is all there is to it.

Create key