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.
https://uncensored.dog/v1z-ai/glm-5.3-flash-uncensoredCómo empezar
- Abre el gabinete o @uncensobot. La clave, el saldo y el pago son compartidos.
- Compra un paquete ($1–$100, Crypto o xRocket USDT). Sin saldo → 402.
- Botón API: el secreto se muestra una vez. Quita espacios y el salto de línea final si copiaste desde Telegram.
- 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. - Prueba: “Responde con una palabra: listo”. Si llega una respuesta, el cliente nos está llamando.
Más: bot → clave → API.
Qué hace la API
GET /v1/models— catálogo; envíaAuthorization: Bearer. Sin clave → 401. Sin clave no hay catálogo.POST /v1/chat/completions— texto, imágenes (image_url), flujo. Se aceptanmax_tokensymax_completion_tokens. La pasarela reenvíatools,tool_choiceyparallel_tool_calls. Si el proveedor no puede ejecutar herramientas, llega el error de origen.- El id del modelo tiene que ser uno de la lista. Un
modelvacío usa GLM Flash. El selector de Telegram no cambia la API. - En el cliente pon ventana de contexto
1048576y presupuesto de salida16384(o tu propiomax_tokens/max_completion_tokens). Eso limita una respuesta, no todo el hilo. - El prompt de sistema, el historial y las herramientas comparten esa ventana.
- Cuerpo de la petición hasta 32 MiB. Más grande → 413.
- Antes de la llamada reservamos la entrada estimada más el presupuesto de salida (
max_tokens/max_completion_tokens, si no 16384) a la tarifa del modelo. Si la reserva no cabe en el saldo — 402. Tras la respuesta cobramos el uso real y soltamos el resto. Una reserva atascada caduca a los 20 minutos. - No servimos Anthropic Messages, OpenAI Responses, embeddings ni FIM.
- No reintentes si el flujo ya empezó: es una segunda petición de pago. Para soporte envía la hora y
X-Request-ID, no la clave. - No añadas
/chat/completionsal Base URL: eso lo hace el cliente.
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.
-
z-ai/glm-5.3-flash-uncensoredPredeterminado. Chat, escritura, código. -
abliteration-ai/abliterated-model-large-v2La más lista y la más rápida. -
abliteration-ai/abliterated-model-large-flashModelo Abliterated rápido basado en DeepSeek Flash. -
qwen/qwen3.8-27b-uncensoredChat y código, razonamiento opcional. -
qwen/qwen3.8-27b-uncensored:thinkingRazonamiento, tareas de varios pasos. -
pqhaz/DeepSeek-V4.1-Flash-1017-heretic:thinkingDeepSeek Flash rápido, razonamiento siempre activo. -
abliteration-ai/abliterated-modelTexto corto y cotidiano. -
Gemma-4-31B-Gembrain-uncensored-hereticConversación, escritura, análisis. -
z-ai/glm-5.3-uncensoredGLM 5.3 completo, experimental, solo texto. -
xiaomi/mimo-v2.6-flash-uncensoredMiMo de texto, razonamiento opcional. -
xiaomi/mimo-v2.6-flash-uncensored:thinkingMiMo con razonamiento siempre activo, respuestas más lentas.
ZCode
- En el bot abre API y crea una clave con un nombre claro, p. ej.
zcode. - Instala o actualiza ZCode desde zcode.z.ai.
- Settings → Model Settings. O pulsa el nombre del modelo bajo el campo → Manage Models.
- Al final de la lista: Add Provider. Cualquier nombre, p. ej.
uncensored. - OpenAI Base URL:
https://uncensored.dog/v1. Deja Anthropic Base URL vacío. - Formato: Chat completions. Pega la clave. Si ves “API Key Required”, actívalo. Save.
- Add Model, el ID exacto
qwen/qwen3.8-27b-uncensored. El nombre visible es tuyo. - Avanzado para este modelo: Context Window
1048576, Max output tokens16384. - 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.
- 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
- Settings → Models → API Keys / OpenAI compatible (el texto depende de la versión).
- Override OpenAI Base URL:
https://uncensored.dog/v1. Deja Anthropic Base URL vacío. - Clave del bot. Modelo:
qwen/qwen3.8-27b-uncensored, sin sufijo[1m]. - 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)
- Panel de Roo → API Provider → OpenAI Compatible.
- Base URL, clave e id del modelo, como arriba. Context Window
1048576, Max Output Tokens16384. - Activa Image Support si necesitas imágenes. No actives Computer Use como capacidad del modelo: la visión no lo añade.
- 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).
- Empieza con una tarea pequeña y un archivo. Roo usa
toolsnativos.
Cline (VS Code)
- Cline → Settings → API Provider: OpenAI Compatible.
- Base URL, clave e id del modelo. Si Plan y Act tienen proveedores distintos, rellénalos igual.
- Model Configuration: Max Output Tokens
16384, Context Window1048576, Image Support si hacen falta imágenes. - Una petición corta. Las instrucciones de sistema, el historial y las herramientas comparten esa ventana.
Kilo Code (VS Code)
- Settings → Providers → Custom provider. Cualquier id, p. ej.
uncensored. - Provider API: OpenAI Compatible. Base URL, clave e id del modelo. Save.
- En
kilo.jsoncpara el modelo:limit.context = 1048576,limit.output = 16384. Elige este proveedor en la lista de modelos. - 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
- Comando
zed: open settings file: añade el proveedor ensettings.jsonsin borrar el resto. - Comando
agent: open settings: pega la clave en la interfaz del proveedor, no en el JSON. - 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
- Settings → Tools → AI Assistant → Providers & API keys.
- Proveedores de IA de terceros → OpenAI-compatible. URL
https://uncensored.dog/v1, clave del bot. Pulsa Test Connection. - 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
- 401 — falta la clave, hay un error, un espacio o salto de línea, o está revocada. Emite otra en el gabinete o en el bot.
- 402 — no hay saldo. Recarga en el gabinete o en el bot; un
max_tokensgrande no sustituye la recarga. - 400 —
modelincorrecto o JSON mal formado. Copia el id entero, sin[1m]. - 413 — cuerpo de más de 32 MiB (historial, imagen). Reduce el adjunto: PNG/JPEG, no un gigante.
- 404 — Base URL sin
/v1, o el cliente llama a Anthropic / Responses / embeddings / FIM. - 429 — demasiadas peticiones a la vez (3 por clave). Espera; no repitas en bucle peticiones de pago.
- 503 — fallo temporal. Espera; no reintentes enseguida.
- Respuesta cortada,
finish_reason: length: sube el presupuesto de salida, chat nuevo o divide la tarea. Pide en flujo las generaciones largas. - Tiempo de espera: flujo, tarea más corta o más margen en el cliente.
- Imágenes: GLM las acepta; el cliente puede no adjuntar archivos. Empieza con un PNG/JPEG pequeño.
- En ZCode el interruptor de la fila del modelo está apagado: la petición no sale.
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.