> ## 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.

# MiniMax-M3.1-Flash - API compatible con OpenAI

> - Invoca MiniMax-M3.1-Flash mediante el protocolo Chat Completions de OpenAI
- **Conversaciones de varios turnos**: admite conversaciones de uno o varios turnos con contexto
- **Indicación de sistema**: personaliza el rol y el comportamiento de la IA mediante mensajes `role=system`
- **Entrada multimodal**: `content` puede combinar texto, imágenes y video
- **Razonamiento**: siempre activado; `reasoning_effort` controla la profundidad. El razonamiento se devuelve en `reasoning_content`; `content` solo contiene la respuesta final
- **Streaming**: admite respuestas mediante SSE
- **Herramientas**: admite Function Calling

**Respuestas en streaming**: con `stream=true`, la respuesta se transmite mediante Server-Sent Events. Cada mensaje tiene el formato `data: {JSON}` y el flujo termina con `data: [DONE]`. `choices[].delta` devuelve primero incrementos de `reasoning_content` y después de `content` / `tool_calls`. Con `stream_options.include_usage=true`, se envía un bloque adicional con `usage` antes de finalizar.

<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/minimax-m3.1-flash/minimax-m3.1-flash-chat.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: >-
    MiniMax-M3.1-Flash: referencia completa de parámetros (compatible con
    OpenAI)
  description: >-
    Referencia completa de la API de chat de MiniMax-M3.1-Flash.


    **Capacidades del modelo**:

    - Ventana de contexto: **1,000,000 tokens** (1M)

    - Salida máxima: **524,288 tokens** (512K); se recomiendan **131,072
    tokens** (128K), incluidos los tokens de razonamiento

    - Razonamiento: siempre activado; `reasoning_effort` controla la
    profundidad, con `max` como valor predeterminado

    - Entrada multimodal: texto, imágenes y video

    - Herramientas: admite Function Calling

    - Caché de contexto: los prefijos idénticos se reutilizan automáticamente;
    los tokens reutilizados se indican en
    `usage.prompt_tokens_details.cached_tokens`

    - Streaming: admite respuestas mediante SSE


    En conversaciones de varios turnos, incluye en `messages` el mensaje
    completo del asistente del turno anterior sin modificar, incluidos
    `reasoning_content` y `tool_calls`.
  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: API de chat de MiniMax-M3.1-Flash (compatible con OpenAI)
      description: >-
        - Invoca MiniMax-M3.1-Flash mediante el protocolo Chat Completions de
        OpenAI

        - **Conversaciones de varios turnos**: admite conversaciones de uno o
        varios turnos con contexto

        - **Indicación de sistema**: personaliza el rol y el comportamiento de
        la IA mediante mensajes `role=system`

        - **Entrada multimodal**: `content` puede combinar texto, imágenes y
        video

        - **Razonamiento**: siempre activado; `reasoning_effort` controla la
        profundidad. El razonamiento se devuelve en `reasoning_content`;
        `content` solo contiene la respuesta final

        - **Streaming**: admite respuestas mediante SSE

        - **Herramientas**: admite Function Calling


        **Respuestas en streaming**: con `stream=true`, la respuesta se
        transmite mediante Server-Sent Events. Cada mensaje tiene el formato
        `data: {JSON}` y el flujo termina con `data: [DONE]`. `choices[].delta`
        devuelve primero incrementos de `reasoning_content` y después de
        `content` / `tool_calls`. Con `stream_options.include_usage=true`, se
        envía un bloque adicional con `usage` antes de finalizar.
      operationId: createChatCompletionMiniMaxM31Flash
      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: MiniMax-M3.1-Flash
                  messages:
                    - role: user
                      content: Please introduce yourself.
                  max_completion_tokens: 131072
              multi_turn:
                summary: Conversación de múltiples turnos (comprensión del contexto)
                value:
                  model: MiniMax-M3.1-Flash
                  messages:
                    - role: user
                      content: What is Python?
                    - role: assistant
                      content: Python is a high-level programming language.
                    - role: user
                      content: What are its main advantages?
                  max_completion_tokens: 131072
              system_prompt:
                summary: Uso de indicaciones de sistema
                value:
                  model: MiniMax-M3.1-Flash
                  messages:
                    - role: system
                      content: >-
                        You are a Python programming assistant. Keep your
                        answers concise.
                    - role: user
                      content: How do I read a file?
                  max_completion_tokens: 131072
              reasoning_effort:
                summary: Ajuste de la profundidad de razonamiento
                value:
                  model: MiniMax-M3.1-Flash
                  reasoning_effort: high
                  messages:
                    - role: user
                      content: >-
                        A bat and a ball cost 1.10 in total. The bat costs 1.00
                        more than the ball. How much does the ball cost?
                  max_completion_tokens: 131072
              image_understanding:
                summary: Comprensión de imágenes (entrada multimodal)
                value:
                  model: MiniMax-M3.1-Flash
                  messages:
                    - role: user
                      content:
                        - type: text
                          text: What is shown in this image?
                        - type: image_url
                          image_url:
                            url: https://example.com/image.jpeg
                            detail: default
                  max_completion_tokens: 131072
              video_understanding:
                summary: Comprensión de video (entrada multimodal)
                value:
                  model: MiniMax-M3.1-Flash
                  messages:
                    - role: user
                      content:
                        - type: text
                          text: Summarize this video.
                        - type: video_url
                          video_url:
                            url: https://example.com/video.mp4
                            fps: 1
                            detail: default
                  max_completion_tokens: 131072
              tool_calling:
                summary: Function Calling (invocación de herramientas)
                value:
                  model: MiniMax-M3.1-Flash
                  messages:
                    - role: user
                      content: Check the stock for product demo-item-001.
                  tools:
                    - type: function
                      function:
                        name: get_product_stock
                        description: Get the current stock level for a product.
                        parameters:
                          type: object
                          properties:
                            product_id:
                              type: string
                              description: Product identifier.
                          required:
                            - product_id
                  max_completion_tokens: 131072
              streaming:
                summary: Salida en streaming
                value:
                  model: MiniMax-M3.1-Flash
                  stream: true
                  stream_options:
                    include_usage: true
                  messages:
                    - role: user
                      content: Write a short poem about spring.
                  max_completion_tokens: 131072
      responses:
        '200':
          description: Chat generado correctamente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
              examples:
                with_thinking:
                  summary: Respuesta con razonamiento
                  value:
                    id: 072514edea627212c7e226a55bcf4e2e
                    choices:
                      - finish_reason: stop
                        index: 0
                        message:
                          content: '0.05'
                          role: assistant
                          name: MiniMax AI
                          audio_content: ''
                          reasoning_content: >-
                            Let the ball cost x. Then 2x + 1 = 1.10, so x =
                            0.05.
                    created: 1792401901
                    model: MiniMax-M3.1-Flash
                    object: chat.completion
                    usage:
                      total_tokens: 281
                      total_characters: 0
                      prompt_tokens: 229
                      completion_tokens: 52
                      completion_tokens_details:
                        reasoning_tokens: 49
                      prompt_tokens_details:
                        cached_tokens: 187
                    input_sensitive: false
                    output_sensitive: false
                    input_sensitive_type: 0
                    output_sensitive_type: 0
                    output_sensitive_int: 0
                    base_resp:
                      status_code: 0
                      status_msg: ''
                direct_answer:
                  summary: Respuesta directa (sin contenido de razonamiento)
                  value:
                    id: 072514cc3cee91b3222f36a2a386128f
                    choices:
                      - finish_reason: stop
                        index: 0
                        message:
                          content: >-
                            Recursion is a technique in which a function calls
                            itself to solve smaller instances of a problem.
                          role: assistant
                          name: MiniMax AI
                          audio_content: ''
                    created: 1792401868
                    model: MiniMax-M3.1-Flash
                    object: chat.completion
                    usage:
                      total_tokens: 219
                      total_characters: 0
                      prompt_tokens: 208
                      completion_tokens: 11
                      prompt_tokens_details:
                        cached_tokens: 58
                    input_sensitive: false
                    output_sensitive: false
                    input_sensitive_type: 0
                    output_sensitive_type: 0
                    output_sensitive_int: 0
                    base_resp:
                      status_code: 0
                      status_msg: ''
                tool_calls:
                  summary: Llamada a herramienta activada (finish_reason=tool_calls)
                  value:
                    id: 072514ce0ad459c5ac53494746f66488
                    choices:
                      - finish_reason: tool_calls
                        index: 0
                        message:
                          content: I'll check the stock for product demo-item-001.
                          role: assistant
                          name: MiniMax AI
                          tool_calls:
                            - id: call_function_fr79bzcw7n6k_1
                              type: function
                              function:
                                name: get_product_stock
                                arguments: '{"product_id": "demo-item-001"}'
                              index: 0
                          audio_content: ''
                    created: 1792401870
                    model: MiniMax-M3.1-Flash
                    object: chat.completion
                    usage:
                      total_tokens: 483
                      total_characters: 0
                      prompt_tokens: 446
                      completion_tokens: 37
                      prompt_tokens_details:
                        cached_tokens: 227
                    input_sensitive: false
                    output_sensitive: false
                    input_sensitive_type: 0
                    output_sensitive_type: 0
                    output_sensitive_int: 0
                    base_resp:
                      status_code: 0
                      status_msg: ''
                length:
                  summary: Límite de salida alcanzado (finish_reason=length)
                  value:
                    id: 072513cf5d12aa74e53c700e4e1edf9e
                    choices:
                      - finish_reason: length
                        index: 0
                        message:
                          content: ''
                          role: assistant
                          name: MiniMax AI
                          audio_content: ''
                          reasoning_content: I need to explain the process step by step.
                    created: 1792401615
                    model: MiniMax-M3.1-Flash
                    object: chat.completion
                    usage:
                      total_tokens: 219
                      total_characters: 0
                      prompt_tokens: 211
                      completion_tokens: 8
                      completion_tokens_details:
                        reasoning_tokens: 8
                      prompt_tokens_details:
                        cached_tokens: 184
                    input_sensitive: false
                    output_sensitive: false
                    input_sensitive_type: 0
                    output_sensitive_type: 0
                    output_sensitive_int: 0
                    base_resp:
                      status_code: 0
                      status_msg: ''
        '400':
          description: Parámetros de solicitud no válidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: Invalid request parameters
                  type: invalid_request_error
                  param: ''
                  code: null
        '401':
          description: No autenticado, token no válido o expirado
          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
        '403':
          description: Acceso denegado a este modelo
          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
        '413':
          description: Cuerpo de la solicitud demasiado grande
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 413
                  message: Request body too large
                  type: request_too_large_error
                  param: messages
        '429':
          description: Límite de frecuencia superado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
                  type: rate_limit_error
        '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
        '502':
          description: Puerta de enlace no válida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 502
                  message: Bad gateway
                  type: bad_gateway_error
        '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
components:
  schemas:
    ChatCompletionRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: Nombre del modelo de chat
          enum:
            - MiniMax-M3.1-Flash
          example: MiniMax-M3.1-Flash
        messages:
          type: array
          description: >-
            Lista de mensajes de la conversación, admite diálogo de múltiples
            turnos


            Los mensajes con diferentes roles tienen distintas estructuras de
            campos; selecciona el rol correspondiente para verlas
          items:
            oneOf:
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/AssistantRequestMessage'
              - $ref: '#/components/schemas/ToolMessage'
            discriminator:
              propertyName: role
              mapping:
                system: '#/components/schemas/SystemMessage'
                user: '#/components/schemas/UserMessage'
                assistant: '#/components/schemas/AssistantRequestMessage'
                tool: '#/components/schemas/ToolMessage'
          minItems: 1
        reasoning_effort:
          type: string
          description: >-
            Profundidad de razonamiento; el valor predeterminado es `max`. Los
            niveles más altos suelen aumentar el consumo de tokens de
            razonamiento y el tiempo de respuesta.
          enum:
            - low
            - medium
            - high
            - xhigh
            - max
          default: max
          example: high
        thinking:
          type: object
          description: >-
            Modo de razonamiento. MiniMax-M3.1-Flash siempre realiza
            razonamiento. Solo admite `adaptive`; el campo es opcional.
          properties:
            type:
              type: string
              enum:
                - adaptive
              default: adaptive
        reasoning_split:
          type: boolean
          description: >-
            Indica si el razonamiento se devuelve por separado. Solo admite
            `true`; el razonamiento se devuelve en `reasoning_content`. El campo
            es opcional.
          enum:
            - true
          default: true
        temperature:
          type: number
          description: >-
            Temperatura de muestreo; controla la aleatoriedad de la salida


            **Notas**:

            - Rango `[0, 2]`; valor predeterminado: 1

            - Los valores más bajos producen respuestas más deterministas; los
            más altos, respuestas más variadas


            **Recomendación**: evita ajustar temperature y top_p al mismo tiempo
          minimum: 0
          maximum: 2
          default: 1
          example: 1
        top_p:
          type: number
          description: >-
            Parámetro de muestreo de núcleo (Nucleus Sampling)


            **Notas**:

            - Limita el muestreo al conjunto de tokens que alcanza la
            probabilidad acumulada indicada

            - Por ejemplo, 0.95 selecciona tokens del conjunto que suma el 95%
            de probabilidad acumulada

            - Rango `[0, 1]`; valor predeterminado: 0.95


            **Recomendación**: evita ajustar temperature y top_p al mismo tiempo
          minimum: 0
          maximum: 1
          default: 0.95
          example: 0.95
        max_completion_tokens:
          type: integer
          description: >-
            Límite de tokens de generación, **incluidos el razonamiento y la
            respuesta**


            **Notas**:

            - Recomendado: **131,072** (128K); máximo: **524,288** (512K)

            - Un valor demasiado bajo puede agotar el límite durante el
            razonamiento y devolver `finish_reason=length` con `content` vacío
          minimum: 1
          maximum: 524288
          example: 131072
        stream:
          type: boolean
          description: >-
            Si se debe devolver la respuesta en modo streaming


            - `true`: respuesta en streaming, devuelve el contenido en
            fragmentos en tiempo real mediante SSE (Server-Sent Events)

            - `false`: espera la respuesta completa antes de devolverla
            (predeterminado)
          default: false
          example: false
        stream_options:
          type: object
          description: |-
            Opciones de la respuesta en streaming

            Solo tiene efecto cuando `stream=true`
          properties:
            include_usage:
              type: boolean
              description: >-
                Indica si se envía un bloque adicional que solo contiene las
                estadísticas de `usage` antes de finalizar el flujo.
        tools:
          type: array
          description: >-
            Lista de definiciones de herramientas para Function Calling


            Cada herramienta requiere un nombre, una descripción y un esquema de
            parámetros
          items:
            $ref: '#/components/schemas/Tool'
        tool_choice:
          type: string
          description: >-
            Estrategia de selección de herramientas. Solo admite `auto`: el
            modelo decide si debe invocar una herramienta.
          enum:
            - auto
          default: auto
        max_tokens:
          type: integer
          description: |-
            Parámetro heredado de límite de longitud de generación

            **Nota**: obsoleto, usa `max_completion_tokens` en su lugar
          deprecated: true
          minimum: 1
        'n':
          type: integer
          description: Número de respuestas generadas. Solo admite `1`.
          enum:
            - 1
          default: 1
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
          description: Identificador único de la generación de chat
          example: 0668a381bdc3c0ded310e27c9a46d16e7
        model:
          type: string
          description: Nombre del modelo realmente utilizado
          example: MiniMax-M3.1-Flash
        object:
          type: string
          enum:
            - chat.completion
          description: Tipo de respuesta
          example: chat.completion
        created:
          type: integer
          description: Marca de tiempo de creación (segundos Unix)
          example: 1777026807
        choices:
          type: array
          description: Lista de opciones de generación de chat
          items:
            $ref: '#/components/schemas/Choice'
        usage:
          $ref: '#/components/schemas/Usage'
        input_sensitive:
          type: boolean
          description: >-
            Si el contenido de entrada activó un filtro de palabras sensibles.
            Si la entrada infringe gravemente las políticas, la API devolverá un
            error de violación de contenido con el contenido de respuesta vacío
        input_sensitive_type:
          type: integer
          description: >-
            Tipo de palabra sensible activada por la entrada (se devuelve cuando
            `input_sensitive` es true): 1 infracción grave; 2 pornografía; 3
            publicidad; 4 contenido prohibido; 5 lenguaje abusivo; 6
            violencia/terrorismo; 7 otros
        output_sensitive:
          type: boolean
          description: Si el contenido de salida activó un filtro de palabras sensibles
        output_sensitive_type:
          type: integer
          description: Tipo de palabra sensible activada por la salida
        base_resp:
          type: object
          description: Código de estado y detalles del error
          properties:
            status_code:
              type: integer
              description: >-
                Código de estado. `0` indica éxito; otros códigos incluyen
                `1002` para limitación de frecuencia, `1008` para saldo
                insuficiente, `1039` para límite de tokens superado, `2013` para
                error de parámetro, etc.
            status_msg:
              type: string
              description: Detalles del error
        output_sensitive_int:
          type: integer
          description: >-
            Identificador numérico del tipo de palabra sensible detectada en la
            salida.
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type:
                - integer
                - string
                - 'null'
              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
    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
        name:
          type: string
          description: >-
            Nombre del participante, usado para distinguir diferentes fuentes de
            indicaciones de sistema
    UserMessage:
      title: User Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - user
          description: Identificador de rol, fijo como `user`
        content:
          description: >-
            Contenido del mensaje del usuario


            **Notas**:

            - Para texto sin formato, pasa una cadena directamente

            - Para entrada multimodal, pasa un arreglo de partes de contenido:
            `text`, `image_url` (imagen) o `video_url` (video)

            - Tamaño máximo del cuerpo de la solicitud: 64 MB
          oneOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ContentPart'
        name:
          type: string
          description: Nombre del participante, usado para distinguir diferentes usuarios
    AssistantRequestMessage:
      title: Assistant Message
      type: object
      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

            - Puede ser `null` cuando hay `tool_calls` presentes
        reasoning_content:
          type: string
          description: >-
            Razonamiento devuelto en el turno anterior. En conversaciones de
            varios turnos, reenvíalo sin modificar.
        name:
          type: string
          description: Nombre del participante
        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
          items:
            type: object
            properties:
              id:
                type: string
                description: Identificador único de la llamada a la herramienta
              type:
                type: string
                enum:
                  - function
              function:
                type: object
                properties:
                  name:
                    type: string
                    description: Nombre de la función llamada
                  arguments:
                    type: string
                    description: Argumentos de la función (cadena JSON)
    ToolMessage:
      title: Tool Message
      type: object
      required:
        - role
        - content
        - tool_call_id
      properties:
        role:
          type: string
          enum:
            - tool
          description: Identificador de rol, fijo como `tool`
        content:
          type: string
          description: Contenido del resultado de la llamada a la herramienta
        tool_call_id:
          type: string
          description: >-
            ID de la llamada a la herramienta


            Corresponde al campo `id` devuelto en `tool_calls` del mensaje del
            asistente
    Tool:
      type: object
      required:
        - type
        - function
      properties:
        type:
          type: string
          enum:
            - function
          description: Tipo de herramienta, actualmente solo se admite `function`
        function:
          type: object
          required:
            - name
            - parameters
          properties:
            name:
              type: string
              description: >-
                Nombre de la función a llamar


                **Notas**:

                - Debe estar compuesto por caracteres a-z, A-Z, 0-9, o incluir
                guiones bajos y guiones

                - La longitud máxima es de 64 caracteres
            description:
              type: string
              description: >-
                Descripción de la función, ayuda al modelo a entender cuándo y
                cómo llamar a esta función
            parameters:
              type: object
              description: >-
                Parámetros de entrada de la función, descritos como un objeto
                JSON Schema
    Choice:
      type: object
      properties:
        index:
          type: integer
          description: Índice de la opción
          example: 0
        message:
          $ref: '#/components/schemas/AssistantMessage'
        finish_reason:
          type: string
          description: |-
            Razón de finalización

            - `stop`: finalización natural o secuencia de parada activada
            - `length`: se alcanzó el límite máximo de tokens
            - `content_filter`: contenido filtrado por la política de seguridad
            - `tool_calls`: el modelo invocó una herramienta
          enum:
            - stop
            - length
            - content_filter
            - tool_calls
          example: stop
    Usage:
      type: object
      description: Estadísticas de uso de tokens
      properties:
        total_tokens:
          type: integer
          description: Número total de tokens consumidos
          example: 1604
        total_characters:
          type: integer
          description: Número total de caracteres consumidos
          example: 0
        prompt_tokens:
          type: integer
          description: Total de tokens de entrada, incluidos los reutilizados de la caché.
          example: 1365
        completion_tokens:
          type: integer
          description: Número de tokens de salida (incluida la parte de razonamiento)
          example: 239
        completion_tokens_details:
          type: object
          description: Desglose detallado de los tokens de salida
          properties:
            reasoning_tokens:
              type: integer
              description: Número de tokens generados durante el razonamiento.
              example: 49
        prompt_tokens_details:
          type: object
          description: Desglose detallado de los tokens de entrada
          properties:
            cached_tokens:
              type: integer
              description: >-
                Número de tokens de entrada reutilizados de la caché


                Los tokens reutilizados se facturan a la tarifa de acierto de
                caché. Los restantes = `prompt_tokens - cached_tokens` se
                facturan a la tarifa estándar de entrada.
              example: 114
    ContentPart:
      type: object
      description: >-
        Parte de contenido multimodal. Declara el tipo mediante `type` y
        completa únicamente los campos que coincidan con ese tipo
      properties:
        type:
          type: string
          enum:
            - text
            - image_url
            - video_url
          description: |-
            Tipo de contenido

            - `text`: bloque de texto
            - `image_url`: entrada de imagen
            - `video_url`: entrada de video
        text:
          type: string
          description: Contenido de texto cuando `type=text`
        image_url:
          type: object
          description: >-
            Entrada de imagen (cuando `type=image_url`). Máximo 10 MB por
            imagen, admite JPEG / PNG / GIF / WEBP
          required:
            - url
          properties:
            url:
              type: string
              description: URL de la imagen, o un data URL base64 que empiece por `data:`
            detail:
              type: string
              description: >-
                Controla la resolución de análisis de la imagen


                - `low`: baja precisión, consume menos tokens

                - `default`: precisión predeterminada

                - `high`: alta precisión, reconoce más detalles pero consume más
                tokens
              enum:
                - low
                - default
                - high
              default: default
            max_long_side_pixel:
              type: integer
              description: Límite máximo de píxeles para el lado más largo de la imagen
              minimum: 1
        video_url:
          type: object
          description: >-
            Entrada de video (cuando `type=video_url`). Máximo 50 MB para video
            por URL / Base64, admite MP4 / AVI / MOV / MKV
          required:
            - url
          properties:
            url:
              type: string
              description: >-
                URL del video, una data URL en base64 que comienza con `data:`,
                o una referencia de archivo con el formato `mm_file://{file_id}`
            detail:
              type: string
              description: Controla la resolución de extracción de fotogramas del video
              enum:
                - low
                - default
                - high
              default: default
            fps:
              type: number
              description: >-
                Frecuencia de extracción de fotogramas de video; valor
                predeterminado: 1, rango: [0.2, 5]. Una frecuencia mayor permite
                captar mejor los cambios en la imagen y suele aumentar el
                consumo de tokens.
              minimum: 0.2
              maximum: 5
              default: 1
            max_long_side_pixel:
              type: integer
              description: >-
                Límite máximo de píxeles para el lado más largo de los
                fotogramas del video
              minimum: 1
    AssistantMessage:
      type: object
      properties:
        role:
          type: string
          description: Rol del remitente del mensaje
          enum:
            - assistant
          example: assistant
        content:
          type:
            - string
            - 'null'
          description: >-
            Respuesta final, sin el proceso de razonamiento. Puede ser `null`
            cuando se invoca una herramienta.
          example: '0.05'
        reasoning_content:
          type: string
          description: >-
            Contenido de razonamiento. Las preguntas sencillas pueden no generar
            razonamiento; en ese caso, este campo se omite.
          example: Let the ball cost x. Then 2x + 1 = 1.10, so x = 0.05.
        name:
          type: string
          description: Nombre del remitente
        audio_content:
          type: string
          description: >-
            Contenido de audio (cadena vacía en escenarios de conversación solo
            de texto)
        tool_calls:
          type: array
          description: >-
            Lista de llamadas a herramientas (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
                enum:
                  - function
              function:
                type: object
                properties:
                  name:
                    type: string
                    description: Nombre de la función llamada
                  arguments:
                    type: string
                    description: Argumentos de la función (cadena JSON)
              index:
                type: integer
                description: Índice de la llamada a la herramienta
  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:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.