API

Documentación

Funciona tal cual. Sin rituales. Chat Completions compatible con OpenAI. Consigue la clave en el gabinete o en el bot: /api o el botón API.

Base URL · https://uncensored.dog/v1
El servicio antes se llamaba uncensored.monster. Las claves siguen igual; solo cambió la dirección.
API Key · gabinete o el botón API en @uncensobot, se muestra una vez
Model ID · por defecto z-ai/glm-5.3-flash-uncensored
Protocolo · Chat Completions, ni Anthropic ni Responses

Cómo empezar

  1. Abre el gabinete o @uncensobot. La clave, el saldo y el pago son compartidos.
  2. Compra un paquete ($1–$100, Crypto o xRocket USDT). Sin saldo → 402.
  3. Botón API: el secreto se muestra una vez. Quita espacios y el salto de línea final si copiaste desde Telegram.
  4. Tres campos en el cliente: Base URL con /v1, la clave y el id exacto del modelo. Chat nuevo después de cambiar la dirección.
  5. Prueba: “Responde con una palabra: listo”. Si llega una respuesta, el cliente nos está llamando.

Más: bot → clave → API.

Qué hace la API

La caché es parte de la entrada: si usage informa cached_tokens, se cobran al precio de caché del modelo. Tarjetas: inicio. Las etiquetas del menú dependen de la versión del cliente; no certificamos cada escenario de agente en cada IDE.

ZCode

  1. En el bot abre API y crea una clave con un nombre claro, p. ej. zcode.
  2. Instala o actualiza ZCode desde zcode.z.ai.
  3. Settings → Model Settings. O pulsa el nombre del modelo bajo el campo → Manage Models.
  4. Al final de la lista: Add Provider. Cualquier nombre, p. ej. uncensored.
  5. OpenAI Base URL: https://uncensored.dog/v1. Deja Anthropic Base URL vacío.
  6. Formato: Chat completions. Pega la clave. Si ves “API Key Required”, actívalo. Save.
  7. Add Model, el ID exacto qwen/qwen3.8-27b-uncensored. El nombre visible es tuyo.
  8. Avanzado para este modelo: Context Window 1048576, Max output tokens 16384.
  9. Activa el interruptor en el proveedor y en el modelo. En el chat elige un modelo de este grupo, no el GLM integrado de Z.ai.
  10. Tarea nueva y un ping corto, por ejemplo “Responde con una palabra: listo”.

No pegues la clave en la tarjeta Z.ai / BigModel: van a /paas/v4 y no funcionará. No añadas el sufijo [1m] al id del modelo.

Cursor

  1. Settings → Models → API Keys / OpenAI compatible (el texto depende de la versión).
  2. Override OpenAI Base URL: https://uncensored.dog/v1. Deja Anthropic Base URL vacío.
  3. Clave del bot. Modelo: qwen/qwen3.8-27b-uncensored, sin sufijo [1m].
  4. Chat de agente nuevo después de cambiar la URL. Los hilos viejos pueden conservar el host anterior.

Cursor Tab y los modelos incluidos de Cursor siguen las condiciones de Cursor, no nuestra clave. Detalles: Base URL propio en Cursor. Desde la terminal de Cursor también puedes lanzar Aider: es otro cliente.

Roo Code (VS Code)

  1. Panel de Roo → API Provider → OpenAI Compatible.
  2. Base URL, clave e id del modelo, como arriba. Context Window 1048576, Max Output Tokens 16384.
  3. Activa Image Support si necesitas imágenes. No actives Computer Use como capacidad del modelo: la visión no lo añade.
  4. Los campos de precio en Roo son solo para la interfaz de la extensión. El cobro es siempre nuestro precio (GLM entrada $0.39 / salida $1.58 / caché $0.16 por 1M).
  5. Empieza con una tarea pequeña y un archivo. Roo usa tools nativos.

Cline (VS Code)

  1. Cline → Settings → API Provider: OpenAI Compatible.
  2. Base URL, clave e id del modelo. Si Plan y Act tienen proveedores distintos, rellénalos igual.
  3. Model Configuration: Max Output Tokens 16384, Context Window 1048576, Image Support si hacen falta imágenes.
  4. Una petición corta. Las instrucciones de sistema, el historial y las herramientas comparten esa ventana.

Kilo Code (VS Code)

  1. Settings → Providers → Custom provider. Cualquier id, p. ej. uncensored.
  2. Provider API: OpenAI Compatible. Base URL, clave e id del modelo. Save.
  3. En kilo.jsonc para el modelo: limit.context = 1048576, limit.output = 16384. Elige este proveedor en la lista de modelos.
  4. Solo Chat Completions. GLM acepta imágenes; en Kilo no elijas Anthropic.

Continue (VS Code / JetBrains)

VS Code: extensión Continue → config.yaml local. JetBrains: Settings → Plugins → Continue, el mismo archivo de modelo. Si ya hay un config, incorpora solo la entrada models.

models:
  - name: GLM 5.3 Flash Uncensored
    provider: openai
    model: qwen/qwen3.8-27b-uncensored
    apiBase: https://uncensored.dog/v1
    apiKey: YOUR_KEY
    roles:
      - chat
      - edit
    defaultCompletionOptions:
      maxTokens: 16384

Chat y Edit funcionan. El autocompletado y la indexación por embeddings no: no servimos embeddings.

Zed

  1. Comando zed: open settings file: añade el proveedor en settings.json sin borrar el resto.
  2. Comando agent: open settings: pega la clave en la interfaz del proveedor, no en el JSON.
  3. En el panel de IA elige GLM y envía un texto corto.
{
  "language_models": {
    "openai": {
      "api_url": "https://uncensored.dog/v1",
      "available_models": [
        {
          "name": "qwen/qwen3.8-27b-uncensored",
          "display_name": "GLM 5.3 Flash Uncensored",
          "max_tokens": 1048576,
          "max_output_tokens": 16384
        }
      ]
    }
  }
}

En Zed max_tokens es la ventana de contexto; max_output_tokens es el presupuesto de la respuesta. Edit Prediction es aparte y no tiene que llamar a nuestra API.

JetBrains AI Assistant

  1. Settings → Tools → AI Assistant → Providers & API keys.
  2. Proveedores de IA de terceros → OpenAI-compatible. URL https://uncensored.dog/v1, clave del bot. Pulsa Test Connection.
  3. En AI Chat elige GLM. Opcional: Model Assignment → Core features, contexto 1048576.

Esto cubre el chat y la generación de código. No sustituye una suscripción de JetBrains ni a cada agente incluido. Continue en los mismos IDE: sección de arriba.

Aider

Terminal en la carpeta del proyecto (VS Code, Cursor, JetBrains: igual). El prefijo openai/ le dice a Aider qué protocolo usar. Puede salir un aviso “unknown model”: copia el id entero. No metas todo el repositorio: /add un archivo pequeño y describe el cambio.

export OPENAI_API_BASE=https://uncensored.dog/v1
export OPENAI_API_KEY=YOUR_KEY
aider --model openai/qwen/qwen3.8-27b-uncensored

PowerShell: $env:OPENAI_API_BASE y $env:OPENAI_API_KEY.

OpenCode 2

Incorpora este proveedor en opencode.jsonc (v1 usa otro formato). Guarda la clave en el entorno. La clave del objeto bajo models es el id que OpenCode envía a la API. name es solo la etiqueta en el selector. Un alias como glm devuelve 400 “Unknown model”. En /models elige uncensored/z-ai/glm-5.3-flash-uncensored. Empieza con una tarea pequeña.

Si el modelo aparece pero el chat dice “no API key” o “invalid key”, casi siempre falta UNCENSORED_API_KEY: un valor vacío se envía como clave vacía. Defínela en la misma consola desde la que lanzas opencode. PowerShell: $env:UNCENSORED_API_KEY="sk-...", bash: export UNCENSORED_API_KEY=sk-.... Comprueba la clave: curl.exe https://uncensored.dog/v1/models -H "Authorization: Bearer $env:UNCENSORED_API_KEY" debe devolver la lista de modelos.

{
  "provider": {
    "uncensored": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "uncensored.dog",
      "options": {
        "baseURL": "https://uncensored.dog/v1",
        "apiKey": "{env:UNCENSORED_API_KEY}"
      },
      "models": {
        "z-ai/glm-5.3-flash-uncensored": {
          "name": "GLM 5.3 Flash",
          "limit": { "context": 1048576, "output": 16384 }
        }
      }
    }
  }
}

Python y Node

Guarda la clave en el servidor, nunca en JS del navegador. No llames a client.responses.create: eso es 404.

from openai import OpenAI
client = OpenAI(
    api_key="YOUR_KEY",
    base_url="https://uncensored.dog/v1",
)
r = client.chat.completions.create(
    model="qwen/qwen3.8-27b-uncensored",
    messages=[{"role": "user", "content": "ping"}],
    max_tokens=32,
)
print(r.choices[0].message.content)

Flujo: stream=True, lee chunk.choices[0].delta.content. Instalación: python -m pip install openai.

const r = await fetch("https://uncensored.dog/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.UNCENSORED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "qwen/qwen3.8-27b-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);

Cualquier otro agente compatible con OpenAI (Hermes y similares) usa los mismos tres campos: Base URL con /v1, clave e id del modelo.

Prueba con cURL

curl https://uncensored.dog/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"qwen/qwen3.8-27b-uncensored\",
    \"messages\": [{\"role\": \"user\", \"content\": \"ping\"}],
    \"max_tokens\": 32
  }"

Si no responde

Qué no se conecta

Claude Code y ANTHROPIC_BASE_URL cambian el host, no el protocolo: necesitan Anthropic Messages, y eso no lo servimos. Codex quiere Responses, y eso tampoco está. GLM no se vuelve Claude ni GPT porque cambies de cliente. Para un agente usa Cline, Roo, OpenCode o Aider.

Las claves y el saldo están en el gabinete o en Telegram. Documentación: esta página.