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.

Base URL · https://uncensored.monster/v1
API Key · cabinet or the API button in @uncensobot, shown once
Model ID · default z-ai/glm-5.3-flash-uncensored
Protocol · Chat Completions, not Anthropic, not Responses

How to start

  1. Open the cabinet or @uncensobot. Key, balance, and payment are shared.
  2. Buy a pack ($1–$100, Crypto or xRocket USDT). No balance → 402.
  3. API button — the secret is shown once. Strip spaces and a trailing newline from Telegram.
  4. Three client fields: Base URL with /v1, the key, the exact model id. New chat after changing the host.
  5. Ping: “Reply with one word: ready”. If you get a reply, the client is hitting us.

More: bot → key → API.

What the API does

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.

ZCode

  1. In the bot open API, create a key with a clear name, e.g. zcode.
  2. Install or update ZCode from zcode.z.ai.
  3. Settings → Model Settings. Or tap the model name under the input → Manage Models.
  4. At the bottom of the list — Add Provider. Any name, e.g. uncensored.
  5. OpenAI Base URL: https://uncensored.monster/v1. Leave Anthropic Base URL empty.
  6. Format: Chat completions. Paste the key. If you see “API Key Required”, turn it on. Save.
  7. Add Model, ID exactly z-ai/glm-5.3-flash-uncensored. Display name is yours.
  8. Advanced for this model: Context Window 1048576, Max output tokens 16384.
  9. 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.
  10. 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

  1. Settings → Models → API Keys / OpenAI compatible (wording depends on version).
  2. Override OpenAI Base URL: https://uncensored.monster/v1. Leave Anthropic Base URL empty.
  3. Key from the bot. Model: z-ai/glm-5.3-flash-uncensored, no [1m] suffix.
  4. 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)

  1. Roo panel → API Provider → OpenAI Compatible.
  2. Base URL, key, model id as above. Context Window 1048576, Max Output Tokens 16384.
  3. Turn on Image Support if you need pictures. Do not enable Computer Use as a model capability — vision does not add it.
  4. 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).
  5. Start with one small task and one file. Roo uses native tools.

Cline (VS Code)

  1. Cline → Settings → API Provider: OpenAI Compatible.
  2. Base URL, key, model id. If Plan and Act have separate providers, fill both the same way.
  3. Model Configuration: Max Output Tokens 16384, Context Window 1048576, Image Support if needed.
  4. Short request. System instructions, history, and tools share that window.

Kilo Code (VS Code)

  1. Settings → Providers → Custom provider. Any id, e.g. uncensored.
  2. Provider API: OpenAI Compatible. Base URL, key, model id. Save.
  3. In kilo.jsonc for the model: limit.context = 1048576, limit.output = 16384. Pick this provider in the model list.
  4. 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

  1. Command zed: open settings file — add the provider in settings.json without wiping the rest.
  2. Command agent: open settings — paste the key in the provider UI, not in JSON.
  3. 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

  1. Settings → Tools → AI Assistant → Providers & API keys.
  2. Third-party AI providers → OpenAI-compatible. URL https://uncensored.monster/v1, key from the bot. Test Connection.
  3. 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

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.