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

# MiniMax-M3 - API compatible con Anthropic

> - Utiliza el protocolo Anthropic Messages para llamar al modelo MiniMax-M3
- La estructura de solicitud / respuesta se alinea con la API de Anthropic
- **Conversación multimodal**: `content` admite bloques de contenido de texto e imagen
- **Indicaciones de sistema**: se pasan mediante el campo de nivel superior `system`
- **Modo de pensamiento**: se controla mediante el objeto `thinking`; el contenido de pensamiento se devuelve a través del bloque `content[type=thinking]`
- **Salida en streaming**: flujo de eventos SSE
- **Llamada a herramientas**: compatible con el flujo `tool_use` / `tool_result` de Anthropic

<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/minimax-m3-messages.json POST /v1/messages
openapi: 3.1.0
info:
  title: Interfaz de MiniMax-M3 compatible con Anthropic
  description: >-
    Referencia completa de la API para llamar a MiniMax-M3 mediante el protocolo
    Anthropic Messages.


    **Notas de compatibilidad**:

    - Ruta: `/v1/messages` (ruta estándar de Anthropic)

    - La estructura de solicitud / respuesta se alinea con la API Anthropic
    Messages

    - Campos admitidos: `model` `messages` (obligatorios) `system` `max_tokens`
    `temperature` `top_p` `stream` `thinking` `tools` `tool_choice` `metadata`


    **Capacidades del modelo**:

    - Salida máxima: **524,288 tokens** (512K), recomendado **131,072 tokens**
    (128K)

    - Modo de pensamiento: `thinking` tiene valor predeterminado `adaptive`, el
    contenido de pensamiento se devuelve a través del bloque
    `content[type=thinking]`

    - Entrada multimodal: admite bloques de contenido de texto e imagen
  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: Messages
    description: Endpoints del protocolo Anthropic Messages
paths:
  /v1/messages:
    post:
      tags:
        - Messages
      summary: Interfaz Messages de MiniMax-M3 (compatible con Anthropic)
      description: >-
        - Utiliza el protocolo Anthropic Messages para llamar al modelo
        MiniMax-M3

        - La estructura de solicitud / respuesta se alinea con la API de
        Anthropic

        - **Conversación multimodal**: `content` admite bloques de contenido de
        texto e imagen

        - **Indicaciones de sistema**: se pasan mediante el campo de nivel
        superior `system`

        - **Modo de pensamiento**: se controla mediante el objeto `thinking`; el
        contenido de pensamiento se devuelve a través del bloque
        `content[type=thinking]`

        - **Salida en streaming**: flujo de eventos SSE

        - **Llamada a herramientas**: compatible con el flujo `tool_use` /
        `tool_result` de Anthropic
      operationId: createMessageMiniMaxM3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMessageRequest'
            examples:
              simple:
                summary: Solicitud mínima ejecutable
                value:
                  model: MiniMax-M3
                  max_tokens: 1024
                  messages:
                    - role: user
                      content: Hola, mundo
              system_prompt:
                summary: Con indicación de sistema + múltiples turnos
                value:
                  model: MiniMax-M3
                  max_tokens: 2048
                  system: Eres un editor técnico experimentado.
                  messages:
                    - role: user
                      content: Describe MiniMax-M3 en tres oraciones.
              image_understanding:
                summary: Comprensión de imágenes (bloques de contenido multimodal)
                value:
                  model: MiniMax-M3
                  max_tokens: 500
                  messages:
                    - role: user
                      content:
                        - type: text
                          text: ¿Qué hay en esta imagen?
                        - type: image
                          source:
                            type: url
                            url: https://example.com/image.jpeg
              disable_thinking:
                summary: Desactivar el modo de pensamiento
                value:
                  model: MiniMax-M3
                  max_tokens: 512
                  thinking:
                    type: disabled
                  messages:
                    - role: user
                      content: 'En una oración: ¿cuál es la capital de Japón?'
              tool_use:
                summary: Llamada a herramientas (estilo tool_use de Anthropic)
                value:
                  model: MiniMax-M3
                  max_tokens: 2048
                  messages:
                    - role: user
                      content: Consulta el clima en San Francisco y dímelo
                  tools:
                    - name: get_weather
                      description: Consulta el clima actual de una ubicación específica
                      input_schema:
                        type: object
                        properties:
                          location:
                            type: string
                            description: >-
                              Ciudad y estado/país, por ejemplo: San Francisco,
                              US
                        required:
                          - location
                  tool_choice:
                    type: auto
              streaming:
                summary: Salida en streaming (SSE)
                value:
                  model: MiniMax-M3
                  max_tokens: 1024
                  stream: true
                  messages:
                    - role: user
                      content: Escribe un poema corto sobre la primavera
      responses:
        '200':
          description: Objeto de mensaje
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              examples:
                thinking_adaptive:
                  summary: thinking adaptativo (con bloque de contenido thinking)
                  value:
                    id: 066a381bdc3c0ded310e27c9a46d16e7
                    type: message
                    role: assistant
                    model: MiniMax-M3
                    content:
                      - type: thinking
                        thinking: >-
                          El usuario pregunta por la capital de Japón, que es
                          una pregunta básica de geografía. La respuesta es
                          Tokio, la puedo dar directamente.
                        signature: 066a381bdc3c0ded310e27c9a46d16e7
                      - type: text
                        text: La capital de Japón es **Tokio**.
                    stop_reason: end_turn
                    usage:
                      input_tokens: 7
                      output_tokens: 77
                      cache_creation_input_tokens: 0
                      cache_read_input_tokens: 0
                tool_use:
                  summary: Llamada a herramienta activada (stop_reason=tool_use)
                  value:
                    id: 066a381bdc3c0ded310e27c9a46d16e8
                    type: message
                    role: assistant
                    model: MiniMax-M3
                    content:
                      - type: text
                        text: >-
                          Claro, voy a consultar el clima en San Francisco para
                          ti.
                      - type: tool_use
                        id: toolu_01abc123xyz
                        name: get_weather
                        input:
                          location: San Francisco, US
                    stop_reason: tool_use
                    usage:
                      input_tokens: 35
                      output_tokens: 68
                      cache_creation_input_tokens: 0
                      cache_read_input_tokens: 0
        '400':
          description: Parámetros de solicitud no válidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                request_id: req_xxx
                error:
                  type: invalid_request_error
                  message: Invalid request
        '401':
          description: Error de autenticación
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                error:
                  type: authentication_error
                  message: Authentication error
        '402':
          description: Cuota insuficiente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                error:
                  type: billing_error
                  message: Insufficient quota
        '403':
          description: Error de permisos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                error:
                  type: permission_error
                  message: Permission denied
        '404':
          description: Modelo o recurso no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                error:
                  type: not_found_error
                  message: Model not found
        '429':
          description: Límite de frecuencia superado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                type: error
                error:
                  type: rate_limit_error
                  message: Rate limited
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Puerta de enlace no válida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Servicio temporalmente no disponible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CreateMessageRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: Modelo a llamar
          enum:
            - MiniMax-M3
          example: MiniMax-M3
        max_tokens:
          type: integer
          description: >-
            Límite superior de la longitud del contenido generado (en tokens)


            **Notas**:

            - MiniMax-M3 recomendado **131,072** (128K), máximo **524,288**
            (512K)

            - Los tokens generados por el pensamiento también cuentan para este
            límite

            - El contenido que supere el límite se truncará; si la generación se
            interrumpe por `length`, intenta aumentar este valor
          minimum: 1
          maximum: 524288
          example: 1024
        messages:
          type: array
          description: >-
            Lista de mensajes de la conversación, alternando turnos de user /
            assistant


            **Notas**:

            - Debe contener al menos 1 mensaje

            - El último mensaje normalmente es `role=user`
          items:
            $ref: '#/components/schemas/InputMessage'
          minItems: 1
        system:
          description: >-
            Indicación de sistema, usada para definir el rol y el comportamiento
            de la IA


            **Notas**:

            - Admite una cadena o un arreglo de cadenas

            - Se pasa mediante el campo `system` de nivel superior
          oneOf:
            - type: string
              example: You are a helpful assistant.
            - type: array
              description: >-
                Indicación de sistema en formato de arreglo de bloques de
                contenido. Los bloques de texto pueden incluir cache_control
              items:
                type: object
                required:
                  - type
                  - text
                properties:
                  type:
                    type: string
                    enum:
                      - text
                  text:
                    type: string
                  cache_control:
                    $ref: '#/components/schemas/CacheControl'
        temperature:
          type: number
          description: >-
            Temperatura de muestreo


            **Notas**:

            - Rango: `[0, 2]`

            - Predeterminado 1; los valores más altos producen una salida más
            divergente, los más bajos producen una salida más determinista
          minimum: 0
          maximum: 2
          default: 1
          example: 1
        top_p:
          type: number
          description: |-
            Umbral de muestreo por núcleo

            **Notas**:
            - Rango: `[0, 1]`, MiniMax-M3 predeterminado 0.95
            - Se recomienda no ajustar temperature y top_p simultáneamente
          minimum: 0
          maximum: 1
          default: 0.95
          example: 0.95
        stream:
          type: boolean
          description: >-
            Si se debe devolver mediante streaming SSE


            - `true`: respuesta en streaming Server-Sent Events

            - `false`: espera la respuesta completa antes de devolverla
            (predeterminado)
          default: false
          example: false
        thinking:
          type: object
          description: >-
            Controla el pensamiento profundo. Cuando el pensamiento está
            habilitado, los bloques de pensamiento deben devolverse sin
            modificaciones en las conversaciones de múltiples turnos


            **Notas**:

            - **Valor predeterminado `adaptive`**: el modelo decide de forma
            adaptativa si realiza un pensamiento profundo según la dificultad
            del problema

            - Cuando está habilitado, el arreglo `content` de la respuesta
            incluirá un bloque de razonamiento `type="thinking"` (facturado como
            tokens de salida)
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - disabled
                - adaptive
              description: >-
                - `adaptive`: el modelo decide de forma autónoma si se necesita
                pensar (valor predeterminado recomendado)

                - `disabled`: desactiva el pensamiento y responde directamente
              default: adaptive
        tools:
          type: array
          description: |-
            Lista de definiciones de herramientas

            **Notas**:
            - Sigue la especificación de definición de herramientas de Anthropic
            - `input_schema` usa un objeto JSON Schema
          items:
            $ref: '#/components/schemas/Tool'
        tool_choice:
          type: object
          description: Estrategia de selección de herramientas. Solo se admiten auto y none
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - auto
                - none
              description: >-
                - `auto`: el modelo decide automáticamente si llama a una
                herramienta (predeterminado cuando se proporcionan herramientas)

                - `none`: prohíbe las llamadas a herramientas
        metadata:
          type: object
          description: Metadatos de la solicitud
          properties:
            user_id:
              type: string
              description: >-
                Identificador único que representa al usuario final, puede
                usarse para monitoreo por usuario y detección de abuso (se
                recomienda usar un ID con hash)
    MessageResponse:
      type: object
      description: Respuesta de mensaje al estilo de Anthropic
      properties:
        id:
          type: string
          description: ID único del mensaje
        type:
          type: string
          enum:
            - message
          description: Tipo de objeto de respuesta
        role:
          type: string
          enum:
            - assistant
        model:
          type: string
          description: Modelo realmente utilizado
          example: MiniMax-M3
        content:
          type: array
          description: >-
            Lista de bloques de contenido de la respuesta


            **Tipos de bloque posibles**:

            - `thinking`: proceso de razonamiento (solo cuando el pensamiento
            está activo)

            - `text`: texto de la respuesta final

            - `tool_use`: llamada a herramienta iniciada por el modelo
          items:
            $ref: '#/components/schemas/OutputContentBlock'
        stop_reason:
          type: string
          description: |-
            Razón de parada

            - `end_turn`: finalización natural
            - `max_tokens`: se alcanzó el límite de max_tokens
            - `tool_use`: el modelo activó una llamada a herramienta
          enum:
            - end_turn
            - max_tokens
            - tool_use
        usage:
          $ref: '#/components/schemas/AnthropicUsage'
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - error
        error:
          type: object
          properties:
            type:
              type: string
              description: >-
                Tipo de error (p. ej. invalid_request_error /
                authentication_error / billing_error, etc.)
            message:
              type: string
              description: Descripción del error
        request_id:
          type: string
          description: ID de seguimiento de la solicitud
    InputMessage:
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - user
            - assistant
            - user_system
            - group
            - sample_message_user
            - sample_message_ai
          description: >-
            Rol del remitente del mensaje. MiniMax-M3 usa mensajes alternados de
            user / assistant


            - `user`: mensaje del usuario (también se usa para devolver bloques
            `tool_result`)

            - `assistant`: respuesta histórica del asistente (puede contener
            bloques `text` / `thinking` / `tool_use`)


            Nota: **`system` no se acepta aquí**: las indicaciones de sistema
            deben pasarse mediante el campo `system` de nivel superior.
        content:
          description: >-
            Contenido del mensaje


            **Notas**:

            - Para texto sin formato, pasa una cadena directamente

            - Para contenido estructurado, pasa un arreglo de bloques de
            contenido (`text` / `image` / `video` / `tool_use` / `tool_result` /
            `thinking`)
          oneOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ContentBlock'
    CacheControl:
      type: object
      description: Marcador de caché de indicaciones
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - ephemeral
          description: Tipo de marcador de caché
    Tool:
      type: object
      required:
        - name
        - input_schema
      properties:
        name:
          type: string
          description: |-
            Nombre de la herramienta

            **Notas**:
            - Solo se permite `a-zA-Z0-9_-`
            - Máximo 64 caracteres
        description:
          type: string
          description: >-
            Descripción de la herramienta, ayuda al modelo a determinar cuándo
            llamarla
        input_schema:
          type: object
          description: |-
            Objeto JSON Schema para los parámetros de entrada de la herramienta

            **Notas**:
            - `type` debe ser `object`
            - Debe declarar `properties` y `required`
        cache_control:
          $ref: '#/components/schemas/CacheControl'
    OutputContentBlock:
      type: object
      description: Bloque de contenido en la respuesta
      properties:
        type:
          type: string
          enum:
            - text
            - thinking
            - tool_use
        text:
          type: string
          description: Texto cuando type=`text`
        thinking:
          type: string
          description: Texto del proceso de razonamiento cuando type=`thinking`
        signature:
          type: string
          description: >-
            Firma de integridad cuando type=`thinking`, usada para la
            verificación del contexto de múltiples turnos
        id:
          type: string
          description: ID de la llamada a la herramienta cuando type=`tool_use`
        name:
          type: string
          description: Nombre de la herramienta cuando type=`tool_use`
        input:
          type: object
          description: >-
            Parámetros de entrada JSON generados por el modelo cuando
            type=`tool_use`
    AnthropicUsage:
      type: object
      description: Estadísticas de uso de tokens (especificación de Anthropic)
      properties:
        input_tokens:
          type: integer
          description: Número de tokens de entrada (parte no almacenada en caché)
          example: 7
        output_tokens:
          type: integer
          description: Número de tokens de salida (incluido el pensamiento)
          example: 77
        cache_creation_input_tokens:
          type: integer
          description: Tokens de entrada usados para la creación de caché
          example: 0
        cache_read_input_tokens:
          type: integer
          description: Tokens de entrada leídos desde la caché
          example: 0
    ContentBlock:
      type: object
      description: >-
        Bloque de contenido del mensaje


        **Tipos admitidos**:

        - `text`: contenido de texto

        - `image`: entrada de imagen (solo MiniMax-M3)

        - `video`: entrada de video (solo MiniMax-M3)

        - `tool_use`: devuelve la llamada a herramienta del asistente anterior

        - `tool_result`: resultado de la ejecución de la herramienta

        - `thinking`: devuelve el contenido de pensamiento del asistente
        anterior

        - `mid_conv_system`: instrucción de sistema a mitad de la conversación
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - text
            - image
            - video
            - tool_use
            - tool_result
            - thinking
            - mid_conv_system
        text:
          type: string
          description: Contenido de texto cuando type=`text`
        source:
          $ref: '#/components/schemas/MediaSource'
          description: >-
            Fuente de imagen o video, usada cuando type=`image` o type=`video`
            (solo MiniMax-M3)
        id:
          type: string
          description: ID de la llamada a la herramienta (obligatorio para tool_use)
        name:
          type: string
          description: Nombre de la herramienta (obligatorio para tool_use)
        input:
          type: object
          description: Parámetros de entrada de la herramienta (objeto JSON para tool_use)
        tool_use_id:
          type: string
          description: >-
            ID de la llamada a la herramienta correspondiente (obligatorio para
            tool_result, se asigna a tool_use.id)
        content:
          description: >-
            Resultado de la ejecución de la herramienta (tool_result), cadena o
            arreglo de bloques de contenido
          oneOf:
            - type: string
            - type: array
              items:
                type: object
        thinking:
          type: string
          description: >-
            Contenido del proceso de pensamiento del asistente a devolver (usado
            cuando type=`thinking`)
        signature:
          type: string
          description: >-
            Firma del contenido de pensamiento que se devuelve; debe devolverse
            sin modificaciones para la continuación de múltiples turnos
        cache_control:
          $ref: '#/components/schemas/CacheControl'
    MediaSource:
      type: object
      description: >-
        Fuente de medios para bloques de contenido de imagen o video


        - Las imágenes admiten JPEG / PNG / GIF / WEBP, máximo 10 MB por imagen

        - Los videos admiten MP4 / AVI / MOV / MKV, máximo 50 MB para URL /
        Base64
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - base64
            - url
          description: Tipo de fuente de medios
        media_type:
          type: string
          description: >-
            Obligatorio para la entrada en base64, por ejemplo `image/png` o
            `video/mp4`
        data:
          type: string
          description: Bytes de medios codificados en Base64
        url:
          type: string
          description: >-
            URL pública; los videos también pueden usar referencias de archivo
            con el formato `mm_file://{file_id}`
        detail:
          type: string
          enum:
            - low
            - default
            - high
          default: default
          description: >-
            Precisión de comprensión, valor predeterminado default. Una
            resolución más alta consume más tokens
        fps:
          type: number
          minimum: 0.2
          maximum: 5
          default: 1
          description: >-
            Frecuencia de extracción de fotogramas del video, predeterminado 1,
            rango [0.2, 5]. Los valores más altos son más sensibles a los
            cambios visuales y consumen más tokens
        max_long_side_pixel:
          type: integer
          minimum: 1
          description: >-
            Restricción máxima de píxeles para el lado más largo de las imágenes
            o los fotogramas del video
  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

        ```


        **Nota**: EvoLink utiliza de forma uniforme la autenticación con Bearer
        Token para `/v1/messages`.

````