Skip to main content
POST
BaseURL: La BaseURL predeterminada es https://direct.evolink.ai, que ofrece mejor compatibilidad con los modelos de texto y las conexiones de larga duración. https://api.evolink.ai es el endpoint principal para los servicios multimodales y sirve como dirección de respaldo para los modelos de texto.
Invoca GLM en formato Responses para conversaciones de texto, streaming y llamadas a funciones. La comprensión de imágenes y la búsqueda web dependen del modelo. Los parámetros y las diferencias se explican a continuación.

Modelos y diferencias de parámetros

Elige un modelo GLM. Los cuatro admiten texto en este endpoint. Las funciones opcionales varían según el modelo. Responses usa reasoning.effort anidado, en lugar de reasoning_effort o thinking en el nivel superior. Los tokens de razonamiento están incluidos en output_tokens. Las tareas simples pueden devolver reasoning_tokens=0; eso no significa que se pueda desactivar el razonamiento. Intensidad de razonamiento; se recomienda low. Reglas de compatibilidad de glm-5.3 / glm-5.3-flash / glm-5.3-flashx minimal y none no desactivan el razonamiento de la serie 5.3. Sus tokens se facturan como salida. Los valores desconocidos se mantienen sin conversión de compatibilidad; usa los valores indicados. Estas reglas no se aplican a glm-5.2. En este endpoint, glm-5.2 puede seguir produciendo tokens de razonamiento con none. Este valor no garantiza su desactivación.

Prompts del sistema y conversaciones de varios turnos

instructions: Instrucciones del sistema. glm-5.3-flash admite este campo cuando input es una cadena. Si es un array de mensajes, coloca el prompt del sistema en el primer mensaje role=system.
Guarda la respuesta para referenciarla después. glm-5.3-flash y glm-5.3-flashx permiten continuar con store=true y previous_response_id. glm-5.2 no admite la continuación mediante ID; store=true no la activa. Incluye el historial completo en input. id de nivel superior de la respuesta anterior. glm-5.3-flash y glm-5.3-flashx lo admiten con store=true y el mismo modelo. Pasa el id de respuesta sin cambios, no el id de un elemento output. glm-5.2 devuelve 400 para este campo. Si cambias de modelo, omítelo e incluye todo el historial en input.

Respuestas en streaming

Activa el streaming SSE. Lee el texto en delta de response.output_text.delta. El evento final de éxito es response.completed. Finaliza el turno y gestiona también response.incomplete, response.failed o error. No esperes únicamente [DONE] o el cierre de la conexión. Deja de leer tras un evento final. HTTP 200 solo significa que se ha establecido el stream; comprueba el estado final del evento. Un turno con herramientas puede terminar con response.completed y seguir requiriendo que tu aplicación ejecute la función y envíe otra solicitud.

Llamadas a funciones

Elige el ejemplo de función en el menú de solicitudes. Responses usa definiciones de función sin anidamiento:
  1. Recorre response.output y recoge todos los elementos type=function_call.
  2. Analiza y valida la cadena JSON arguments y ejecuta cada función en tu aplicación.
  3. Añade todo el output anterior al historial. Agrega un function_call_output por llamada, con el call_id original y un output de tipo cadena.
  4. Envía el historial actualizado como input de la siguiente solicitud. El ejemplo de devolución de resultados muestra esta estructura.
parallel_tool_calls: Permite varias llamadas a herramientas por turno. false no garantiza una sola llamada a función. El cliente debe recorrer y procesar todos los function_call.

Imágenes, búsqueda y salida JSON

Con glm-5.3-flash y glm-5.3-flashx, combina input_text e input_image en el array content del mensaje de usuario. Pasa una URL pública o Data URL Base64 en image_url. Usa solo texto con glm-5.3 y glm-5.2. Declara tools: [{"type":"web_search"}]. La búsqueda se ejecuta en el servidor y devuelve elementos web_search_call y texto. Comprueba los elementos de salida para saber si se utilizó. Puede haber cargos por búsqueda además de los tokens; consulta el precio del modelo. Para continuar después de una búsqueda, añade todo el output anterior, incluidos web_search_call y message, a input y después agrega tu nueva pregunta. Conserva los campos originales como id, status y action. El servidor ya ha ejecutado la búsqueda, por lo que no debes crear un function_call_output para web_search_call. Consulta el ejemplo de solicitud web_search_history. text.format.type: Formato de salida: text para texto y json_object para un objeto JSON. Con json_object, pide JSON válido explícitamente en el prompt y analízalo y valídalo en el cliente. No se ofrecen restricciones estrictas de JSON Schema; json_schema o strict=true no garantizan una estructura concreta.

Respuestas y uso

Elementos de salida ordenados. Extrae text de las entradas content con type=output_text dentro de los elementos type=message. reasoning puede preceder a la respuesta y los turnos function_call pueden no tener texto. No leas siempre output[0]. output_text: Texto de respuesta agregado opcional; puede faltar. Los clientes genéricos deben recorrer output. output_text en elementos message; puede ser reasoning_text en elementos reasoning. El razonamiento también puede devolverse mediante summary_text. No supongas que todos los elementos reasoning tienen content.
  • usage.input_tokens: Total de tokens de entrada, incluidos los que coinciden con la caché. usage.input_tokens_details.cached_tokens: Subconjunto de tokens de entrada encontrado en caché; no lo sumes de nuevo a input_tokens. La caché de prefijos es automática y no requiere cache_control explícito. Usa el valor devuelto para conocer los aciertos.
  • usage.output_tokens: Total de tokens de salida, incluido el razonamiento. usage.output_tokens_details.reasoning_tokens: Subconjunto de tokens de salida usado para razonar; no lo cuentes de nuevo en output_tokens. Este detalle puede faltar o valer 0.
status=incomplete con incomplete_details.reason=max_output_tokens indica que se agotó el presupuesto. Puede haber razonamiento sin respuesta; aumenta el límite de salida.

Autorizaciones

Authorization
string
header
requerido

Envía Bearer YOUR_API_KEY en la cabecera Authorization.

Cuerpo

application/json
model
enum<string>
predeterminado:glm-5.3-flash
requerido

Elige un modelo GLM. Los cuatro admiten texto en este endpoint. Las funciones opcionales varían según el modelo.

Opciones disponibles:
glm-5.3,
glm-5.3-flash,
glm-5.3-flashx,
glm-5.2
Ejemplo:

"glm-5.3-flash"

input
requerido

Obligatorio. Cadena de texto o array de elementos de entrada Responses. El array admite mensajes, elementos de salida del modelo reenviados y function_call_output. Para varios turnos, incluye el historial completo en cada solicitud. Coloca el prompt del sistema al principio como mensaje role=system. Las imágenes usan input_image, solo con glm-5.3-flash y glm-5.3-flashx. No uses el formato de bloques messages / image_url de Chat Completions.

Ejemplo:

"Preséntate en una frase."

max_output_tokens
integer

Máximo de tokens de salida de esta generación, incluido el razonamiento. Empieza con 1024 y ajusta según la tarea. Un límite pequeño puede agotarse durante el razonamiento y devolver solo elementos reasoning, sin respuesta. Comprueba status e incomplete_details. El parámetro se llama max_output_tokens, no max_tokens.

Rango requerido: x >= 1
Ejemplo:

1024

stream
boolean
predeterminado:false

Activa el streaming SSE. Lee el texto en delta de response.output_text.delta. El evento final de éxito es response.completed. Finaliza el turno y gestiona también response.incomplete, response.failed o error. No esperes únicamente [DONE] o el cierre de la conexión.

reasoning
object

Responses usa reasoning.effort anidado, en lugar de reasoning_effort o thinking en el nivel superior. Los tokens de razonamiento están incluidos en output_tokens. Las tareas simples pueden devolver reasoning_tokens=0; eso no significa que se pueda desactivar el razonamiento.

instructions
string

Instrucciones del sistema. glm-5.3-flash admite este campo cuando input es una cadena. Si es un array de mensajes, coloca el prompt del sistema en el primer mensaje role=system.

tools
object[]

Admite herramientas function del lado del cliente y web_search del lado del servidor. Declara funciones con name / description / parameters al mismo nivel, sin anidarlas en un objeto function como en Chat Completions. Tu aplicación ejecuta function_call y devuelve el resultado. web_search se ejecuta en el servidor; las búsquedas realizadas pueden tener un coste por llamada además de los tokens. Consulta el precio del modelo.

tool_choice

auto permite elegir al modelo; none desactiva las herramientas; required exige una llamada. Para una función concreta, usa {"type":"function","name":"get_temperature"}. La selección forzada no garantiza el mismo comportamiento en todas las combinaciones de modelos y herramientas.

Opciones disponibles:
auto,
none,
required
Ejemplo:

"auto"

parallel_tool_calls
boolean

Permite varias llamadas a herramientas por turno. false no garantiza una sola llamada a función. El cliente debe recorrer y procesar todos los function_call.

text
object

Formato de salida. Los ejemplos usan json_object; HTTP 200 no garantiza el cumplimiento de un esquema JSON.

store
boolean

Guarda la respuesta para referenciarla después. glm-5.3-flash y glm-5.3-flashx permiten continuar con store=true y previous_response_id. glm-5.2 no admite la continuación mediante ID; store=true no la activa. Incluye el historial completo en input.

previous_response_id
string

id de nivel superior de la respuesta anterior. glm-5.3-flash y glm-5.3-flashx lo admiten con store=true y el mismo modelo. Pasa el id de respuesta sin cambios, no el id de un elemento output. glm-5.2 devuelve 400 para este campo. Si cambias de modelo, omítelo e incluye todo el historial en input.

Ejemplo:

"ID de respuesta devuelto en el turno anterior"

metadata
object

Metadatos personalizados de cadenas clave-valor, disponibles en metadata de la respuesta. No incluyas claves secretas ni información sensible.

Ejemplo:
temperature
number

Parámetro de muestreo. El rango efectivo y el comportamiento dependen del modelo. No garantiza una salida determinista y se puede omitir en tareas de razonamiento.

top_p
number

Parámetro de muestreo. El rango efectivo y el comportamiento dependen del modelo. Normalmente se puede omitir.

Respuesta

Generación terminada o resultado incompleto; comprueba status. En streaming se devuelve text/event-stream.

id
string

ID de esta respuesta. Pásalo sin cambios en previous_response_id.

Ejemplo:

"response_demo"

object
string
Allowed value: "response"
created_at
integer

Fecha de creación en segundos Unix.

model
string
Ejemplo:

"glm-5.3-flash"

status
enum<string>

completed indica que ha terminado la generación del turno, posiblemente solo con llamadas a herramientas. incomplete indica una salida incompleta. Comprueba output y error.

Opciones disponibles:
completed,
incomplete,
failed,
in_progress,
queued
output
object[]

Elementos de salida ordenados. Extrae text de las entradas content con type=output_text dentro de los elementos type=message. reasoning puede preceder a la respuesta y los turnos function_call pueden no tener texto. No leas siempre output[0].

output_text
string

Texto de respuesta agregado opcional; puede faltar. Los clientes genéricos deben recorrer output.

usage
object
error
object | null

Error de respuesta; normalmente null si la solicitud tiene éxito.

incomplete_details
object
metadata
object | null