NSFW Video API Documentation
Get your uncensored LLM API key and start sending text requests to our NSFW Video API in minutes. This guide covers the OpenAI-compatible endpoints, streaming, and tool calling you need for adult content pipelines.
https://api.nsfwvideoapi.com/v1uncensoredBase URL and Authentication
The NSFW Video API uses standard OpenAI-compatible endpoints. Your base URL is https://api.nsfwvideoapi.com/v1. To authenticate, include your API key in the Authorization header as a Bearer token. You can generate a key on the Get API key page using just an email and password. No phone number or credit card is required to start. The key is shown immediately after signup. If you need a fresh key, you can regenerate it at any time, which instantly revokes the old one. This keeps your integration simple and secure.
First Request
Send a POST request to /v1/chat/completions with the model ID uncensored. This model is tuned for adult content and does not refuse lawful topics. The following example demonstrates a basic text completion using cURL. Replace YOUR_API_KEY with your actual key.
curl https://api.nsfwvideoapi.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."}]
}'
The response returns the generated text in choices[0].message.content. You can also check available models using GET /v1/models. This confirms the API is responding correctly before you integrate deeper into your pipeline.
Python SDK Integration
Use the official OpenAI Python SDK to interact with the NSFW Video API. Set the base URL to our endpoint and provide your API key. The following code snippet shows how to initialize the client and send a prompt. This approach works with any standard OpenAI-compatible client library.
from openai import OpenAI
client = OpenAI(base_url="https://api.nsfwvideoapi.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)
Ensure you handle the response object to extract the generated content. This method is ideal for backend services where you need structured data processing. The model ID remains uncensored for all requests.
Node.js SDK Usage
For Node.js environments, use the openai npm package. Configure the client with the correct base URL and your API key. The code below demonstrates a simple chat completion request. This is useful for serverless functions or web servers handling NSFW text generation tasks.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nsfwvideoapi.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 response structure matches the OpenAI format. You can parse the content and pass it to your application logic. Remember that the model does not perform image or video generation; it is a pure text API.
Streaming with SSE
Enable streaming by setting stream: true in your request. The API returns Server-Sent Events (SSE) for real-time token delivery. This reduces perceived latency for users. The following example shows how to handle streaming responses in Node.js.
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)
Process each chunk as it arrives. This is critical for chat interfaces where users expect immediate feedback. The streaming works with all OpenAI-compatible SDKs that support SSE. Note that streaming does not affect pricing or token counting.
Rate Limits, Errors, and Context
You are limited to 300 requests per minute per API key. The maximum request body size is 8 MB. Common errors include 401 for invalid keys and 402 if your prepaid credit is exhausted. Upgrade your credit from the dashboard to continue. The context window is 64,000 tokens for prompt and completion combined. If you exceed the limit, the API returns a 429 error. Plan your token usage carefully to avoid interruptions.
API specifications
Before you integrate, here is exactly what you get with a key.
| Parameter | Details |
|---|---|
| API format | OpenAI Chat Completions schema; official openai SDKs work unchanged |
| Model | uncensored |
| Authentication | Bearer token in the Authorization header |
| Base URL | https://api.nsfwvideoapi.com/v1 |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Streaming | Supported (stream: true), usage included at the end |
| Structured output | response_format: {"type": "json_object"} |
| Tools / tool calls | Supported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages |
| Max context | 64,000 tokens, input and output combined |
| Sampling parameters | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Max output | 16,000 tokens max; 2,048 if max_tokens is not set |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Parallel requests | 8 requests at the same time per key |
| Requests per minute | 300/min per key |
| Request size | up to 8 MB per request |
| Top-up | USDT (TRC20) or USDC (Base), any whole amount from $10 to $500 |
| Free trial | $0.50 for 7 days, no card |
| Bonus credit | +5% on $50+, +10% on $100+ |
| Price | input $0.25 / 1M tokens, output $1.00 / 1M tokens |
| How you pay | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Credit expiry | no monthly fee; paid credit does not expire |
| Key management | one key per account, regenerate any time (the old one stops working) |
| Content policy | uncensored for adults; the only hard rule: no sexual content involving minors |
| Sign-in | Google or e-mail and password |
Error codes
Errors come back as JSON with a stable type; failed and refused requests are not billed.
| HTTP | Type | What to do |
|---|---|---|
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 | sexual content involving minors — refused, not billed |
404 | not_found | unknown endpoint |
413 | request_too_large | request body larger than 8 MB |
429 | rate_limited · concurrency | slow down: rate or parallel limit reached |
503 | upstream_busy | model busy — retry in a few seconds |
Questions and answers
What is the context window size?
The context window is 64,000 tokens, covering both the input prompt and the output completion. This allows for long conversations or large document processing without truncation.
Do prompts get used for training?
No, your prompts are not used for training. The NSFW Video API respects your privacy by keeping your data separate from model improvement datasets.
What content is blocked?
The only hard content limit is sexual content involving minors. All other lawful adult, fictional, or controversial topics are permitted without refusal.
Your key is one form away
Create an account, copy the key, change the base URL. That is the whole setup.