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

# API Kimi (tous les modèles) - Chat Completions : Référence complète

> Appeler les modèles Kimi au format OpenAI Chat Completions, avec des réponses JSON classiques ou en streaming SSE. Dans les conversations à plusieurs tours, conserver intégralement reasoning_content et tool_calls des messages assistant.

Lorsque la recherche Web renvoie des tool_calls, renvoyer function.arguments de chaque appel comme contenu d’un message tool portant le même tool_call_id, puis poursuivre la requête pour générer 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/chat-completions/chat-completions-reference.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: 'API Kimi (tous les modèles) - Chat Completions : Référence complète'
  description: >-
    Appeler les modèles de texte Kimi via le protocole OpenAI Chat Completions.
    Utiliser `model` pour sélectionner `kimi-k3.1-pro`,
    `kimi-k3.1-pro-highspeed` ou `kimi-k3`. Tous ont une fenêtre de contexte de
    1 048 576 tokens et prennent en charge les conversations à plusieurs tours,
    le streaming, les appels d’outils, la recherche Web, les sorties structurées
    et les images et vidéos en entrée.


    Le raisonnement est toujours activé pour les trois modèles et renvoyé dans
    `reasoning_content`. L’effort de raisonnement et le TTL d’écriture du cache
    varient selon le modèle ; voir le champ `model`. Conserver intégralement
    l’historique de raisonnement et d’appels d’outils dans les conversations à
    plusieurs tours.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Production (Recommandé)
  - 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 chat Kimi (tous les modèles, compatible OpenAI)
      description: >-
        Appeler les modèles Kimi au format OpenAI Chat Completions, avec des
        réponses JSON classiques ou en streaming SSE. Dans les conversations à
        plusieurs tours, conserver intégralement reasoning_content et tool_calls
        des messages assistant.


        Lorsque la recherche Web renvoie des tool_calls, renvoyer
        function.arguments de chaque appel comme contenu d’un message tool
        portant le même tool_call_id, puis poursuivre la requête pour générer la
        réponse finale.
      operationId: createChatCompletionKimi
      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
              k3:
                summary: Requête minimale Kimi K3
                value:
                  model: kimi-k3
                  messages:
                    - role: user
                      content: Reply with OK.
                  max_completion_tokens: 1024
              streaming:
                summary: Sortie SSE en streaming
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content: Reply with OK.
                  reasoning_effort: low
                  max_completion_tokens: 1024
                  stream: true
              multimodal:
                summary: Image en entrée
                value:
                  model: kimi-k3.1-pro
                  messages:
                    - role: user
                      content:
                        - type: image_url
                          image_url:
                            url: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA...
                        - type: text
                          text: Décris cette image.
                  reasoning_effort: low
                  max_completion_tokens: 1024
              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: Obtenir 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
              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
              cache_1h:
                summary: Écriture automatique en cache 1h (série K3.1 uniquement)
                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
      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
            - kimi-k3
          default: kimi-k3.1-pro
          description: >-
            Modèle à appeler :


            | Identifiant du modèle | Positionnement | Effort de raisonnement |

            |---|---|---|

            | `kimi-k3.1-pro` | Dernière génération (recommandée) | `low` /
            `high` / `max`, `max` par défaut |

            | `kimi-k3.1-pro-highspeed` | Mêmes paramètres que Pro, génération
            plus rapide | Comme `kimi-k3.1-pro` |

            | `kimi-k3` | Génération précédente | `max` uniquement |


            Les trois modèles ont une fenêtre de contexte de 1 048 576 tokens et
            un raisonnement toujours activé.


            Le TTL d’écriture du cache (`prompt_cache_options`) est réservé à la
            série K3.1 ; `kimi-k3` ne prend pas ce paramètre en charge.
        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. Le raisonnement est toujours activé.


            - `kimi-k3.1-pro` / `kimi-k3.1-pro-highspeed` : `low` / `high` /
            `max` sont recommandés ; `max` par défaut. Pour les clients
            génériques, `medium` équivaut à `high`, `xhigh` à `max` et `minimal`
            / `none` à `low` ; `none` ne désactive pas le raisonnement.

            - `kimi-k3` : seul `max` est pris en charge (valeur par défaut).


            Un effort accru augmente généralement les tokens de raisonnement et
            la latence. Les tokens de raisonnement 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, prises en charge uniquement
            par `kimi-k3.1-pro` / `kimi-k3.1-pro-highspeed` ; `kimi-k3` ne prend
            pas ce paramètre en charge. Sans ce champ, un cache de 5m est écrit
            automatiquement par défaut. Les écritures et lectures 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.
        temperature:
          type: number
          default: 1
          description: >-
            Température d’échantillonnage, fixée par le modèle à `1` ; il n’est
            pas nécessaire de fournir ce champ. `kimi-k3.1-pro` /
            `kimi-k3.1-pro-highspeed` l’ignorent automatiquement ; `kimi-k3`
            renvoie une erreur pour les valeurs non prises en charge.
        top_p:
          type: number
          default: 0.95
          description: >-
            Seuil d’échantillonnage nucleus, fixé par le modèle à `0.95` ; il
            n’est pas nécessaire de fournir ce champ. `kimi-k3.1-pro` /
            `kimi-k3.1-pro-highspeed` l’ignorent automatiquement ; `kimi-k3`
            renvoie une erreur pour les valeurs non prises en charge.
    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 l’entrée standard et les
            lectures et écritures de cache. Série K3.1 : entrée standard =
            prompt_tokens-cached_tokens-cache_write_tokens ; `kimi-k3` : entrée
            standard = prompt_tokens-cached_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 pour cette requête, écritures
                5m / 1h comprises. La série K3.1 les facture séparément sans les
                refacturer comme entrée standard ; `kimi-k3` ne les distingue
                pas et les facture comme entrée standard.
        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 par 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.