API
Documentation
Works out of the box. No rain dance. OpenAI-compatible Chat Completions. Get a key in the site cabinet or the Telegram bot: /api or the API button.
https://uncensored.monster/v1z-ai/glm-5.3-flash-uncensoredHow to start
- Open the cabinet or @uncensobot. Key, balance, and payment are shared.
- Buy a pack ($1–$100, Crypto or xRocket USDT). No balance → 402.
- API button — the secret is shown once. Strip spaces and a trailing newline from Telegram.
- Three client fields: Base URL with
/v1, the key, the exact model id. New chat after changing the host. - Ping: “Reply with one word: ready”. If you get a reply, the client is hitting us.
More: bot → key → API.
What the API does
GET /v1/models— catalog; sendAuthorization: Bearer. No key → 401. There is no public catalog without auth.POST /v1/chat/completions— text, images (image_url), stream.max_tokensandmax_completion_tokensare accepted. The gateway forwardstools,tool_choice, andparallel_tool_calls. If the provider cannot run tools, you get the upstream error.- The model id must be one from the list below. Empty
modeluses GLM. The Telegram picker does not change the API. - In the client set context window
1048576and output budget16384(or your ownmax_tokens/max_completion_tokens). That caps one completion, not the whole thread. - System prompt, history, and tools share that window.
- Request body up to 32 MiB. Larger → 413.
- Before the call we reserve estimated input plus the output budget (
max_tokens/max_completion_tokens, otherwise 16384) at the model rate. If the reserve does not fit the available balance — 402. After the response we charge actual usage and release the rest. A stuck reserve expires after 20 minutes. - Anthropic Messages, OpenAI Responses, embeddings, and FIM are not served.
- Do not retry if a stream already started: that is a second billed request. For support send the time and
X-Request-ID, not the key. - Do not append
/chat/completionsto the Base URL — the client does that.
Cache is part of input: if usage reports cached_tokens, they bill at the model’s cache price. Cards: home. Menu labels depend on the client version; we did not certify every agent scenario in every IDE.
-
z-ai/glm-5.3-flash-uncensoredDefault. Chat, writing, code. -
abliteration-ai/abliterated-model-large-v2Complex text tasks. -
qwen/qwen3.8-27b-uncensoredNo mandatory reasoning. -
qwen/qwen3.8-27b-uncensored:thinkingReasoning, multi-step tasks. -
abliteration-ai/abliterated-modelShort and everyday text. -
Gemma-4-31B-Gembrain-uncensored-hereticConversation, writing, analysis. -
z-ai/glm-5.3-flash-cybersecurityCybersecurity, reasoning on. -
google/gemma-4-26b-a4b-it-cybersecurityCybersecurity, Gemma 26B.
ZCode
- In the bot open API, create a key with a clear name, e.g.
zcode. - Install or update ZCode from zcode.z.ai.
- Settings → Model Settings. Or tap the model name under the input → Manage Models.
- At the bottom of the list — Add Provider. Any name, e.g.
uncensored. - OpenAI Base URL:
https://uncensored.monster/v1. Leave Anthropic Base URL empty. - Format: Chat completions. Paste the key. If you see “API Key Required”, turn it on. Save.
- Add Model, ID exactly
z-ai/glm-5.3-flash-uncensored. Display name is yours. - Advanced for this model: Context Window
1048576, Max output tokens16384. - Enable the toggle on both the provider and the model. In chat pick a model from this group, not the built-in Z.ai GLM.
- New task, a short ping such as “Reply with one word: ready”.
Do not paste the key into the Z.ai / BigModel card — those hit /paas/v4, which will not work. Do not add a [1m] suffix to the model id.
Cursor
- Settings → Models → API Keys / OpenAI compatible (wording depends on version).
- Override OpenAI Base URL:
https://uncensored.monster/v1. Leave Anthropic Base URL empty. - Key from the bot. Model:
z-ai/glm-5.3-flash-uncensored, no[1m]suffix. - New agent chat after changing the URL. Old threads may keep the previous host.
Cursor Tab and bundled Cursor models follow Cursor’s terms, not our key. Details: custom Base URL in Cursor. From Cursor’s terminal you can also run Aider — that is a separate client.
Roo Code (VS Code)
- Roo panel → API Provider → OpenAI Compatible.
- Base URL, key, model id as above. Context Window
1048576, Max Output Tokens16384. - Turn on Image Support if you need pictures. Do not enable Computer Use as a model capability — vision does not add it.
- Price fields in Roo are for the extension UI. Billing is always our pricing (GLM input $0.39 / output $1.58 / cache $0.16 per 1M).
- Start with one small task and one file. Roo uses native
tools.
Cline (VS Code)
- Cline → Settings → API Provider: OpenAI Compatible.
- Base URL, key, model id. If Plan and Act have separate providers, fill both the same way.
- Model Configuration: Max Output Tokens
16384, Context Window1048576, Image Support if needed. - Short request. System instructions, history, and tools share that window.
Kilo Code (VS Code)
- Settings → Providers → Custom provider. Any id, e.g.
uncensored. - Provider API: OpenAI Compatible. Base URL, key, model id. Save.
- In
kilo.jsoncfor the model:limit.context = 1048576,limit.output = 16384. Pick this provider in the model list. - Chat Completions only. GLM accepts images; do not pick Anthropic in Kilo.
Continue (VS Code / JetBrains)
VS Code: Continue extension → local config.yaml. JetBrains: Settings → Plugins → Continue, same model file. If a config already exists, merge only the models entry.
models:
- name: GLM 5.3 Flash Uncensored
provider: openai
model: z-ai/glm-5.3-flash-uncensored
apiBase: https://uncensored.monster/v1
apiKey: YOUR_KEY
roles:
- chat
- edit
defaultCompletionOptions:
maxTokens: 16384
Chat and Edit work. Autocomplete and indexing via embeddings do not — we do not serve embeddings.
Zed
- Command
zed: open settings file— add the provider insettings.jsonwithout wiping the rest. - Command
agent: open settings— paste the key in the provider UI, not in JSON. - In the AI panel pick GLM and send a short text prompt.
{
"language_models": {
"openai": {
"api_url": "https://uncensored.monster/v1",
"available_models": [
{
"name": "z-ai/glm-5.3-flash-uncensored",
"display_name": "GLM 5.3 Flash Uncensored",
"max_tokens": 1048576,
"max_output_tokens": 16384
}
]
}
}
}
In Zed max_tokens is the context window; max_output_tokens is the reply budget. Edit Prediction is separate and need not hit our API.
JetBrains AI Assistant
- Settings → Tools → AI Assistant → Providers & API keys.
- Third-party AI providers → OpenAI-compatible. URL
https://uncensored.monster/v1, key from the bot. Test Connection. - In AI Chat pick GLM. Optionally Model Assignment → Core features, context
1048576.
This covers chat and code generation. It does not replace a JetBrains subscription or every bundled agent. Continue in the same IDEs: section above.
Aider
Terminal in the project folder (VS Code, Cursor, JetBrains — same). The openai/ prefix tells Aider which protocol to use. An “unknown model” warning is possible — copy the id in full. Do not dump the whole repo: /add one small file, then describe the edit.
export OPENAI_API_BASE=https://uncensored.monster/v1 export OPENAI_API_KEY=YOUR_KEY aider --model openai/z-ai/glm-5.3-flash-uncensored
PowerShell: $env:OPENAI_API_BASE and $env:OPENAI_API_KEY.
OpenCode 2
Merge this provider into opencode.jsonc (v1 uses a different format). Keep the key in the environment. In /models pick uncensored/ and GLM. Start with a small task.
{
"provider": {
"uncensored": {
"npm": "@ai-sdk/openai-compatible",
"name": "uncensored.monster",
"options": {
"baseURL": "https://uncensored.monster/v1",
"apiKey": "{env:UNCENSORED_API_KEY}"
},
"models": {
"glm": {
"name": "z-ai/glm-5.3-flash-uncensored",
"limit": { "context": 1048576, "output": 16384 }
}
}
}
}
}
Python and Node
Keep the key on the server, never in browser JS. Do not call client.responses.create — that is 404.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_KEY",
base_url="https://uncensored.monster/v1",
)
r = client.chat.completions.create(
model="z-ai/glm-5.3-flash-uncensored",
messages=[{"role": "user", "content": "ping"}],
max_tokens=32,
)
print(r.choices[0].message.content)
Streaming: stream=True, read chunk.choices[0].delta.content. Install: python -m pip install openai.
const r = await fetch("https://uncensored.monster/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.UNCENSORED_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "z-ai/glm-5.3-flash-uncensored",
messages: [{ role: "user", content: "ping" }],
max_tokens: 32,
}),
});
const data = await r.json();
if (!r.ok) throw new Error(data.error?.message || r.status);
console.log(data.choices[0].message.content);
Any other OpenAI-compatible agent (Hermes and similar) uses the same three fields: Base URL with /v1, key, model id.
cURL check
curl https://uncensored.monster/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d "{
\"model\": \"z-ai/glm-5.3-flash-uncensored\",
\"messages\": [{\"role\": \"user\", \"content\": \"ping\"}],
\"max_tokens\": 32
}"
If it does not answer
- 401 — missing key, typo, space/newline, or revoked. Issue a new one in the cabinet or in the bot.
- 402 — no balance. Top up in the cabinet or in the bot; a large
max_tokensdoes not replace a top-up. - 400 — wrong
modelor bad JSON. Copy the id in full, no[1m]. - 413 — body over 32 MiB (history, image). Shrink the attachment; PNG/JPEG, not a giant.
- 404 — Base URL without
/v1, or the client is hitting Anthropic / Responses / embeddings / FIM. - 429 — too many in-flight requests (3 per key). Wait; do not loop billable retries.
- 503 — temporary fault. Wait; do not retry immediately.
- Truncated reply,
finish_reason: length— raise the output budget, new chat, or split the task. Stream long generations. - Timeout — stream, shorter task, larger client timeout.
- Images: GLM accepts them; the client may not attach files. Start with one small PNG/JPEG.
- In ZCode the model row toggle is off — the request will not leave.
What does not connect
Claude Code and ANTHROPIC_BASE_URL change the host, not the protocol: they need Anthropic Messages, which we do not serve. Codex wants Responses — also missing. GLM does not become Claude/GPT because you switched the client. For an agent use Cline, Roo, OpenCode, or Aider.
Keys and balance live in the cabinet or in Telegram. Docs: this page.