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

# Kimi K3.1 Pro / Highspeed - API compatible OpenAI

> Appelez les deux modèles au format OpenAI Chat Completions, avec une réponse JSON ou un flux SSE. Conservez intégralement reasoning_content et tool_calls du message assistant entre les tours.

Quand la recherche web renvoie tool_calls, transmettez function.arguments de chaque appel dans un message tool avec le tool_call_id correspondant, puis demandez la réponse finale.

> [!NOTE]
>
> **BaseURL** : La BaseURL par défaut est `https://direct.evolink.ai`, qui offre une meilleure prise en charge des modèles textuels et des connexions de longue durée. `https://api.evolink.ai` est le point de terminaison principal pour les services multimodaux et sert d'adresse de repli pour les modèles textuels.


## OpenAPI

````yaml fr/api-manual/language-series/kimi-k3.1-pro/kimi-k3.1-pro-chat.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: Kimi K3.1 Pro / Highspeed - API compatible OpenAI
  description: >-
    Appelez Kimi K3.1 Pro / Highspeed via OpenAI Chat Completions avec
    `kimi-k3.1-pro` / `kimi-k3.1-pro-highspeed`. Les deux modèles offrent un
    contexte de 1 048 576 tokens et prennent en charge les conversations
    multi-tours, le streaming, les outils, la recherche web, la sortie
    structurée et le cache de contexte.


    Le raisonnement reste actif. `reasoning_effort` accepte `low` / `high` /
    `max`, avec `max` par défaut. Conservez tout l’historique du raisonnement et
    des appels d’outils entre les tours.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Production (recommandée)
  - url: https://api.evolink.ai
    description: URL alternative
security:
  - bearerAuth: []
tags:
  - name: Chat Completions
    description: API compatible OpenAI Chat Completions
paths:
  /v1/chat/completions:
    post:
      tags:
        - Chat Completions
      summary: API de conversation Kimi K3.1 Pro / Highspeed (compatible OpenAI)
      description: >-
        Appelez les deux modèles au format OpenAI Chat Completions, avec une
        réponse JSON ou un flux SSE. Conservez intégralement reasoning_content
        et tool_calls du message assistant entre les tours.


        Quand la recherche web renvoie tool_calls, transmettez
        function.arguments de chaque appel dans un message tool avec le
        tool_call_id correspondant, puis demandez la réponse finale.
      operationId: createChatCompletionKimiK31Pro
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
            examples:
              simple:
                summary: Requête Pro minimale
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Reply with OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
              highspeed:
                summary: Requête Highspeed minimale
                value:
                  model: kimi-k3.1-pro-highspeed
                  messages:
                    - role: user
                      content: Reply with OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
              streaming:
                summary: Streaming SSE
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Reply with OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
                  stream: true
              cache_1h:
                summary: Écriture automatique en cache 1h
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Reply with OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
                  prompt_cache_options:
                    mode: implicit
                    ttl: 1h
              web_search:
                summary: Recherche web (syntaxe unifiée)
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Use web search to find the official Kimi homepage URL.
                  reasoning_effort: low
                  max_completion_tokens: 1024
                  tools:
                    - type: web_search
              structured_output:
                summary: JSON Schema strict
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Return a JSON object with result equal to OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
                  response_format:
                    type: json_schema
                    json_schema:
                      name: result
                      strict: true
                      schema:
                        type: object
                        properties:
                          result:
                            type: string
                        required:
                          - result
                        additionalProperties: false
              function_calling:
                summary: Function Calling
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Consulte la météo du jour à Pékin.
                  tools:
                    - type: function
                      function:
                        name: get_weather
                        description: Consulter la météo d'une ville donnée
                        parameters:
                          type: object
                          properties:
                            city:
                              type: string
                              description: Nom de la ville
                          required:
                            - city
                  tool_choice: auto
      responses:
        '200':
          description: >-
            Réponse de chat completion ; les requêtes en streaming renvoient un
            flux d'événements SSE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
            text/event-stream:
              schema:
                type: string
                description: >-
                  Données SSE au format OpenAI Chat Completions, terminées par
                  `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.1-pro
            - kimi-k3.1-pro-highspeed
          default: kimi-k3.1-pro
          description: >-
            Utilisez `kimi-k3.1-pro` ou `kimi-k3.1-pro-highspeed` ; Highspeed
            génère plus vite.
        messages:
          type: array
          minItems: 1
          description: >-
            Messages de conversation. Pour une conversation multi-tour, incluez
            les messages assistant historiques complets.
          items:
            $ref: '#/components/schemas/ChatMessage'
        max_completion_tokens:
          type: integer
          minimum: 1
          maximum: 1048576
          default: 131072
          description: >-
            Nombre maximal de tokens générés, raisonnement et réponse finale
            inclus. Par défaut : 131072 ; maximum : 1048576, dans la limite du
            contexte restant.
        reasoning_effort:
          type: string
          enum:
            - low
            - high
            - max
            - medium
            - xhigh
            - minimal
            - none
          default: max
          description: >-
            Effort de raisonnement : low / high / max recommandés ; par défaut :
            max. Le raisonnement reste actif. Alias clients : medium devient
            high, xhigh devient max, minimal / none devient low. none ne
            désactive pas le raisonnement. Un effort supérieur augmente
            généralement les tokens de raisonnement et la latence. Ces tokens
            comptent dans la sortie.
        stream:
          type: boolean
          default: false
          description: Indique si la réponse est renvoyée sous forme de flux SSE.
        tools:
          type: array
          maxItems: 128
          description: >-
            Outils de fonction ou recherche web. Déclarez la recherche avec
            {"type":"web_search"}.
          items:
            oneOf:
              - $ref: '#/components/schemas/FunctionTool'
              - $ref: '#/components/schemas/WebSearchTool'
        tool_choice:
          oneOf:
            - type: string
              enum:
                - auto
                - none
                - required
            - $ref: '#/components/schemas/NamedToolChoice'
          description: >-
            Contrôle si le modèle appelle des outils ou force une fonction
            précise.
        prompt_cache_options:
          type: object
          description: >-
            Options d’écriture du cache de contexte. Sans ce champ, écriture
            automatique dans le cache 5m. Lectures et écritures sont facturées
            séparément.
          properties:
            mode:
              type: string
              enum:
                - implicit
              default: implicit
            ttl:
              type: string
              enum:
                - 5m
                - 1h
              default: 5m
              description: 'TTL du cache : 5m ou 1h ; par défaut : 5m.'
        response_format:
          type: object
          description: >-
            Format de sortie : text pour du texte brut, json_object pour un
            objet JSON, json_schema pour une sortie structurée selon un JSON
            Schema.
          properties:
            type:
              type: string
              enum:
                - text
                - json_object
                - json_schema
              description: >-
                Format : text (par défaut), texte brut ; json_object, objet JSON
                valide ; json_schema, sortie conforme au schéma (recommandé ;
                fournir json_schema).
            json_schema:
              type: object
              description: JSON Schema à respecter lorsque type vaut json_schema.
              properties:
                name:
                  type: string
                  description: Nom du schéma servant d’identifiant.
                strict:
                  type: boolean
                  default: true
                  description: >-
                    Respecter strictement le JSON Schema fourni ; par défaut :
                    true.
                schema:
                  type: object
                  description: JSON Schema définissant la structure de sortie.
                  additionalProperties: true
              required:
                - name
                - schema
        max_tokens:
          type: integer
          minimum: 1
          maximum: 1048576
          deprecated: true
          description: >-
            Ancien alias de limite de sortie. Utilisez max_completion_tokens
            pour les nouvelles requêtes ; évitez de définir les deux.
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          example: chat.completion
        created:
          type: integer
        model:
          type: string
          example: kimi-k3.1-pro
        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: 'Rôle du message : system, user, assistant ou tool.'
          enum:
            - system
            - user
            - assistant
            - tool
        content:
          description: >-
            Contenu du message. Chaîne de caractères pour du texte brut ;
            tableau de blocs de contenu pour une entrée multimodale (texte +
            image + vidéo). Le contenu assistant peut être null lors d'un appel
            d'outil.
          oneOf:
            - type: string
              description: Contenu de message en texte brut.
            - type: array
              description: Tableau de blocs de contenu multimodal.
              items:
                $ref: '#/components/schemas/ContentPart'
            - type: 'null'
        reasoning_content:
          type: string
          description: >-
            Contenu de raisonnement de l'assistant. Renvoyez-le sans
            modification dans le message assistant complet pour les
            conversations multi-tours.
        tool_calls:
          type: array
          description: >-
            Appels d'outil renvoyés par l'assistant. Renvoyez-les sans
            modification lors des tours d'outil suivants.
          items:
            $ref: '#/components/schemas/ToolCall'
        tool_call_id:
          type: string
          description: ID de l'appel d'outil correspondant lorsque `role=tool`.
    FunctionTool:
      type: object
      required:
        - type
        - function
      properties:
        type:
          type: string
          description: Type d'outil. Actuellement fixé à function.
          enum:
            - function
        function:
          type: object
          description: Définition de fonction disponible pour le modèle.
          required:
            - name
            - parameters
          properties:
            name:
              type: string
              description: Nom de la fonction.
            description:
              type: string
              description: >-
                Description aidant le modèle à décider quand appeler la
                fonction.
            parameters:
              type: object
              additionalProperties: true
              description: Définition des paramètres de fonction au format JSON Schema.
            strict:
              type: boolean
              description: >-
                Indique si les arguments doivent suivre strictement le JSON
                Schema de parameters.
    WebSearchTool:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - web_search
          description: Outil de recherche web.
    NamedToolChoice:
      type: object
      required:
        - type
        - function
      properties:
        type:
          type: string
          description: 'Type de sélection d''outil nommé. Valeur fixe : function.'
          enum:
            - function
        function:
          type: object
          description: Fonction que le modèle doit appeler.
          required:
            - name
          properties:
            name:
              type: string
              description: Nom de la fonction que le modèle doit appeler.
    ChatUsage:
      type: object
      properties:
        prompt_tokens:
          type: integer
          description: >-
            Total des tokens d’entrée, incluant entrée ordinaire, lectures et
            écritures du cache. Entrée ordinaire = prompt_tokens - cached_tokens
            - cache_write_tokens.
        completion_tokens:
          type: integer
          description: Inclut les tokens de raisonnement.
        total_tokens:
          type: integer
          description: Nombre total de tokens d'entrée et de sortie.
        prompt_tokens_details:
          type: object
          properties:
            cached_tokens:
              type: integer
              description: Tokens d'entrée servis depuis le cache.
            cache_write_tokens:
              type: integer
              minimum: 0
              description: >-
                Total des tokens écrits en cache, écritures 5m / 1h incluses. Ne
                pas les facturer à nouveau comme entrée ordinaire.
        completion_tokens_details:
          type: object
          properties:
            reasoning_tokens:
              type: integer
              description: Tokens de raisonnement, déjà inclus dans completion_tokens.
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
            code:
              type:
                - string
                - 'null'
    ContentPart:
      description: Bloc de contenu multimodal. Le champ utilisé dépend de `type`.
      oneOf:
        - type: object
          required:
            - type
            - text
          properties:
            type:
              type: string
              enum:
                - text
            text:
              type: string
              description: Contenu textuel lorsque `type=text`.
        - type: object
          required:
            - type
            - image_url
          properties:
            type:
              type: string
              enum:
                - image_url
            image_url:
              description: >-
                Image lorsque `type=image_url` ; une chaîne URL peut aussi être
                passée directement.
              oneOf:
                - type: string
                - type: object
                  required:
                    - url
                  properties:
                    url:
                      type: string
                      description: >-
                        Contenu d’image sous forme d’URL data Base64
                        (data:image/png;base64,...).
        - type: object
          required:
            - type
            - video_url
          properties:
            type:
              type: string
              enum:
                - video_url
            video_url:
              description: >-
                Vidéo lorsque `type=video_url` ; une chaîne URL peut aussi être
                passée directement.
              oneOf:
                - type: string
                - type: object
                  required:
                    - url
                  properties:
                    url:
                      type: string
                      description: >-
                        Contenu vidéo sous forme d’URL data Base64
                        (data:video/mp4;base64,...).
    ToolCall:
      type: object
      required:
        - id
        - type
        - function
      properties:
        id:
          type: string
          description: >-
            ID d'appel d'outil servant à associer un message tool ultérieur via
            tool_call_id.
        type:
          type: string
          description: >-
            Type d’appel d’outil : `function` pour les fonctions du client ;
            `builtin_function` pour l’outil intégré `$web_search`.
          enum:
            - function
            - builtin_function
        function:
          type: object
          description: Fonction et arguments demandés par le modèle.
          properties:
            name:
              type: string
              description: Nom de la fonction.
            arguments:
              type: string
              description: Arguments de fonction encodés sous forme de chaîne JSON.
      description: >-
        Conservez les appels d’outils complets entre les tours : ID, types, noms
        de fonction, arguments et raisonnement.
  responses:
    BadRequest:
      description: Paramètres de requête invalides
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: La clé API est absente ou invalide
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: Limite de débit dépassée ou quota insuffisant
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Erreur interne du service
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Toutes les API nécessitent une authentification Bearer Token##


        **Obtenir une clé API** :


        Visitez la [Page de gestion des clés
        API](https://evolink.ai/dashboard/keys) pour obtenir votre clé API


        **Ajouter à l'en-tête de requête** :

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

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