Connect in two minutes.

Create a key in the console, set the base URL, pick a model id from the Models page. Three settings, any client.

Base URL
https://api.uncensoredllm.ai/v1
Key
sk-ullm-live-…
Created in the console, shown once
Model
glm-5.3-uncensored
Any id from the Models page

OpenAI SDK, Python

main.py
1from openai import OpenAI
2
3client = OpenAI(base_url="https://api.uncensoredllm.ai/v1", api_key="sk-ullm-live-…")
4reply = client.chat.completions.create(
5 model="glm-5.3-uncensored",
6 messages=[{"role": "user", "content": "Hello"}],
7 stream=True,
8)
9for chunk in reply:
10 print(chunk.choices[0].delta.content or "", end="")

OpenAI SDK, Node

main.mjs
1import OpenAI from "openai";
2
3const client = new OpenAI({ baseURL: "https://api.uncensoredllm.ai/v1", apiKey: "sk-ullm-live-…" });
4const stream = await client.chat.completions.create({
5 model: "glm-5.3-uncensored",
6 messages: [{ role: "user", content: "Hello" }],
7 stream: true,
8});
9for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");

Anthropic SDK

Models that list the anthropic wire format answer the Messages API at the same host.

anthropic.py
1import anthropic
2
3client = anthropic.Anthropic(base_url="https://api.uncensoredllm.ai", api_key="sk-ullm-live-…")
4msg = client.messages.create(model="glm-5.3-uncensored", max_tokens=1024, messages=[{"role": "user", "content": "Hello"}])
5print(msg.content[0].text)

SillyTavern

API: Chat Completion. Source: Custom (OpenAI-compatible). Custom endpoint: https://api.uncensoredllm.ai/v1. API key: your key. Then Connect and pick the model from the list it loads.

Janitor AI and other proxies

API: Proxy. URL: https://api.uncensoredllm.ai/v1/chat/completions. Key: your key. Model: the id from the Models page. Any client that takes a custom OpenAI URL works the same way.

OpenCode and Cline

Add an OpenAI-compatible provider with base URL https://api.uncensoredllm.ai/v1 and your key, then name the model id. Coding builds such as the uncensored GLM flash code model are on the Models page.

Headers on every answer

x-uplink-request-id identifies the request for support, x-uplink-charge carries the settled charge, and streaming answers end with the usage block. A request that fails before the model answers is not charged.