EN ▾
Create key

API Documentation

Drop-in compatibility for your existing stack. Change the base URL and key, keep the code.

Quickstart: Change base_url

Start by updating two variables. Point your client to https://api.proxyllm.cc/v1 and use your generated key. The endpoint mimics the OpenAI chat completions structure exactly. You do not need new libraries or complex adapters. Just swap the endpoint and the token, then run your existing logic.

curl https://api.proxyllm.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List five common CSS layout techniques for modern web design."}]
  }'

Authentication and Keys

Generate a key via the dashboard and pass it in the Authorization header. Each account holds one active key; creating a new one revokes the old. Use Bearer your_api_key for standard requests. The system rejects invalid tokens immediately.

Chat Completions Endpoint

Send POST requests to /v1/chat/completions with a messages array. The model ID is uncensored. It handles text generation without standard refusals for lawful adult content. Set max_tokens to control output length; the default is 2,048 tokens.

from openai import OpenAI

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

Streaming and SSE

Enable streaming by setting stream: true in your request payload. The API returns Server-Sent Events (SSE) for real-time token delivery. Token usage statistics appear in the final chunk of the stream. This reduces perceived latency for large responses.

import OpenAI from "openai";

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

Function Calling and JSON Mode

Define tools in the tools parameter for structured outputs. The model supports both function calling and strict JSON formatting via response_format. Use json_object to force valid JSON structures. Temperature and top_p parameters allow fine-tuning creativity.

Rate Limits and Errors

Expect 401 for invalid keys and 402 when credit runs out. The limit is 300 requests per minute per key. Concurrent requests cap at eight simultaneously. The context window spans 100,000 tokens total. Handle 429 errors by implementing exponential backoff in your client logic.

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)
01

Common questions

What is the context window size for this LLM proxy?

The total context window is 100,000 tokens, combining both prompt and completion. You can request up to 16,000 output tokens per call. If you omit the max_tokens parameter, the system defaults to 2,048 tokens.

Does the API support function calling?

Yes, the model supports tool use and function calling. You can also enforce strict JSON output using the response_format parameter. This ensures structured data for programmatic integration.

How do I handle streaming responses?

Set the stream parameter to true in your request body. The API returns Server-Sent Events (SSE) containing partial text chunks. Token usage details appear in the final chunk of the stream.

Your API key is one form away

Register, retrieve your key, and update your endpoint base URL. Simple integration.