> ## Documentation Index
> Fetch the complete documentation index at: https://evolink.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GLM-5.2 - API compatible con OpenAI

> - Utiliza el protocolo OpenAI Chat Completions para llamar al modelo GLM-5.2
- Modo de procesamiento síncrono, devuelve el contenido de la conversación en tiempo real
- **Conversación de texto plano**: diálogo contextual de un solo turno o de múltiples turnos
- **Indicaciones de sistema**: personaliza el rol y el comportamiento de la IA mediante mensajes con `role=system`
- **Pensamiento profundo**: activa o desactiva la cadena de pensamiento mediante `thinking.type`, y ajusta la intensidad del razonamiento con `reasoning_effort`; el proceso de razonamiento se devuelve a través de `reasoning_content`
- **Salida en streaming**: admite respuestas en streaming SSE (`stream=true`)
- **Llamada a herramientas**: admite Function Calling, recuperación de base de conocimiento (retrieval), búsqueda web (web_search) y MCP (hasta 128 herramientas)
- **Salida estructurada**: activa el modo JSON mediante `response_format`

**Notas sobre la respuesta en streaming**: cuando `stream=true`, la respuesta se devuelve mediante Server-Sent Events, con cada mensaje en el formato `data: {JSON}` y, al finalizar, se devuelve `data: [DONE]`. Cada bloque de datos (`ChatCompletionChunk`) contiene `id`, `created`, `model`, `choices` y, opcionalmente, `usage` y `content_filter`; donde `choices[].delta` devuelve de forma incremental `role` / `content` / `reasoning_content` / `tool_calls`, y `choices[].finish_reason` indica el motivo de finalización en el último bloque.

<Note>
  **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.
</Note>


## OpenAPI

````yaml es/api-manual/language-series/glm-5.2/glm-5.2-api.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: Documentación completa de parámetros de GLM-5.2 (compatible con OpenAI)
  description: >-
    Referencia completa de la API de la interfaz de chat de GLM-5.2.


    **Capacidades del modelo**:

    - Modelo insignia más reciente, con razonamiento complejo, contexto
    ultralargo y velocidad de inferencia extrema

    - Salida máxima: **131,072 tokens** (128K), recomendado no menos de **1,024
    tokens**

    - Pensamiento profundo: activa o desactiva la cadena de pensamiento mediante
    el campo `thinking`, y ajusta la intensidad del razonamiento con
    `reasoning_effort` (exclusivo de GLM-5.2)

    - Llamada a herramientas: admite Function Calling, recuperación de base de
    conocimiento, búsqueda web y MCP (hasta 128 herramientas)

    - Salida en streaming: admite respuestas en streaming SSE

    - Salida estructurada: admite los formatos de respuesta `text` /
    `json_object`
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Producción (recomendado)
  - url: https://api.evolink.ai
    description: URL alternativa
security:
  - bearerAuth: []
tags:
  - name: Generación de chat
    description: Endpoints relacionados con la generación de chat de IA
paths:
  /v1/chat/completions:
    post:
      tags:
        - Generación de chat
      summary: Interfaz de chat de GLM-5.2 (compatible con OpenAI)
      description: >-
        - Utiliza el protocolo OpenAI Chat Completions para llamar al modelo
        GLM-5.2

        - Modo de procesamiento síncrono, devuelve el contenido de la
        conversación en tiempo real

        - **Conversación de texto plano**: diálogo contextual de un solo turno o
        de múltiples turnos

        - **Indicaciones de sistema**: personaliza el rol y el comportamiento de
        la IA mediante mensajes con `role=system`

        - **Pensamiento profundo**: activa o desactiva la cadena de pensamiento
        mediante `thinking.type`, y ajusta la intensidad del razonamiento con
        `reasoning_effort`; el proceso de razonamiento se devuelve a través de
        `reasoning_content`

        - **Salida en streaming**: admite respuestas en streaming SSE
        (`stream=true`)

        - **Llamada a herramientas**: admite Function Calling, recuperación de
        base de conocimiento (retrieval), búsqueda web (web_search) y MCP (hasta
        128 herramientas)

        - **Salida estructurada**: activa el modo JSON mediante
        `response_format`


        **Notas sobre la respuesta en streaming**: cuando `stream=true`, la
        respuesta se devuelve mediante Server-Sent Events, con cada mensaje en
        el formato `data: {JSON}` y, al finalizar, se devuelve `data: [DONE]`.
        Cada bloque de datos (`ChatCompletionChunk`) contiene `id`, `created`,
        `model`, `choices` y, opcionalmente, `usage` y `content_filter`; donde
        `choices[].delta` devuelve de forma incremental `role` / `content` /
        `reasoning_content` / `tool_calls`, y `choices[].finish_reason` indica
        el motivo de finalización en el último bloque.
      operationId: createChatCompletionGLM52
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
            examples:
              simple_text:
                summary: Conversación de texto de un solo turno
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: Preséntate, por favor
              multi_turn:
                summary: Conversación de múltiples turnos (comprensión del contexto)
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: ¿Qué es Python?
                    - role: assistant
                      content: Python es un lenguaje de programación de alto nivel...
                    - role: user
                      content: ¿Cuáles son sus ventajas?
              system_prompt:
                summary: Uso de indicaciones de sistema
                value:
                  model: glm-5.2
                  messages:
                    - role: system
                      content: >-
                        Eres un asistente profesional de programación en Python.
                        Responde las preguntas con un lenguaje conciso.
                    - role: user
                      content: ¿Cómo se lee un archivo?
              deep_thinking:
                summary: >-
                  Activar el pensamiento profundo y ajustar la intensidad del
                  razonamiento
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: >-
                        Un granjero tiene que cruzar un río con un lobo, una
                        oveja y una col, y solo puede llevar una cosa cada vez.
                        ¿Cómo cruza con seguridad?
                  thinking:
                    type: enabled
                  reasoning_effort: max
              disable_thinking:
                summary: Desactivar el pensamiento profundo (respuesta directa)
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: Resume la teoría de la relatividad en una frase.
                  thinking:
                    type: disabled
              function_calling:
                summary: Llamada a herramientas (Function Calling)
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: ¿Qué tiempo hace hoy en Pekín?
                  tools:
                    - type: function
                      function:
                        name: get_weather
                        description: >-
                          Consulta el clima en tiempo real de una ciudad
                          específica
                        parameters:
                          type: object
                          properties:
                            city:
                              type: string
                              description: 'Nombre de la ciudad, por ejemplo: Pekín'
                          required:
                            - city
                  tool_choice: auto
              web_search:
                summary: Activar la herramienta de búsqueda web
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: >-
                        Busca las noticias de inteligencia artificial de la
                        última semana
                  tools:
                    - type: web_search
                      web_search:
                        enable: true
                        search_engine: search_pro
                        count: 10
                        search_recency_filter: oneWeek
              json_mode:
                summary: Salida estructurada en JSON
                value:
                  model: glm-5.2
                  messages:
                    - role: system
                      content: >-
                        Devuelve la salida en formato JSON, con los dos campos
                        name y age.
                    - role: user
                      content: Juan, 28 años
                  response_format:
                    type: json_object
              streaming:
                summary: Salida en streaming (SSE)
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: Escribe un poema corto sobre la primavera
                  stream: true
      responses:
        '200':
          description: Generación de chat exitosa
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
        '400':
          description: Parámetros de solicitud no válidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 400
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Sin autenticar, token no válido o caducado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 401
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Cuota insuficiente, se requiere recarga
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 402
                  message: Insufficient quota
                  type: insufficient_quota_error
                  fallback_suggestion: https://evolink.ai/dashboard/billing
        '403':
          description: Sin permiso de acceso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 403
                  message: Access denied for this model
                  type: permission_error
                  param: model
        '404':
          description: Recurso no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 404
                  message: Specified model not found
                  type: not_found_error
                  param: model
                  fallback_suggestion: glm-5.2
        '429':
          description: Límite de frecuencia de solicitudes superado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
                  type: rate_limit_error
                  fallback_suggestion: retry after 60 seconds
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 500
                  message: Internal server error
                  type: internal_server_error
                  fallback_suggestion: try again later
        '502':
          description: Error del servicio de origen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 502
                  message: Upstream AI service unavailable
                  type: upstream_error
                  fallback_suggestion: try different model
        '503':
          description: Servicio temporalmente no disponible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 503
                  message: Service temporarily unavailable
                  type: service_unavailable_error
                  fallback_suggestion: retry after 30 seconds
components:
  schemas:
    ChatCompletionRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: >-
            Código del modelo a invocar


            - `glm-5.2`: modelo insignia más reciente, ofrece razonamiento
            complejo, contexto ultralargo y velocidad de inferencia extrema
          enum:
            - glm-5.2
          default: glm-5.2
          example: glm-5.2
        messages:
          type: array
          description: >-
            Lista de mensajes de la conversación, contiene la información de
            contexto completa de la conversación actual


            Admite cuatro roles: `system`, `user`, `assistant`, `tool`. Los
            mensajes con diferentes roles tienen distintas estructuras de
            campos; selecciona el rol correspondiente para verlas. Debe contener
            al menos 1 mensaje y no puede contener únicamente mensajes de
            sistema o del asistente.
          items:
            oneOf:
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/AssistantRequestMessage'
              - $ref: '#/components/schemas/ToolMessage'
            discriminator:
              propertyName: role
              mapping:
                system:
                  $ref: '#/components/schemas/SystemMessage'
                user:
                  $ref: '#/components/schemas/UserMessage'
                assistant:
                  $ref: '#/components/schemas/AssistantRequestMessage'
                tool:
                  $ref: '#/components/schemas/ToolMessage'
          minItems: 1
        stream:
          type: boolean
          description: >-
            Si se debe activar el modo de salida en streaming


            - `false`: el modelo genera la respuesta completa y la devuelve de
            una sola vez (predeterminado), adecuado para textos cortos y
            procesamiento por lotes

            - `true`: devuelve la respuesta en fragmentos en tiempo real
            mediante Server-Sent Events (SSE), adecuado para chat y textos
            largos; al finalizar el stream se devuelve `data: [DONE]`
          default: false
          example: false
        thinking:
          type: object
          description: Controla si se activa la cadena de pensamiento (Chain of Thought)
          properties:
            type:
              type: string
              description: >-
                Interruptor de la cadena de pensamiento


                - `enabled`: activa el pensamiento profundo (predeterminado)

                - `disabled`: desactiva el pensamiento profundo, el modelo
                responde directamente
              enum:
                - enabled
                - disabled
              default: enabled
            clear_thinking:
              type: boolean
              description: >-
                Si se debe eliminar el `reasoning_content` de los turnos
                históricos de la conversación


                - `true` (predeterminado): ignora/elimina el `reasoning_content`
                de los turnos históricos y usa solo el contenido no relacionado
                con el razonamiento (texto visible para el usuario/asistente,
                llamadas a herramientas y resultados, etc.) como contexto, lo
                que reduce la longitud del contexto y el costo

                - `false`: conserva el `reasoning_content` de los turnos
                históricos y lo proporciona al modelo junto con el contexto
                (Preserved Thinking); en este caso, debes transferir en
                `messages` el `reasoning_content` histórico de forma **completa,
                sin modificar y en el orden original**, ya que la ausencia, el
                recorte, la reescritura o el reordenamiento degradan los
                resultados o impiden que tenga efecto

                - Nota: este parámetro solo afecta al pensamiento histórico
                entre turnos, no cambia si el turno actual produce pensamiento
              default: true
              example: true
        reasoning_effort:
          type: string
          description: >-
            Controla el grado de razonamiento del modelo (capacidad exclusiva de
            GLM-5.2)


            **Notas**:

            - Solo tiene efecto cuando `thinking` está activado, predeterminado
            `max`

            - Valores de mayor a menor: `max` > `xhigh` > `high` > `medium` >
            `low` > `minimal` > `none`


            **Reglas de mapeo de GLM-5.2** (por compatibilidad con otros
            protocolos):

            - `xhigh` → equivale a `max`

            - `low` / `medium` → equivalen a `high`

            - `none` / `minimal` → renuncia al pensamiento (no realiza
            razonamiento profundo)
          enum:
            - max
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
          default: max
          example: max
        do_sample:
          type: boolean
          description: >-
            Si se debe activar la estrategia de muestreo


            - `true` (predeterminado): usa `temperature` / `top_p` para el
            muestreo aleatorio, con una salida más variada

            - `false`: siempre selecciona la palabra de mayor probabilidad
            (decodificación voraz), con una salida más determinista; en este
            caso, `temperature` y `top_p` se ignoran


            Para tareas que requieren coherencia y reproducibilidad (como la
            generación de código o la traducción), se recomienda establecerlo en
            `false`
          default: true
          example: true
        temperature:
          type: number
          format: float
          description: >-
            Temperatura de muestreo, controla la aleatoriedad y la creatividad
            de la salida


            **Notas**:

            - Rango: `[0.0, 1.0]`, limitado a dos decimales

            - Valores más altos (p. ej. 0.8): más aleatorio y creativo, adecuado
            para la escritura creativa

            - Valores más bajos (p. ej. 0.2): más estable y determinista,
            adecuado para preguntas factuales y generación de código

            - Valor predeterminado de GLM-5.2: `1.0`


            **Recomendación**: no ajustes `temperature` y `top_p`
            simultáneamente
          minimum: 0
          maximum: 1
          default: 1
          example: 1
        top_p:
          type: number
          format: float
          description: >-
            Parámetro de muestreo por núcleo (Nucleus Sampling), es una
            alternativa al muestreo por `temperature`


            **Notas**:

            - Rango: `[0.01, 1.0]`, limitado a dos decimales

            - El modelo solo considera los tokens candidatos cuya probabilidad
            acumulada alcanza `top_p`; por ejemplo, 0.1 significa considerar
            solo los tokens del primer 10 % de probabilidad

            - Los valores más pequeños producen una salida más enfocada y
            coherente; los valores más grandes aumentan la diversidad

            - Valor predeterminado de GLM-5.2: `0.95`


            **Recomendación**: no ajustes `temperature` y `top_p`
            simultáneamente
          minimum: 0.01
          maximum: 1
          default: 0.95
          example: 0.95
        max_tokens:
          type: integer
          description: >-
            Límite máximo del número de tokens de salida del modelo


            **Notas**:

            - GLM-5.2 admite una longitud de salida máxima de **131,072 tokens**
            (128K), se recomienda establecer no menos de `1024`

            - Cuando `thinking` está activado, los tokens de la cadena de
            pensamiento también cuentan para este límite

            - Si la generación se interrumpe por el motivo `length`, intenta
            aumentar este valor
          minimum: 1
          maximum: 131072
          example: 1024
        tools:
          type: array
          description: >-
            Lista de herramientas que el modelo puede invocar


            **Notas**:

            - Admite llamada a funciones (`function`), recuperación de base de
            conocimiento (`retrieval`), búsqueda web (`web_search`) y MCP
            (`mcp`)

            - Admite hasta 128 funciones
          items:
            oneOf:
              - $ref: '#/components/schemas/FunctionTool'
              - $ref: '#/components/schemas/RetrievalTool'
              - $ref: '#/components/schemas/WebSearchTool'
              - $ref: '#/components/schemas/McpTool'
            discriminator:
              propertyName: type
              mapping:
                function:
                  $ref: '#/components/schemas/FunctionTool'
                retrieval:
                  $ref: '#/components/schemas/RetrievalTool'
                web_search:
                  $ref: '#/components/schemas/WebSearchTool'
                mcp:
                  $ref: '#/components/schemas/McpTool'
          maxItems: 128
        tool_choice:
          type: string
          description: >-
            Controla la forma en que el modelo elige qué función invocar


            **Notas**: solo tiene efecto cuando el tipo de herramienta es
            `function`, y de forma predeterminada solo admite `auto` (el modelo
            decide automáticamente si invoca una herramienta)
          enum:
            - auto
          default: auto
          example: auto
        stop:
          type: array
          description: >-
            Lista de palabras de parada


            **Notas**:

            - Cuando el texto generado por el modelo encuentra la cadena
            especificada, detiene la generación de inmediato (la palabra de
            parada en sí no se incluye en el texto devuelto)

            - Actualmente solo se admite una única palabra de parada, con el
            formato `["stop_word1"]`, por ejemplo `["Human:"]`
          items:
            type: string
          maxItems: 4
          example:
            - 'Human:'
        response_format:
          type: object
          description: >-
            Especifica el formato de salida de la respuesta del modelo,
            predeterminado `text`


            **Notas**:

            - `{ "type": "json_object" }` activa el modo JSON, y el modelo
            devuelve datos en formato JSON válido, adecuado para escenarios como
            la extracción de datos estructurados

            - Al usar el modo JSON, se recomienda solicitar explícitamente la
            salida en JSON en el mensaje `system` o `user`
          required:
            - type
          properties:
            type:
              type: string
              description: |-
                Tipo de formato de salida

                - `text`: salida de texto plano (predeterminado)
                - `json_object`: salida en formato JSON
              enum:
                - text
                - json_object
              default: text
        request_id:
          type: string
          description: >-
            Identificador único de la solicitud


            **Notas**:

            - Lo transfiere el cliente, con una longitud de 6 a 64 caracteres;
            se recomienda usar el formato UUID para garantizar la unicidad

            - Si no se proporciona, la plataforma lo genera automáticamente
          minLength: 6
          maxLength: 64
          example: req-7f3a2c1e8b9d4f0a
        user_id:
          type: string
          description: >-
            Identificador único del usuario final


            **Notas**: longitud de 6 a 128 caracteres; se recomienda usar un
            identificador único que no contenga información sensible, lo que
            ayuda a la plataforma a supervisar y detectar comportamientos
            abusivos
          minLength: 6
          maxLength: 128
          example: user-abc123456
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
          description: '`ID` de la tarea'
          example: chatcmpl-a6613b56-c61c-94ba-9a9f-43d4cdc7d77a
        object:
          type: string
          description: Tipo de respuesta
          enum:
            - chat.completion
          example: chat.completion
        request_id:
          type: string
          description: >-
            `ID` de la solicitud (se devuelve cuando se proporciona `request_id`
            en la solicitud)
          example: req-7f3a2c1e8b9d4f0a
        created:
          type: integer
          description: Hora de creación de la solicitud, marca de tiempo `Unix` (segundos)
          example: 1777021417
        model:
          type: string
          description: Nombre del modelo
          example: glm-5.2
        choices:
          type: array
          description: Lista de respuestas del modelo
          items:
            $ref: '#/components/schemas/Choice'
        usage:
          $ref: '#/components/schemas/Usage'
        web_search:
          type: array
          description: >-
            Información relacionada con la búsqueda web, se devuelve al usar la
            herramienta `web_search` y obtener resultados de búsqueda
          items:
            $ref: '#/components/schemas/WebSearchResult'
        content_filter:
          type: array
          description: Información relacionada con la seguridad del contenido
          items:
            $ref: '#/components/schemas/ContentFilter'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: Código de error de estado HTTP
            message:
              type: string
              description: Descripción del error
            type:
              type: string
              description: Tipo de error
            param:
              type: string
              description: Nombre del parámetro relacionado
            fallback_suggestion:
              type: string
              description: Sugerencia en caso de error
    SystemMessage:
      title: System Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - system
          description: Identificador de rol, fijo como `system`
        content:
          type: string
          description: >-
            Contenido de la indicación de sistema, usado para definir el rol y
            el comportamiento de la IA
    UserMessage:
      title: User Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - user
          description: Identificador de rol, fijo como `user`
        content:
          type: string
          description: Contenido del mensaje del usuario (cadena de texto plano)
    AssistantRequestMessage:
      title: Assistant Message
      type: object
      description: Mensaje del asistente, puede contener llamadas a herramientas
      required:
        - role
      properties:
        role:
          type: string
          enum:
            - assistant
          description: Identificador de rol, fijo como `assistant`
        content:
          type:
            - string
            - 'null'
          description: >-
            Contenido del mensaje del asistente


            **Notas**: se usa para pasar respuestas históricas del asistente en
            conversaciones de múltiples turnos; cuando hay `tool_calls`,
            normalmente es `null`
        reasoning_content:
          type:
            - string
            - 'null'
          description: >-
            Contenido de la cadena de pensamiento histórica


            **Notas**: solo se necesita cuando `thinking.clear_thinking=false`
            (Preserved Thinking), y consiste en devolver tal cual el
            `reasoning_content` de la respuesta del turno anterior; de forma
            predeterminada (`clear_thinking=true`) no es necesario devolverlo
        tool_calls:
          type: array
          description: >-
            Lista de llamadas a herramientas


            Se usa para pasar información histórica de llamadas a herramientas
            en conversaciones de múltiples turnos; cuando se proporciona este
            campo, `content` normalmente está vacío
          items:
            type: object
            required:
              - id
              - type
            properties:
              id:
                type: string
                description: ID de la llamada a la herramienta
              type:
                type: string
                enum:
                  - function
                  - web_search
                  - retrieval
                description: Tipo de herramienta
              function:
                type: object
                description: >-
                  Información de la llamada a la función, no está vacía cuando
                  `type` es `function`
                required:
                  - name
                  - arguments
                properties:
                  name:
                    type: string
                    description: Nombre de la función
                  arguments:
                    type: string
                    description: Argumentos de la función (cadena en formato JSON)
    ToolMessage:
      title: Tool Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - tool
          description: Identificador de rol, fijo como `tool`
        content:
          type: string
          description: Contenido del resultado devuelto por la llamada a la herramienta
        tool_call_id:
          type: string
          description: >-
            Indica el `ID` de la llamada a la herramienta a la que corresponde
            este mensaje (corresponde al `id` devuelto en `tool_calls` del
            mensaje assistant)
    FunctionTool:
      title: Herramienta Function
      type: object
      required:
        - type
        - function
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - function
          default: function
          description: Tipo de herramienta, fijo como `function`
        function:
          type: object
          required:
            - name
            - description
            - parameters
          properties:
            name:
              type: string
              description: >-
                Nombre de la función a invocar


                **Notas**: debe estar compuesto por caracteres `a-z`, `A-Z`,
                `0-9`, o incluir guiones bajos y guiones; longitud máxima de 64
                caracteres
              minLength: 1
              maxLength: 64
              pattern: ^[a-zA-Z0-9_-]+$
            description:
              type: string
              description: >-
                Descripción de la funcionalidad de la función, para que el
                modelo decida cuándo y cómo invocarla
            parameters:
              type: object
              description: >-
                Parámetros de entrada de la función, descritos como un objeto
                JSON Schema
    RetrievalTool:
      title: Herramienta Retrieval (recuperación de base de conocimiento)
      type: object
      required:
        - type
        - retrieval
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - retrieval
          default: retrieval
          description: Tipo de herramienta, fijo como `retrieval`
        retrieval:
          type: object
          required:
            - knowledge_id
          properties:
            knowledge_id:
              type: string
              description: >-
                `ID` de la base de conocimiento, creado u obtenido desde la
                plataforma
            prompt_template:
              type: string
              description: >-
                Plantilla de indicación para la solicitud al modelo, una
                plantilla personalizada que contiene los marcadores de posición
                `{{ knowledge }}` y `{{ question }}`; si no se transfiere, se
                usa la plantilla predeterminada
    WebSearchTool:
      title: Herramienta Web Search (búsqueda web)
      type: object
      required:
        - type
        - web_search
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - web_search
          default: web_search
          description: Tipo de herramienta, fijo como `web_search`
        web_search:
          type: object
          required:
            - search_engine
          properties:
            enable:
              type: boolean
              description: >-
                Si se debe activar la función de búsqueda; al activarla,
                establécela en `true`
              default: false
            search_engine:
              type: string
              description: Tipo de motor de búsqueda, predeterminado `search_std`
              enum:
                - search_std
                - search_pro
                - search_pro_sogou
                - search_pro_quark
            search_query:
              type: string
              description: >-
                Palabras clave personalizadas que fuerzan la activación de la
                búsqueda
            search_intent:
              type: string
              description: >-
                Si se debe realizar el reconocimiento de la intención de
                búsqueda, se ejecuta de forma predeterminada


                - `true`: ejecuta el reconocimiento de la intención de búsqueda
                y, si hay intención de búsqueda, realiza la búsqueda

                - `false`: omite el reconocimiento de intención y ejecuta la
                búsqueda directamente
            count:
              type: integer
              description: >-
                Número de resultados devueltos, rango `1-50`, predeterminado
                `10` (admitido por `search_std` / `search_pro` /
                `search_pro_sogou`)
              minimum: 1
              maximum: 50
              default: 10
            search_domain_filter:
              type: string
              description: >-
                Lista blanca de dominios que limita los resultados de búsqueda
                (p. ej. `www.example.com`)
            search_recency_filter:
              type: string
              description: >-
                Limita el rango temporal de los resultados de búsqueda,
                predeterminado `noLimit`
              enum:
                - oneDay
                - oneWeek
                - oneMonth
                - oneYear
                - noLimit
              default: noLimit
            content_size:
              type: string
              description: >-
                Controla la cantidad de palabras del resumen de la página web,
                predeterminado `medium`


                - `medium`: devuelve información de resumen, suficiente para las
                necesidades básicas de razonamiento

                - `high`: maximiza el contexto, con información más detallada
              enum:
                - medium
                - high
              default: medium
            result_sequence:
              type: string
              description: >-
                Posición en la que se devuelven los resultados de búsqueda
                (antes o después de la respuesta del modelo), predeterminado
                `after`
              enum:
                - before
                - after
              default: after
            search_result:
              type: boolean
              description: >-
                Si se debe devolver la información detallada de las fuentes de
                búsqueda, predeterminado `false`
              default: false
            require_search:
              type: boolean
              description: >-
                Si se debe forzar que la respuesta se base en los resultados de
                búsqueda, predeterminado `false`
              default: false
            search_prompt:
              type: string
              description: >-
                `Prompt` para personalizar el procesamiento de los resultados de
                búsqueda; si no se transfiere, se usa la plantilla
                predeterminada
    McpTool:
      title: Herramienta MCP
      type: object
      required:
        - type
        - mcp
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - mcp
          default: mcp
          description: Tipo de herramienta, fijo como `mcp`
        mcp:
          type: object
          required:
            - server_label
          properties:
            server_label:
              type: string
              description: >-
                Identificador del servidor MCP; al conectar con un servidor MCP
                integrado en la plataforma, introduce el mcp code
                correspondiente y no es necesario rellenar `server_url`
            server_url:
              type: string
              description: Dirección del servidor MCP
            transport_type:
              type: string
              description: Tipo de transporte
              enum:
                - sse
                - streamable-http
              default: streamable-http
            allowed_tools:
              type: array
              description: Conjunto de herramientas cuya invocación está permitida
              items:
                type: string
            headers:
              type: object
              description: Información de autenticación que requiere el servidor MCP
    Choice:
      type: object
      properties:
        index:
          type: integer
          description: Índice del resultado
          example: 0
        message:
          $ref: '#/components/schemas/AssistantMessage'
        finish_reason:
          type: string
          description: >-
            Motivo de finalización del razonamiento


            - `stop`: finalización natural o activación de una palabra de parada

            - `tool_calls`: el modelo invocó una función (llamada a herramienta)

            - `length`: se alcanzó el límite de longitud de tokens

            - `sensitive`: el contenido fue bloqueado por la auditoría de
            seguridad (evalúa y decide si retirar el contenido público)

            - `network_error`: anomalía en el razonamiento del modelo

            - `model_context_window_exceeded`: se superó la ventana de contexto
            del modelo
          enum:
            - stop
            - tool_calls
            - length
            - sensitive
            - network_error
            - model_context_window_exceeded
          example: stop
    Usage:
      type: object
      description: Estadísticas de uso de tokens devueltas al finalizar la llamada
      properties:
        prompt_tokens:
          type: integer
          description: Número de tokens de la entrada del usuario
          example: 24
        completion_tokens:
          type: integer
          description: >-
            Número de tokens de la salida (incluida la parte de la cadena de
            pensamiento `reasoning_tokens`)
          example: 346
        total_tokens:
          type: integer
          description: Número total de tokens = prompt_tokens + completion_tokens
          example: 370
        prompt_tokens_details:
          type: object
          description: Desglose detallado de los tokens de entrada
          properties:
            cached_tokens:
              type: integer
              description: Número de tokens que acertaron en caché
              example: 0
        completion_tokens_details:
          type: object
          description: Desglose detallado de los tokens de salida
          properties:
            reasoning_tokens:
              type: integer
              description: >-
                Número de tokens producidos por la cadena de pensamiento
                (pensamiento profundo), contabilizados en `completion_tokens`
              example: 321
    WebSearchResult:
      type: object
      description: Resultado individual de la búsqueda web
      properties:
        icon:
          type: string
          description: Icono del sitio web de origen
        title:
          type: string
          description: Título del resultado de búsqueda
        link:
          type: string
          description: Enlace de la página web del resultado de búsqueda
        media:
          type: string
          description: >-
            Nombre de la fuente del medio de la página web del resultado de
            búsqueda
        publish_date:
          type: string
          description: Fecha de publicación del sitio web
        content:
          type: string
          description: Contenido de texto citado de la página web del resultado de búsqueda
        refer:
          type: string
          description: Número del superíndice
    ContentFilter:
      type: object
      description: Información de seguridad del contenido
      properties:
        role:
          type: string
          description: |-
            Etapa en la que se aplica la seguridad

            - `assistant`: razonamiento del modelo
            - `user`: entrada del usuario
            - `history`: contexto histórico
          enum:
            - assistant
            - user
            - history
        level:
          type: integer
          description: Grado de gravedad `0-3`, `0` indica el más grave y `3` indica leve
          minimum: 0
          maximum: 3
    AssistantMessage:
      type: object
      properties:
        role:
          type: string
          description: Rol de la conversación actual, predeterminado `assistant`
          enum:
            - assistant
          example: assistant
        content:
          type:
            - string
            - 'null'
          description: >-
            Contenido de texto de la conversación


            **Notas**: puede ser `null` al invocar herramientas (`tool_calls`);
            de lo contrario, devuelve el contenido de la respuesta del modelo
          example: >-
            ¡Hola! Soy GLM-5.2 y puedo ayudarte con conversación, razonamiento,
            redacción, código y muchas otras tareas.
        reasoning_content:
          type: string
          description: >-
            Contenido de la cadena de pensamiento


            **Notas**: se devuelve cuando `thinking` está activado, y registra
            el proceso de razonamiento del modelo
          example: Primero déjame analizar este problema...
        tool_calls:
          type: array
          description: >-
            Información de las llamadas a herramientas generadas (se devuelve
            cuando el modelo decide invocar una herramienta)
          items:
            type: object
            properties:
              id:
                type: string
                description: Identificador único de la llamada a la herramienta
              type:
                type: string
                description: Tipo de llamada a la herramienta
                enum:
                  - function
                  - mcp
              function:
                type: object
                description: >-
                  Información de la llamada a la función (incluye el nombre de
                  la función generado y los argumentos en formato JSON)
                properties:
                  name:
                    type: string
                    description: Nombre de la función generado
                  arguments:
                    type: string
                    description: >-
                      Cadena en formato JSON de los argumentos de la llamada a
                      la función; valida los argumentos antes de invocar la
                      función
              mcp:
                type: object
                description: >-
                  Parámetros de la llamada a la herramienta MCP (se devuelve
                  cuando `type=mcp`)
                properties:
                  id:
                    type: string
                    description: Identificador único de la llamada a la herramienta MCP
                  type:
                    type: string
                    description: Tipo de llamada MCP
                    enum:
                      - mcp_list_tools
                      - mcp_call
                  server_label:
                    type: string
                    description: Etiqueta del servidor MCP
                  error:
                    type: string
                    description: Información de error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Todas las API requieren autenticación con Bearer Token##


        **Obtener la API Key**:


        Visita la [Página de gestión de API
        Keys](https://evolink.ai/dashboard/keys) para obtener tu API Key


        **Añadir al encabezado de la solicitud al usarla**:

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````