Los tres valores que necesitas
Una pregunta sobre la URL base de la API glm suele provenir de alguien que tiene un cliente que necesita una URL, una clave y un nombre de modelo, pero no sabe qué valores van en cada sitio. Aquí están todos en un solo lugar.
| Ajuste | Valor |
|---|---|
| URL base | https://api.glmapi.cc/v1 |
| ID del modelo | uncensored |
| Cabecera de autenticación | Authorization: Bearer YOUR_KEY |
| Endpoint de chat | POST /v1/chat/completions |
| Lista de modelos | GET /v1/models |
Una aclaración antes de copiar cualquier cosa. El nombre del dominio se refiere al término de búsqueda, no al modelo. Esta es una API de texto compatible con OpenAI alojada para un modelo de pesos abiertos ejecutado por un proveedor independiente, ajustada para responder sin rechazos de contenido para uso adulto lícito. No es la API oficial del proveedor detrás de GLM, ni un enrutador que reenvía a otros proveedores. Si necesitas un modelo GLM oficial, usa el servicio propio de ese proveedor.
Obtienes una clave registrándote con Google o con correo electrónico y contraseña. La página de clave de API también tiene una reclamación de prueba de $0,50 con un clic, válida por 7 días sin tarjeta.
Verifica la conexión con curl
Antes de tocar cualquier SDK o app, confirma la clave y la URL con una petición simple. Si esto funciona, cualquier problema posterior está en la configuración de tu cliente y no en la cuenta. Primero, lista los modelos:
curl https://api.glmapi.cc/v1/models \
-H "Authorization: Bearer YOUR_KEY"Deberías obtener una lista JSON que incluya el id uncensored. Luego envía una finalización de chat:
curl https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Reply with the word ready."}],
"max_tokens": 20
}'Añade -i para ver las cabeceras de respuesta. Incluyen X-Request-Id, X-Balance-USD (tu crédito restante), X-RateLimit-Limit-Requests y X-RateLimit-Limit-Concurrency. Guarda el ID de petición si alguna vez necesitas preguntar a soporte sobre una llamada.
Python y Node
Los SDK oficiales de OpenAI aceptan una URL base personalizada. Cambias dos argumentos del constructor y el nombre del modelo; el resto de tu código se mantiene igual.
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.glmapi.cc/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a tavern."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.glmapi.cc/v1",
apiKey: process.env.GLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a tavern." }],
});
console.log(resp.choices[0].message.content);La propiedad de Node es baseURL con mayúsculas, mientras que el argumento de Python es base_url. Mezclarlos es una forma clásica de caer silenciosamente en el host predeterminado del SDK y obtener un error de autenticación del servidor incorrecto.
Variables de entorno en lugar de código
Los SDK de OpenAI leen OPENAI_BASE_URL y OPENAI_API_KEY del entorno cuando no los pasas explícitamente. Esa es la forma menos invasiva de redirigir una herramienta que no puedes editar, como un script de un repositorio o un framework que construye el cliente por ti.
export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.pyAún tienes que configurar el nombre del modelo dentro de la herramienta o su archivo de configuración a uncensored, porque ninguna variable de entorno lo contiene. Si la herramienta tiene un menú desplegable de modelos que solo lista nombres que conoce, busca una opción de modelo personalizado o de texto libre.
Mantén los valores en un solo lugar
Una vez que la conexión funciona, evita pegar la URL en cinco archivos. Pon los tres valores en un solo lugar y léelos en todas partes. Un archivo .env funciona para proyectos pequeños:
GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensoredLuego cárgalos una vez al inicio y construye un único cliente que el resto del programa importe. El beneficio se nota el día que cambies claves, añadas una clave de staging con un saldo de prueba o compares este endpoint con otro. Editas un archivo, no tu base de código.
Mantén claves separadas para desarrollo y producción donde la cuenta lo permita, y rota una clave inmediatamente si aparece en un commit, una captura de pantalla o un registro compartido. Una clave filtrada gasta tu crédito prepago y el crédito no vuelve.
Aplicaciones de chat y frameworks
Las interfaces front-end difieren en la redacción pero piden los mismos tres valores. Busca un tipo de conexión llamado OpenAI-compatible, custom OpenAI o similar, luego rellena:
- URL de API / URL base:
https://api.glmapi.cc/v1 - Clave de API: la clave de tu cuenta
- Modelo:
uncensored
SillyTavern te permite añadir un endpoint compatible con OpenAI a través de su fuente de finalización de chat personalizada, y Open WebUI tiene un tipo de conexión compatible con OpenAI en su configuración. Frameworks como LangChain toman un base_url en su clase de modelo de chat, y LiteLLM puede enrutar un modelo estilo OpenAI a través de una URL base de API personalizada. Los nombres de menú cambian entre versiones, así que sigue la documentación actual de cada proyecto para saber exactamente dónde está el campo.
Algunas apps preguntan si deben añadir /chat/completions por ti. Muchas lo hacen, lo que significa que la URL que introduces debe terminar en /v1. Si una app en su lugar pide el endpoint completo, dale https://api.glmapi.cc/v1/chat/completions. El quickstart muestra los campos de petición admitidos con más detalle.
Por qué falla la primera llamada
Si la prueba de curl pasa y tu app sigue dando error, la causa es casi siempre una de estas:
- Falta
/v1. Usar solohttps://api.glmapi.ccprobablemente fallará con un error not-found, porque las rutas viven bajo/v1. - Ruta duplicada. La app añade
/chat/completionsy tú también la escribiste, produciendo/chat/completions/chat/completions. Elimínala de la URL base. - Barra final. Algunos clientes unen rutas mal. Elimina una
/final si ves una doble barra en la URL registrada. - Nombre de modelo incorrecto. El único ID de modelo es
uncensored. Los nombres de otros servicios no coincidirán. - Problemas con la clave. Busca un espacio o salto de línea extraño al pegar, y que la clave se envíe como
Bearerdos veces por una app que ya añade el prefijo. - Llamada al host incorrecto. En una app de navegador, una URL base sin configurar vuelve al host predeterminado del SDK. Registra la URL de la petición real.
Las llamadas desde el navegador también exponen tu clave a cualquiera que abra las herramientas de desarrollo. Para un sitio público, envía peticiones desde tu propio servidor y mantén la clave allí.
Cuando nada de eso lo aclara, hazlo al revés a partir del caso más pequeño. Ejecuta el comando curl anterior en la misma máquina que la aplicación que falla. Si curl funciona allí, la red y la clave están bien y la aplicación está construyendo la petición de forma distinta, así que activa su registro de depuración y compara la URL, las cabeceras y el cuerpo JSON registrados con la versión curl, carácter por carácter. Si curl falla solo en esa máquina, revisa los proxies corporativos, las reglas de VPN y los filtros DNS, que a veces bloquean nombres de host de API desconocidos. Una petición que nunca llega al servidor no devuelve X-Request-Id, lo cual es una forma rápida de distinguir los dos casos.
Límites y respuestas 429
Una clave completa permite 8 peticiones simultáneas y 300 peticiones por minuto. Una clave de prueba permite 2 y 60. Supera cualquiera de ellos y la API devuelve HTTP 429 con el código rate_limited (demasiadas por minuto) o concurrency (demasiadas a la vez). Durante una sobrecarga temporal también obtienes un 429, con una cabecera Retry-After: 5.
Una petición en streaming mantiene su slot de concurrencia hasta que termina el streaming, por lo que una aplicación que abre un streaming y lo abandona sin cerrar la conexión puede quedarse sin recursos. El cuerpo máximo de la petición es de 8 MB, y la ventana de contexto es de 100.000 tokens que cubren prompt y completion juntos. Para tarifas y recargas, consulta la página de precios.
Streaming, herramientas y JSON usan la misma URL
No hay una dirección separada para streaming o llamadas a funciones. Todo va a /v1/chat/completions y activas las funciones en el cuerpo de la petición. Una petición de streaming establece "stream": true y devuelve eventos enviados por el servidor; una petición con herramientas añade tools y opcionalmente tool_choice; el modo JSON añade response_format con el tipo json_object. Los campos de muestreo como temperature, top_p, stop, seed y las penalizaciones se pasan a través.
Aquí tienes una llamada curl de streaming. La bandera -N desactiva el búfer de salida de curl, así que ves los fragmentos a medida que llegan:
curl -N https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","stream":true,"messages":[{"role":"user","content":"Count to five."}]}'Si tu proxy o capa de alojamiento almacena en búfer las respuestas, el streaming parecerá una gran respuesta retardada. Los proxies inversos a menudo necesitan desactivar el almacenamiento en búfer de respuestas para eventos enviados por el servidor, así que revisa esa configuración antes de culpar a la API. Para una versión Python completa de cada función, consulta el inicio rápido.
Más guías
Preguntas y respuestas
¿Cuál es la URL base de esta API?
https://api.glmapi.cc/v1. Las peticiones de chat van a /chat/completions bajo esa URL, y la lista de modelos está en /models.
¿Qué nombre de modelo debo usar?
Usa uncensored. Es el único ID de modelo y funciona en cualquier cliente estilo OpenAI que te permita escribir un modelo personalizado.
¿Es esta la API oficial de GLM?
No. Es un servicio independiente y compatible con OpenAI que ejecuta un único modelo de pesos abiertos, y no es la API oficial de ningún proveedor.
¿Qué cabecera lleva la clave?
Authorization: Bearer seguido de tu clave. Los SDK de OpenAI lo añaden automáticamente cuando proporcionas la clave.
¿Necesito una tarjeta para probar la conexión?
No. Hay una prueba de un clic de $0,50, válida por 7 días, disponible en la página de la clave de API tras iniciar sesión.
Tu clave está a un formulario de distancia
Crea una cuenta, copia la clave, cambia la URL base. Esa es toda la configuración.
