EN ▾
Get API key

Uncensored local ai API Documentation

Connect your OpenAI-compatible client to the uncensored local AI API endpoint and start generating unrestricted text immediately. We provide a pure inference layer with no data retention and transparent usage-based pricing.

Base URL and Authentication

The uncensored LLM API lives at https://api.uncensoredlocalai.com/v1. Pass your key in the Authorization header using the Bearer scheme. Get your key instantly via Google or email on the signup page; no phone number required.

curl https://api.uncensoredlocalai.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Generate a 500 word essay on the history of cryptography"}]
  }'

Every account gets a single active key. If you generate a new one, the old key stops working immediately. There is no subscription, just prepaid credit that never expires.

POST /v1/chat/completions Endpoint

Send your prompts to the standard chat completions endpoint. The model id is simply "uncensored". It is an open-weight model tuned for zero refusals on lawful adult content, not a GPT or Claude clone.

from openai import OpenAI

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

Requests are processed server-side. You get text in and text out. No embeddings, no image generation, no audio. Just raw token generation via the standard OpenAI protocol.

Node.js

import OpenAI from "openai";

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

Common questions

Which payment methods do you accept?

Crypto only: USDT on TRC20 or USDC on Base, any whole amount from $20 to $500. Bonus credit applies from $50.

How does the context window work?

You have a 100,000 token context window for prompt and completion combined. If you do not set max_tokens, the model outputs 2,048 tokens by default.

What happens if I run out of credit?

Requests stop immediately. Errors like 402 (no credit) are free. Your prepaid credit never expires, so you can top up later with crypto bonuses.

Get your key in one step

Register, copy the token, update the base URL. That’s all.

Get API key