EN ▾
Get your key

apillmsourceopen.comQuickstart

Integrate the uncensored chat-completions API

Drop our uncensored AI API into your app with one base URL. Get text responses without refusals using standard OpenAI compatible protocols.

Get your key

Base URL and Authentication Setup

The API lives at https://api.apillmsourceopen.com/v1. Point your SDK there and supply your key. You get one active key per account; generating a new one invalidates the previous key immediately. No phone number is required for signup. We support Google login or a standard email and password flow. Your prompts never leave our servers for training purposes. This setup works with any client that accepts the OpenAI V1 format.

Sending Your First Completion Request

Post messages to the chat endpoint to get immediate text back. The model id is always "uncensored". It handles adult themes and controversial topics without blocking lawful content. You do not need to specify a model version. The system processes your input and returns a response. Use the standard format for messages. This approach ensures compatibility with existing tooling.

Configuring Streaming and Token Limits

Stream responses by setting stream: true. You receive chunks as they generate. The final chunk contains the full token usage statistics. Context window support reaches 100,000 tokens for prompt and completion combined. Max output per request is 16,000 tokens. If you omit max_tokens, the default is 2,048 tokens. Streaming reduces perceived latency for long answers. It also allows progressive rendering in your interface.

Enabling JSON Mode and Function Calling

Use response_format: {"type": "json_object"} for strict JSON output. Function calling works via the standard tools parameter. The model supports tool_choice for explicit instruction. You can set temperature, top_p, and seed for control. Frequency and presence penalties are available too. Stop sequences work as expected. This flexibility allows complex integrations. Structured data extraction becomes reliable.

Handling Errors and Refusals Gracefully

Standard HTTP codes indicate status. A 401 means your API key is invalid or expired. A 402 error signals insufficient prepaid credit. A 429 response indicates you hit the rate limit. Errors are free; you do not pay for failed requests. The only hard refusal is for sexual content involving minors. Everything else passes through. Check your balance regularly. Retry logic should handle 429s with exponential backoff.

Understanding Rate Limits and Quotas

You get 300 requests per minute per key. Only 8 requests run simultaneously per key. The request body maxes out at 8 MB. One active key per account ensures clear usage tracking. A new key replaces the old one instantly. Prepaid credit charges by real token usage. No monthly fees apply. Credit never expires. This structure suits bursty workloads. Predictable costs help manage budgets. Crypto top-ups add bonus credit automatically.

cURL

curl https://api.apillmsourceopen.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Generate a 256 byte binary blob"}]
  }'

Python

from openai import OpenAI

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

Frequently asked questions

Is this an open source LLM API?

Yes, we serve an open-weight model tuned for uncensored output. It runs on our servers but follows the standard open interface. You get consistent behavior without vendor lock-in. The model is not GPT, Claude, or any other major vendor model.

How does the uncensored AI model handle NSFW content?

The model does not refuse lawful adult, fictional, or controversial topics. It only blocks sexual content involving minors. This makes it ideal for NSFW LLM API use cases. You retain full control over your content generation pipeline.

What happens if I exceed my rate limit?

You receive a 429 status code immediately. No tokens are consumed for these rejected requests. You can retry after the window resets. Consider reducing parallel requests to 8 per key. Streaming helps manage throughput effectively.

Get your API key

Sign up, copy the key, point to our base URL. Done.

Get your keyView API reference