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-uncensoredAny id from the Models page
OpenAI SDK, Python
from openai import OpenAI client = OpenAI(base_url="https://api.uncensoredllm.ai/v1", api_key="sk-ullm-live-…")reply = client.chat.completions.create( model="glm-5.3-uncensored", messages=[{"role": "user", "content": "Hello"}], stream=True,)for chunk in reply: print(chunk.choices[0].delta.content or "", end="")OpenAI SDK, Node
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.uncensoredllm.ai/v1", apiKey: "sk-ullm-live-…" });const stream = await client.chat.completions.create({ model: "glm-5.3-uncensored", messages: [{ role: "user", content: "Hello" }], stream: true,});for 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.
import anthropic client = anthropic.Anthropic(base_url="https://api.uncensoredllm.ai", api_key="sk-ullm-live-…")msg = client.messages.create(model="glm-5.3-uncensored", max_tokens=1024, messages=[{"role": "user", "content": "Hello"}])print(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.