Appeler l'API avec cURL
L’outil universel pour tester les API
cURL est un outil en ligne de commande disponible sur tous les systèmes d’exploitation. Il permet d’envoyer des requêtes HTTP sans installer de SDK ni écrire de programme. C’est l’outil idéal pour tester rapidement un endpoint, déboguer une requête ou automatiser des appels dans un script shell.
Votre première requête cURL
Voici comment envoyer une requête à l’API Grok avec cURL :
curl https://api.x.ai/v1/chat/completions \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4",
"messages": [
{"role": "user", "content": "Bonjour, présentez-vous en une phrase."}
]
}'
Décomposition de la commande
curl https://api.x.ai/v1/chat/completions: envoie une requête POST (implicite avec-d) vers l’endpoint-H "Authorization: Bearer $XAI_API_KEY": ajoute l’en-tête d’authentification avec votre clé-H "Content-Type: application/json": indique que le corps est du JSON-d '{...}': le corps de la requête au format JSON
Utiliser l’endpoint /v1/responses
L’endpoint moderne /v1/responses offre une syntaxe plus concise :
curl https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4",
"input": "Expliquez-moi le machine learning en termes simples."
}'
Notez que input remplace messages pour les requêtes simples. Vous pouvez passer une chaîne de caractères directement au lieu d’un tableau de messages.
Options cURL utiles
Formater la sortie JSON
La réponse brute est difficile à lire. Utilisez jq pour la formater :
curl -s https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "grok-4", "input": "Bonjour"}' | jq .
L’option -s (silent) supprime la barre de progression de cURL.
Extraire uniquement la réponse
Pour récupérer le texte de la réponse sans les métadonnées :
curl -s https://api.x.ai/v1/chat/completions \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4",
"messages": [{"role": "user", "content": "Bonjour"}]
}' | jq -r '.choices[0].message.content'
Voir les en-têtes de réponse
Pour déboguer les rate limits ou les erreurs, ajoutez -i pour afficher les en-têtes HTTP :
curl -i https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "grok-4", "input": "Test"}'
Lire le corps depuis un fichier
Pour les requêtes complexes, stockez le JSON dans un fichier :
# requete.json
{
"model": "grok-4",
"messages": [
{"role": "system", "content": "Vous êtes un traducteur."},
{"role": "user", "content": "Traduisez en anglais : Bonjour le monde"}
],
"temperature": 0.3
}
Puis référencez-le avec @ :
curl https://api.x.ai/v1/chat/completions \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d @requete.json
Déboguer les erreurs courantes
- 401 Unauthorized : clé API invalide ou absente. Vérifiez
echo $XAI_API_KEY - 400 Bad Request : JSON mal formé. Validez votre JSON avec
jq . < requete.json - 429 Too Many Requests : limite de débit atteinte. Attendez quelques secondes
- 404 Not Found : vérifiez l’URL et le chemin de l’endpoint
Points clés à retenir
- cURL est parfait pour tester et déboguer sans écrire de code
- Authentifiez-vous avec
-H "Authorization: Bearer $XAI_API_KEY" - Utilisez
jqpour formater et filtrer les réponses JSON - Stockez les requêtes complexes dans des fichiers JSON séparés