Aller au contenu principal

L'endpoint /v1/chat/completions

Votre porte d’entrée vers les modèles Mistral

L’endpoint /v1/chat/completions est le point central de l’API Mistral. C’est par lui que transitent toutes vos interactions conversationnelles avec les modèles de langage. Que vous construisiez un chatbot, un système d’extraction de données ou un assistant de rédaction, c’est cet endpoint que vous appellerez.

En avril 2026, cet endpoint gère des milliards de requêtes quotidiennes à travers le monde. Comprendre sa structure est la première étape pour exploiter la puissance des modèles Mistral en production.

1 endpoint
Pour toutes les conversations
POST
Méthode HTTP unique
< 500 ms
Latence premier token (streaming)
JSON
Format entrée/sortie

L’URL de base

Toutes les requêtes vers l’API Mistral partent de la même base :

https://api.mistral.ai/v1/chat/completions

Vous envoyez une requête POST avec un corps JSON contenant vos messages et paramètres. L’API vous renvoie une réponse JSON structurée.

Anatomie d’une requête

Voici une requête minimale avec curl :

curl https://api.mistral.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -d '{
    "model": "mistral-large-latest",
    "messages": [
      {"role": "user", "content": "Bonjour, comment fonctionne votre API ?"}
    ]
  }'

Les headers obligatoires sont :

  • Content-Type: application/json — le format du corps de la requête
  • Authorization: Bearer <votre-clé> — votre authentification

Le corps contient au minimum deux champs : model (le modèle à utiliser) et messages (la conversation).

Équivalent Python avec le SDK

En production, vous utiliserez le SDK officiel plutôt que curl. Voici l’équivalent :

from mistralai import Mistral
import os

client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {"role": "user", "content": "Bonjour, comment fonctionne votre API ?"}
    ]
)

print(response.choices[0].message.content)

Le SDK gère pour vous les headers, la sérialisation JSON, et le parsing de la réponse. Il gère également les retries automatiques en cas d’erreur temporaire.

Structure de la réponse

L’API renvoie un objet JSON structuré :

{
  "id": "cmpl-abc123",
  "object": "chat.completion",
  "created": 1712150400,
  "model": "mistral-large-latest",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Bonjour ! L'API Mistral fonctionne..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 87,
    "total_tokens": 102
  }
}

Les champs essentiels à retenir :

  • choices — un tableau contenant la ou les réponses générées
  • usage — le décompte de tokens (entrée, sortie, total) pour le suivi de coût
  • finish_reason — pourquoi le modèle s’est arrêté (stop, length, tool_calls)

Codes d’erreur courants

Quand quelque chose ne va pas, l’API renvoie des codes HTTP standards :

  • 400 — Requête mal formée (JSON invalide, paramètre manquant)
  • 401 — Clé API invalide ou manquante
  • 429 — Limite de débit atteinte (trop de requêtes)
  • 500 — Erreur côté serveur (retentez après quelques secondes)

En Python, le SDK lève des exceptions typées que vous pouvez intercepter :

from mistralai import Mistral
from mistralai.exceptions import MistralAPIException

client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))

try:
    response = client.chat.complete(
        model="mistral-large-latest",
        messages=[{"role": "user", "content": "Test"}]
    )
except MistralAPIException as e:
    print(f"Erreur API : {e.status_code}{e.message}")

Points clés à retenir

  • L’endpoint /v1/chat/completions est le seul nécessaire pour les interactions conversationnelles
  • Chaque requête nécessite un model et un tableau de messages
  • La réponse contient toujours choices, usage et finish_reason
  • Le SDK Python simplifie considérablement les appels par rapport à curl
  • Les tokens d’usage permettent de calculer précisément vos coûts