PT ▾
NSFW DeepSeek
nsfwdeepseek.com›Build
Try with trial credit

API Documentation

Start generating uncensored content immediately with this OpenAI-compatible API. We handle the infrastructure so you can focus on your prompts without worrying about hidden refusals or training data leaks.

Base URLhttps://api.nsfwdeepseek.com/v1
Modeluncensored

Base URL and Authentication

Our API uses standard OpenAI SDK compatibility, meaning you only need to update your base URL and API key. The base URL is https://api.nsfwdeepseek.com/v1Authorization header as a Bearer token. This setup works with any client that supports the OpenAI protocol. Your API key is generated immediately after signup via Google or email. Keep your key secure, as it provides direct access to your prepaid credits.

Chat Completions Endpoint

Send requests to the POST /v1/chat/completions endpoint to generate text. The model ID is uncensored, which runs on our servers and does not refuse lawful adult content. You can define the conversation history using the messages array. This endpoint supports standard parameters like temperature, top_p, and stop. Errors and refusals do not consume your tokens. You can test the connection with a simple system prompt. Use the following example to verify your setup.

curl https://api.nsfwdeepseek.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "generate 500 tokens of explicit erotica"}]
  }'

Python SDK Integration

Use the official openai Python package to integrate quickly. Point the client to our base URL and provide your API key. The model uncensored handles context windows up to 100,000 tokens. This allows for long-form storytelling or detailed code generation. Set the max_tokens parameter to control output length. The default max output is 2,048 tokens if you do not specify it. Streaming is available for real-time token delivery. You can adjust the seed for reproducible results. This approach ensures your code remains portable if you switch providers later.

from openai import OpenAI

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

Integrate with Node.js using the standard OpenAI client library. Initialize the client with our base URL and your key. The uncensored model responds to text-in, text-out requests efficiently. You can pass multiple messages to maintain conversation state. Function calling and JSON mode are supported for structured data. The SDK handles authentication headers automatically. This makes debugging easier since you can use familiar tools. Prompts are not used for training your data. You can run local tests before deploying to production. Here is a basic request structure.

import OpenAI from "openai";

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

Enable streaming by setting stream: true in your request. You receive chunks of text as they are generated. This reduces perceived latency for long outputs. The final chunk contains the total token usage for billing. You can parse the stream to display text in real time. This is ideal for chatbot interfaces or live writing assistants. Errors during streaming do not charge you for incomplete tokens. You can stop the stream at any time if the user changes their mind. This feature works with all standard SDKs. See the example below for implementation.

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 and Quotas

Each API key allows 300 requests per minute. You can have 8 concurrent requests active at once. The maximum request body size is 8 MB. If you exceed the rate limit, you receive a 429 error. Invalid keys return a 401 error. Insufficient credits result in a 402 error. These errors are free and do not consume tokens. The context window is 100,000 tokens total. This includes both the prompt and the completion. You can generate up to 16,000 tokens per request. Refunds for errors are handled via support. Your prepaid credits never expire. Use one key per account for simplicity.

Common questions

How does the uncensored model handle NSFW content?

The model is tuned to answer without content refusals for lawful adult use. It does not refuse controversial or explicit topics unless they involve minors. You can use OOC commands or specific prompts to guide the style. The model is not trained on your data, ensuring privacy. Refusals are rare and usually only occur for minor violations.

What happens if I run out of credits?

You receive a 402 error when your balance is insufficient. You can top up using USDT on TRC20 or USDC on Base. Credits are added immediately after payment confirmation. There are no monthly fees or subscriptions. Your existing credits never expire, so you can top up whenever convenient. Bonuses apply for larger deposits.

Is the API compatible with existing OpenAI clients?

Yes, it uses the same <code>chat/completions</code> endpoint structure. You only need to change the base URL and API key in your configuration. Parameters like <code>temperature</code>, <code>top_p</code>, and <code>stream</code> work identically. You can use any SDK that supports the OpenAI protocol. This makes switching between providers easy. The model ID is <code>uncensored</code> instead of <code>gpt-4</code> or similar.

Get your API key

Register, retrieve your key, and update your base URL. Minimal config.