Aller au contenu
Cercle IA Tech · API Un site du réseau Cercle IA Tech

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_turn signifie que le modèle a terminé sa réponse de lui-même ;
  • usage : input_tokens et output_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 :

  1. https://platform.claude.com/docs/fr/get-started
  2. https://platform.claude.com/docs/en/api/errors
  3. https://docs.mistral.ai/getting-started/quickstarts/studio/activate-and-generate-api-key
  4. https://docs.mistral.ai/inference/quickstarts/send-your-first-request
  5. https://aistudio.google.com/docs/api-key

À lire aussi