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

# Kimi K3 - API compatible con OpenAI

> Llama a `kimi-k3` mediante OpenAI Chat Completions. Admite JSON sin streaming y respuestas SSE en streaming. K3 siempre razona y `reasoning_effort` solo admite actualmente `max`.

<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/kimi-k3/kimi-k3-chat.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: Kimi K3 - API compatible con OpenAI
  description: >-
    Llama a Kimi K3 mediante el protocolo OpenAI Chat Completions.


    **Capacidades confirmadas para la versión inicial**:

    - ID del modelo: `kimi-k3`

    - Ventana de contexto: 1.048.576 tokens

    - K3 siempre razona y devuelve el razonamiento mediante `reasoning_content`

    - `reasoning_effort` solo admite actualmente `max`

    - Admite conversaciones de varios turnos, streaming SSE y Function Calling


    En conversaciones de varios turnos, incluye en `messages` el mensaje
    completo del assistant de la ronda anterior, 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: Chat Completions
    description: API compatible con OpenAI Chat Completions
paths:
  /v1/chat/completions:
    post:
      tags:
        - Chat Completions
      summary: API de chat Kimi K3 (compatible con OpenAI)
      description: >-
        Llama a `kimi-k3` mediante OpenAI Chat Completions. Admite JSON sin
        streaming y respuestas SSE en streaming. K3 siempre razona y
        `reasoning_effort` solo admite actualmente `max`.
      operationId: createChatCompletionKimiK3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
            examples:
              simple:
                summary: Solicitud mínima
                value:
                  model: kimi-k3
                  messages:
                    - role: user
                      content: Presenta Kimi K3 en tres frases.
              streaming:
                summary: Salida en streaming con uso
                value:
                  model: kimi-k3
                  messages:
                    - role: user
                      content: Escribe un poema corto sobre una noche de verano.
                  stream: true
                  stream_options:
                    include_usage: true
              tool_calling:
                summary: Function Calling
                value:
                  model: kimi-k3
                  messages:
                    - role: user
                      content: Consulta el tiempo de hoy en Pekín.
                  tools:
                    - type: function
                      function:
                        name: get_weather
                        description: Consultar el tiempo de una ciudad determinada
                        parameters:
                          type: object
                          properties:
                            city:
                              type: string
                              description: Nombre de la ciudad
                          required:
                            - city
                  tool_choice: auto
      responses:
        '200':
          description: >-
            Respuesta de chat completion; las solicitudes en streaming devuelven
            un flujo de eventos SSE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
            text/event-stream:
              schema:
                type: string
                description: >-
                  Datos SSE en formato OpenAI Chat Completions, finalizados con
                  `data: [DONE]`.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ChatCompletionRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          enum:
            - kimi-k3
          description: ID del modelo.
        messages:
          type: array
          minItems: 1
          description: >-
            Mensajes de la conversación. En conversaciones de varios turnos,
            incluye los mensajes históricos completos del assistant.
          items:
            $ref: '#/components/schemas/ChatMessage'
        max_completion_tokens:
          type: integer
          minimum: 1
          maximum: 1048576
          default: 131072
          description: >-
            Número máximo de tokens permitidos para el contenido generado. El
            valor predeterminado de Kimi K3 es 131.072 y el máximo es 1.048.576.
            Los tokens de razonamiento cuentan para este límite.
        reasoning_effort:
          type: string
          enum:
            - max
          default: max
          description: >-
            Esfuerzo de razonamiento. Kimi K3 siempre razona y actualmente solo
            admite `max`.
        stream:
          type: boolean
          default: false
          description: Indica si la respuesta se devuelve como flujo SSE.
        stream_options:
          $ref: '#/components/schemas/StreamOptions'
          description: >-
            Opciones de respuesta en streaming. Solo se aplican cuando
            `stream=true` y no cambian el precio ni la cantidad de tokens
            generados.
        tools:
          type: array
          maxItems: 128
          description: Funciones que el modelo puede llamar.
          items:
            $ref: '#/components/schemas/FunctionTool'
        tool_choice:
          oneOf:
            - type: string
              enum:
                - auto
                - none
                - required
            - $ref: '#/components/schemas/NamedToolChoice'
          description: >-
            Controla si el modelo llama a herramientas o fuerza una función
            concreta.
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          example: chat.completion
        created:
          type: integer
        model:
          type: string
          example: kimi-k3
        choices:
          type: array
          items:
            type: object
            properties:
              index:
                type: integer
              message:
                $ref: '#/components/schemas/ChatMessage'
              finish_reason:
                type: string
                enum:
                  - stop
                  - length
                  - tool_calls
        usage:
          $ref: '#/components/schemas/ChatUsage'
    ChatMessage:
      type: object
      required:
        - role
      properties:
        role:
          type: string
          description: 'Rol del mensaje: system, user, assistant o tool.'
          enum:
            - system
            - user
            - assistant
            - tool
        content:
          type:
            - string
            - 'null'
          description: >-
            Texto del mensaje. El contenido del assistant puede ser null al
            devolver una llamada de herramienta.
        reasoning_content:
          type: string
          description: >-
            Contenido de razonamiento del assistant. Devuélvelo sin cambios como
            parte del mensaje completo del assistant en conversaciones de varios
            turnos.
        tool_calls:
          type: array
          description: >-
            Llamadas de herramienta devueltas por el assistant. Devuélvelas sin
            cambios en turnos posteriores.
          items:
            $ref: '#/components/schemas/ToolCall'
        tool_call_id:
          type: string
          description: ID de la llamada de herramienta correspondiente cuando `role=tool`.
    StreamOptions:
      type: object
      properties:
        include_usage:
          type: boolean
          default: false
          description: >-
            Si es true, devuelve al cliente un bloque final de uso antes de
            `[DONE]`. Esta opción solo controla si el cliente recibe ese bloque
            y no añade tokens facturables ni cambia los precios.
    FunctionTool:
      type: object
      required:
        - type
        - function
      properties:
        type:
          type: string
          description: Tipo de herramienta. Actualmente fijado en function.
          enum:
            - function
        function:
          type: object
          description: Definición de función disponible para el modelo.
          required:
            - name
            - parameters
          properties:
            name:
              type: string
              description: Nombre de la función.
            description:
              type: string
              description: >-
                Descripción que ayuda al modelo a decidir cuándo llamar a la
                función.
            parameters:
              type: object
              additionalProperties: true
              description: Definición de parámetros de la función en formato JSON Schema.
            strict:
              type: boolean
              description: >-
                Indica si los argumentos deben seguir estrictamente el JSON
                Schema de parameters.
    NamedToolChoice:
      type: object
      required:
        - type
        - function
      properties:
        type:
          type: string
          description: 'Tipo de selección de herramienta con nombre. Valor fijo: function.'
          enum:
            - function
        function:
          type: object
          description: Función que el modelo debe llamar.
          required:
            - name
          properties:
            name:
              type: string
              description: Nombre de la función que el modelo debe llamar.
    ChatUsage:
      type: object
      properties:
        prompt_tokens:
          type: integer
          description: Total de tokens de entrada, incluidos los servidos desde caché.
        completion_tokens:
          type: integer
          description: Incluye tokens de razonamiento.
        total_tokens:
          type: integer
          description: Total de tokens de entrada y salida.
        prompt_tokens_details:
          type: object
          properties:
            cached_tokens:
              type: integer
              description: Tokens de entrada servidos desde caché.
        completion_tokens_details:
          type: object
          properties:
            reasoning_tokens:
              type: integer
              description: Tokens de razonamiento, ya incluidos en completion_tokens.
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
            code:
              type:
                - string
                - 'null'
    ToolCall:
      type: object
      required:
        - id
        - type
        - function
      properties:
        id:
          type: string
          description: >-
            ID de llamada de herramienta usado para asociar un mensaje tool
            posterior mediante tool_call_id.
        type:
          type: string
          description: 'Tipo de llamada de herramienta. Valor fijo: function.'
          enum:
            - function
        function:
          type: object
          description: Función y argumentos solicitados por el modelo.
          properties:
            name:
              type: string
              description: Nombre de la función.
            arguments:
              type: string
              description: Argumentos de la función codificados como cadena JSON.
  responses:
    BadRequest:
      description: Parámetros de solicitud no válidos
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: La API Key no existe o no es válida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: Límite de solicitudes superado o cuota insuficiente
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Error interno del servicio
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  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

        ```

````