Open account

API Documentation

Get started with our uncensored LLM API in minutes using standard OpenAI SDKs. This quickstart guide covers authentication, request formats, and streaming for immediate integration.

Authentication & Base URL

Use your API key with the base URL https://api.paidapi.cc/v1. Pass the key in the Authorization header as a Bearer token. This setup works with any OpenAI-compatible client library without extra configuration steps.

curl https://api.paidapi.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Set up a cron job to run every hour"}]
  }'

Keep your key secure. If you lose it, generate a new one from your dashboard. The old key stops working immediately.

First Request

Send a POST request to /v1/chat/completions with model "uncensored". Include your messages array in the body. The API returns text completions based on your prompt context.

from openai import OpenAI

client = OpenAI(base_url="https://api.paidapi.cc/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 simple call confirms your integration works. Check the response object for token usage and content.

Streaming Responses

Enable streaming by setting stream: true. The API sends partial chunks as they are generated. This reduces perceived latency for long outputs.

import OpenAI from "openai";

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

Handle each chunk individually. Aggregate them to build the final response. The last chunk contains the total token usage for the request.

Function Calling & Tools

Define tools in your request body. The model returns tool calls when appropriate. Parse the function name and arguments from the response.

Set tool_choice to control when the model uses tools. Use "auto" for automatic selection or specify a tool name. This feature works reliably with our uncensored model for complex tasks.

JSON Mode Configuration

Set response_format to {"type": "json_object"}. The model structures output as valid JSON. This simplifies parsing for programmatic workflows.

Ensure your prompt specifies the JSON schema clearly. The model adheres to the structure you define. Use this mode for data extraction or structured generation tasks.

Rate Limits & Errors

You get 300 requests per minute and 8 concurrent requests per key. Exceeding these limits returns a 429 error. Request bodies must stay under 8 MB. The context window is 100,000 tokens total.

Handle 401 errors by verifying your key. 402 errors mean you need more credit. Errors do not consume tokens. Keep your prepaid credit topped up to avoid interruptions.

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)

Frequently asked questions

What is the base URL for the API?

The base URL is HTTPS://api.paidapi.cc/v1. Use this endpoint for all requests. It is compatible with standard OpenAI SDKs.

How do I handle streaming responses?

Set the stream parameter to true in your request. The API sends data chunks as they are generated. This allows you to display output in real-time.

What happens if I hit the rate limit?

The API returns a 429 status code. You must wait until the rate limit resets. The limit is 300 requests per minute per key.

Your API key awaits

Sign up, grab the key, update your base URL. That’s all there is.