EN ▾
Get API key

NSFW TTS API Quickstart

Get your NSFW TTS pipeline running immediately with this uncensored LLM API. Use the standard OpenAI-compatible endpoints to generate text without refusals, optimized for adult content workflows.

Base URLhttps://api.nsfwttsapi.com/v1

Base URL & Authentication

Point your client to https://api.nsfwttsapi.com/v1. You need an API key for every request. Sign up on the Get API key page with just an email and password. The key appears immediately. It is unique to your account and can be regenerated at any time, which invalidates the old key. There is no phone number or credit card required for the initial trial.

Pass the key in the Authorization header as a bearer token. If the key is missing or invalid, you get a 401 error. If you have no prepaid credit, you get a 402 error. This API serves one open-weight model tuned for adult content, so you do not need to manage model routing or vendor selection.

Chat Completions Endpoint

Send POST requests to /v1/chat/completions. The model ID is always uncensored. This is an open-weight model running on our own servers, not a proxy for GPT or Claude. It answers directly without content refusals for lawful adult material.

  • Input: Standard message array with role and content.
  • Output: Text response in message.content.
  • Price: $0.25 per 1M input tokens, $1.00 per 1M output tokens.

Use the raw HTTP endpoint if you prefer full control over the request structure. Use the following example to verify your key and model access.

curl https://api.nsfwttsapi.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 SDK

Use the official openai Python package. Set the base URL to our endpoint and provide your API key. This works seamlessly with the standard SDK because we follow the OpenAI chat-completions format exactly.

This is the fastest way to integrate the NSFW LLM API into your existing Python scripts. You do not need to parse raw JSON manually. The SDK handles the SSE streaming if you enable it, but for simple text generation, a standard call returns the full response at once.

  • Install via pip install openai.
  • Set base_url to https://api.nsfwttsapi.com/v1.
  • Set api_key to your generated key.

Use the following snippet to generate a response.

from openai import OpenAI

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

Use the openai Node.js package. Configure the client with our base URL and your API key. This allows you to use the same idiomatic code you would use for other OpenAI-compatible services.

Node developers can integrate the uncensored AI API directly into their Express or Fastify servers. The request structure is identical to the standard API. You send a messages array, and the model returns text. There is no routing noise, just direct access to the uncensored model.

  • Install via npm install openai.
  • Configure the client with baseURL and apiKey.
  • Call chat.completions.create().

Use the following example to send a request.

import OpenAI from "openai";

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

Set stream: true in your request. The API returns Server-Sent Events (SSE). Each chunk contains part of the generated text. This is critical for NSFW TTS pipelines where you need to feed text to a voice engine in real-time without waiting for the full response.

Streaming reduces perceived latency significantly. You can start processing the first few tokens while the model continues to generate. The API supports this natively. Use the following code to handle the stream correctly.

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)

Context Window, Limits & Errors

The context window is 100,000 tokens for prompt plus completion. This is large enough for most NSFW TTS workflows, but keep your system prompts concise. If you exceed the limit, the API returns an error.

Rate limits are 300 requests per minute per key. The request body limit is 8 MB. Monitor your usage to avoid throttling. Common errors include 401 (invalid key), 402 (no credit), and 429 (rate limit exceeded). Pay-as-you-go credit never expires. You can top up from $10 by crypto (USDT or USDC). Bonuses apply at $50 (+5%) and $100 (+10%). A new account gets $0.50 trial credit valid for 7 days. No card is needed for the trial. This uncensored API is reliable for adult content, provided you avoid sexual content involving minors, which is always blocked.

Under the hood: specs

The numbers below are the real limits of this API, not marketing. Compare them with what your app needs.

ItemValue
ProtocolOpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key
Base URLhttps://api.nsfwttsapi.com/v1
Model IDuncensored
EndpointsPOST /v1/chat/completions · GET /v1/models
API keyAuthorization: Bearer YOUR_KEY
Structured outputresponse_format: {"type": "json_object"}
SSE streamingYes — server-sent events; the last chunk carries token usage
Sampling parameterstemperature, top_p, stop, seed, presence_penalty, frequency_penalty
Max outputup to the rest of the 100,000-token window; max_tokens optional (no separate cap)
Max context100,000 tokens (prompt + completion together)
Function callingYes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool
Concurrencyup to 8 in parallel per key
HeadersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Max bodyup to 8 MB per request
Rate limit300/min per key
PaymentUSDT (TRC20) or USDC (Base), any whole amount from $10 to $500
Credit expiryno monthly fee; paid credit does not expire
Volume bonus+5% on $50+, +10% on $100+
Trial credit$0.50 for 7 days, no card · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up
Priceinput $0.25 / 1M tokens, output $1.00 / 1M tokens
How you payprepaid credit, charged by real token usage; errors and refusals are free
Key managementone active key per account; a new key replaces the old one
Contentuncensored for adults; the only hard rule: no sexual content involving minors
Accountsign in with Google or with e-mail + password

When a request fails

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

CodeTypeMeaning
400bad_requestinvalid JSON, empty messages, bad parameter, or prompt + max_tokens over the window — fix and resend
401missing_key · invalid_key · key_revokedcheck the Authorization header or use your current key
402no_creditbalance is empty — top up, requests resume at once
403content_blockedsexual content involving minors — refused, not billed
404not_foundunknown endpoint
413request_too_largerequest body larger than 8 MB
429rate_limited · concurrencyover 300/min or 8 parallel — back off and retry
503upstream_busymodel busy — retry in a few seconds

Questions and answers

Is this the official OpenAI API?

No. This is an independent service hosting an open-weight model. It uses the same JSON format and SDK compatibility as OpenAI, but the model is not GPT-4 or GPT-3.5. You get direct access to an uncensored model optimized for adult content.

Does the API generate audio files?

No. This is a text-only LLM API. It generates text responses. You need a separate TTS engine to convert the text output into audio. This API provides the text generation part of your NSFW TTS pipeline.

How do I pay for usage?

You prepay credit. You can buy credit with crypto (USDT or USDC). There are no monthly subscriptions. Credit never expires. You start with $0.50 trial credit when you sign up, which lasts 7 days.

Your key is one form away

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