EN ▾

Uncensored LLM API Quickstart

Integrate our uncensored LLM into your application with a standard OpenAI-compatible endpoint. This guide provides the exact endpoints, authentication, and streaming protocols you need to start sending requests immediately.

Base URL and Authentication

The base URL for all requests is https://api.storyunfiltered.com/v1. Append your API key to the Authorization header as a bearer token. Each account generates one active key; replacing it invalidates the previous one. No phone number is required for signup, and you can authenticate via Google or email credentials to retrieve your key instantly.

Example Header:

  • Authorization: Bearer YOUR_API_KEY

First Request

Send a POST request to /v1/chat/completions with the model ID uncensored. The API accepts standard parameters like temperature and stop. Responses are returned in JSON format, containing the generated text in the message.content field.

Example Request:

  • model: uncensored
  • messages: Array of user/assistant messages

Model Listing and Configuration

Retrieve available models by sending a GET request to /v1/models. The only available model is uncensored, an open-weight model tuned for unrestricted content. It supports function calling, JSON mode, and streaming via Server-Sent Events (SSE). Configure parameters like top_p and seed to control output diversity.

Example Response:

  • id: uncensored
  • object: model

Streaming Responses with SSE

Enable streaming by setting stream: true in your request. The API returns a stream of Server-Sent Events, where each chunk contains a partial response. The final chunk includes token usage statistics for billing purposes. This approach reduces perceived latency for long-form content generation.

Example Stream:

  • event: message
  • data: JSON chunk with delta content

Tool Calling and JSON Mode

Use the tools parameter to define function schemas for your application. The model will return structured tool calls when appropriate. For strict JSON output, set response_format to {"type": "json_object"}. This ensures the response is valid JSON without additional markdown formatting. Parameters like tool_choice allow you to force specific tool usage.

Example Tool Schema:

  • name: get_weather
  • description: Get current weather

Token Limits and Rate Limits

The context window supports up to 100,000 tokens for combined prompt and completion. The maximum output per request is 16,000 tokens, or 2,048 if max_tokens is unset. Rate limits are 300 requests per minute and 8 concurrent requests per key. Request bodies must not exceed 8 MB. Errors and refusals do not consume credit.

Example Limits:

  • max_tokens: 16,000
  • rate_limit: 300 RPM

cURL

curl https://api.storyunfiltered.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "What is the capital of France?"}]
  }'

Python

from openai import OpenAI

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

import OpenAI from "openai";

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

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)

FAQ

What is the primary keyword for this service?

The primary keyword is unfiltered story, reflecting our focus on raw, uncensored content. This ensures your applications receive text without arbitrary policy refusals for lawful adult or controversial topics.

How do I authenticate my requests?

Include your API key in the Authorization header as a bearer token. You can generate this key via Google or email signup on the Get API key page. The key is valid for all endpoints under the base URL.

What are the payment and billing details?

Pricing is $0.15 per 1M input tokens and $0.50 per 1M output tokens. Payments are accepted only via crypto (USDT on TRC20 or USDC on Base) in amounts from $20 to $500. Credit never expires and bonuses apply for larger top-ups.

Get your key now

Sign up, grab the key, update the base URL. That is all you need.

Try with trial credit