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.
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êteAuthorization: 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éesusage— le décompte de tokens (entrée, sortie, total) pour le suivi de coûtfinish_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/completionsest le seul nécessaire pour les interactions conversationnelles - Chaque requête nécessite un
modelet un tableau demessages - La réponse contient toujours
choices,usageetfinish_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