Guide
Premier appel à une API d'IA : curl et Python
Exemples courts, conformes aux documentations, pour appeler Claude, Mistral et Gemini en curl ou en Python, et lire la réponse sans se tromper de champ.
Mis à jour le
Un premier appel à une API d'IA tient en une commande : une requête POST vers l'adresse de l'éditeur, la clé dans un en-tête, et un corps JSON qui contient le nom du modèle et votre message. Voici les exemples officiels de Claude, Mistral et Gemini, relevés le 15/11/2026, avec ce qu'il faut regarder dans la réponse. Il vous faut d'abord une clé : Claude, Mistral ou Gemini.
Claude en curl
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1000,
"messages": [
{"role": "user", "content": "Quels mots-clés chercher pour suivre l'actualité des énergies renouvelables ?"}
]
}'
Trois en-têtes : la clé (x-api-key, ou Authorization: Bearer), la version de l'API (anthropic-version) et le type de contenu. Dans le corps : le modèle, la longueur maximale de la réponse (max_tokens) et la liste des messages, chacun avec un rôle (user pour vous, assistant pour le modèle). La documentation d'Anthropic déconseille une grande valeur de max_tokens sans streaming : certaines connexions inactives sont coupées par le réseau avant la fin.
La réponse est un objet JSON. Le texte est dans content, sous forme de blocs de type text. Deux autres champs méritent l'œil dès le premier jour :
stop_reason: la raison de l'arrêt ;end_turnsignifie que le modèle a terminé sa réponse de lui-même ;usage:input_tokensetoutput_tokens, c'est-à-dire ce que vous allez payer.
Claude en Python
pip install anthropic
import anthropic
client = anthropic.Anthropic() # lit ANTHROPIC_API_KEY
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=1000,
messages=[{"role": "user", "content": "Bonjour"}],
)
for block in message.content:
if block.type == "text":
print(block.text)
Anthropic publie aussi des bibliothèques pour TypeScript, C#, Go, Java, PHP et Ruby, sur le même modèle. La bibliothèque réessaie seule les erreurs passagères (connexion, limite de débit, erreurs serveur), deux fois par défaut.
Mistral en curl
curl https://api.mistral.ai/v1/chat/completions \
-H "Authorization: Bearer $MISTRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-small-latest",
"messages": [{"role": "user", "content": "Hello, Mistral!"}]
}'
La réponse se lit dans choices[0].message.content.
Mistral en Python
La documentation Mistral utilise le gestionnaire uv (uv add mistralai) ; le code :
import os
from mistralai.client import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="mistral-small-latest",
messages=[{"role": "user", "content": "En une phrase, qu'est-ce qu'une clé API ?"}],
)
print(response.choices[0].message.content)
Gemini en curl
curl "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H 'Content-Type: application/json' \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-X POST \
-d '{
"model": "gemini-4-hydrogen",
"input": "Explain how AI works in a few words"
}'
Ici, pas de liste de messages : un champ input reçoit le texte.
Les différences en un coup d'œil
| Claude | Mistral | Gemini | |
|---|---|---|---|
| Adresse | /v1/messages |
/v1/chat/completions |
/v1beta/interactions |
| En-tête de la clé | x-api-key ou Authorization: Bearer |
Authorization: Bearer |
x-goog-api-key |
| En-tête de version | anthropic-version |
aucun dans l'exemple | Api-Revision |
| Entrée | messages |
messages |
input |
max_tokens dans l'exemple |
Oui | Non | Non |
Si ça ne marche pas
- 401 : clé absente, mal copiée, révoquée ou expirée. Chez Claude, une 401 qui commence par « CORS requests are not allowed » signifie que la requête part d'un navigateur : appelez l'API depuis votre serveur.
- 400 : requête mal formée (champ manquant, nom de modèle erroné).
- 429 : limite de débit ou plafond de dépense atteint, voir erreur 429.
- 529 chez Claude : API momentanément surchargée, à réessayer.
Pour un premier essai, gardez des textes fictifs : les règles sur les données envoyées dépendent de l'offre (gratuite ou payante, voir la page Gemini). Étape suivante : afficher la réponse au fil de l'eau avec le streaming, ou obtenir un JSON structuré.
Questions fréquentes
À quoi sert max_tokens dans un appel à Claude ?
Il fixe le nombre maximal de jetons que le modèle peut écrire dans sa réponse. Les exemples officiels d'Anthropic le renseignent toujours, et la documentation déconseille une grande valeur sans streaming.
Où se trouve le texte de la réponse ?
Chez Claude, dans les blocs de type text du tableau content. Chez Mistral, dans choices[0].message.content.
Sources
Pages consultées pour écrire cet article :