EN ▾

API for uncensored video pipelines

$0.15 per 1M input tokens$0.50 Output tokens / 1M100,000 token context$0.50 trial credit300 requests per minute

API Documentation for Uncensored Video Tools

Get started with the uncensored video API in minutes. This guide covers authentication, request formats, streaming, and pricing for building text-driven video pipelines.

Base URL and Authentication

The API uses the standard OpenAI-compatible base URL. Send requests to https://api.uncensoredvideo.top/v1. Authentication relies on a single API key generated during signup. Include it in the Authorization header as a Bearer token. New accounts receive an immediate key via Google login or email registration. No phone number is required. The key remains active until manually replaced; prepaid credit does not expire.

First Request

Send a POST request to /v1/chat/completions with the model ID uncensored. The model accepts text input and returns text output. It does not generate images or video directly. Use this endpoint to draft prompts, extract metadata, or write scripts for your video pipeline.

curl https://api.uncensoredvideo.top/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."}]
  }'

This request sends a simple prompt to the model. The response contains the generated text, which you can then pass to your video generation tool. The model is tuned to avoid refusals for lawful adult content, ensuring your creative workflow remains uninterrupted.

Python SDK Integration

Use the official OpenAI Python SDK. Set the base_url and api_key to match the uncensored video API endpoints. This allows you to use familiar methods like client.chat.completions.create. The SDK handles JSON serialization automatically. Configure parameters like temperature and top_p to control creativity. The model ID is always uncensored. You can stream responses or request JSON mode for structured data extraction.

from openai import OpenAI

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

This code snippet demonstrates a standard completion call. It works with any OpenAI-compatible client. Adjust the max_tokens parameter to control output length. The default max output is 2,048 tokens unless specified otherwise.

Node.js SDK Usage

Install the OpenAI Node.js package. Initialize the client with the base URL https://api.uncensoredvideo.top/v1 and your API key. Use the same chat.completions endpoint as in Python. The Node SDK supports async/await patterns for clean integration. You can send multiple messages in a conversation history to maintain context. The model supports function calling, allowing you to define tools for metadata extraction.

import OpenAI from "openai";

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

This example shows how to make a request. The response object contains the generated content. You can parse the output for use in your video production workflow. Ensure you handle errors appropriately, as network issues or invalid keys may occur.

Streaming Responses

Enable streaming by setting stream: true in your request. The API returns a Server-Sent Events (SSE) stream. Each chunk contains partial text. The final chunk includes usage statistics, such as token counts. Streaming reduces perceived latency for long scripts or detailed metadata. It allows your application to display progress in real time. This is ideal for interactive tools or live transcription services.

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)

This stream processes chunks as they arrive. The usage data in the last chunk helps you track costs accurately. Errors during streaming may interrupt the flow, so implement retry logic if needed. The model supports up to 100,000 tokens in the context window.

Limits, Errors, and Context

The context window is 100,000 tokens total. Max output per request is 32,000 tokens. You can make 300 requests per minute and 8 concurrent requests per key. Request bodies must be under 8 MB. Errors include 401 for invalid keys and 429 for rate limits. 402 indicates insufficient credit. Prepaid credit is charged only for real token usage. Errors and refusals are free. Credit never expires. No card is needed for the $0.50 trial. Claim this credit with one click on your API key page. Top up with USDT or USDC.

Capabilities and limits

Everything the endpoint can and cannot do, in one place — check it before you top up.

SpecValue
CompatibilityOpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key
Model IDuncensored
Base URLhttps://api.uncensoredvideo.top/v1
API keyBearer token in the Authorization header
MethodsPOST /v1/chat/completions · GET /v1/models
Max outputup to the rest of the 100,000-token window; max_tokens optional (no separate cap)
Other parameterstemperature, top_p, stop, seed, presence_penalty, frequency_penalty
JSON moderesponse_format: {"type": "json_object"}
Context window100,000 tokens, input and output combined
SSE streamingSupported (stream: true), usage included at the end
Tools / tool callsSupported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages
Parallel requestsup to 8 in parallel per key
Request size8 MB request body
Rate limit300/min per key
HeadersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Top-upcrypto: USDT on TRON or USDC on Base, $20–$500, any whole sum
Free trial$0.50 of credit valid 7 days, no card needed · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up
Credit expirypaid credit never expires, no subscription
Volume bonus+5% on $50+, +10% on $100+, +15% on $200+
Token pricesinput $0.15 / 1M tokens, output $0.50 / 1M tokens
How you payprepaid credit, charged by real token usage; errors and refusals are free
Accountsign in with Google or with e-mail + password
Contentadult content allowed; sexual content involving minors is refused
Key managementone key per account, regenerate any time (the old one stops working)

Error codes

Every error is JSON with a type you can switch on. You are never charged for an error.

StatusTypeReason
400bad_requestmalformed request or too long for the context window
401missing_key · invalid_key · key_revokedno key, wrong key, or a key replaced by a newer one
402no_creditout of credit; add credit and retry
403content_blockedrefused by the content policy
404not_foundunknown endpoint
413request_too_largerequest body larger than 8 MB
429rate_limited · concurrencyslow down: rate or parallel limit reached
503upstream_busymodel busy — retry in a few seconds

Questions and answers

What is the context window size?

The context window is 100,000 tokens, including both prompt and completion. The maximum output per request is 32,000 tokens. If max_tokens is not set, the limit is 2,048 tokens.

How do I handle rate limits?

You are limited to 300 requests per minute and 8 concurrent requests per key. If you exceed these limits, the API returns a 429 status code. Implement exponential backoff in your client to handle retries gracefully.

What happens if I run out of credit?

Requests fail when credit is insufficient. The API returns a 402 status code. Prepaid credit is charged only for actual token usage. Errors and refusals do not consume credit. Credit never expires, so you can top up whenever needed.

Your key is one form away

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

Get API key