Avant de signaler un bug
La plupart des « bugs » sont des problèmes de configuration que vous pouvez résoudre en 60 secondes — parcourez d'abord cette liste de contrôle.
Si quelque chose ne fonctionne pas, le moyen le plus rapide de déterminer si le problème vient de votre côté ou du nôtre est d'exécuter la même requête depuis un autre outil.
Environ 9 rapports sur 10 signalant une « API défaillante » s'avèrent être une URL de base mal configurée, une clé API périmée, un nom de modèle incorrect ou un corps de requête issu d'un tutoriel qui date de trois versions de SDK.
Test rapide d'autodiagnostic
Copiez cette commande curl dans un terminal. Remplacez YOUR_KEY par votre clé API depuis le Dashboard et exécutez-la. Si vous obtenez une réponse normale, votre clé API, votre réseau et notre backend sont tous opérationnels — tout problème restant se trouve dans votre code client ou votre environnement.
cURL
curl https://api.airforce/v1/chat/completions \
-H "Authorization: Bearer sk-air-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [{"role": "user", "content": "ping"}]
}'Liste de contrôle étape par étape
Votre clé API est-elle valide ?
Ouvrez Dashboard → API Keys et vérifiez que la clé correspond à celle utilisée dans votre code. Un piège courant est la présence d'espaces avant le préfixe « sk-air- » lors d'un copier-coller.
Symptôme : 401 Unauthorized.
L'URL de base est-elle correcte ?
L'URL de base doit être https://api.airforce/v1 — pas http, et le suffixe /v1 est obligatoire. Les tutoriels antérieurs au chemin v1 d'OpenAI l'omettent parfois.
Symptôme : 404 Not Found, ou curl se bloque.
Le nom du modèle est-il correctement orthographié ?
Les identifiants de modèle sont sensibles à la casse. Consultez la page Models ou appelez GET /v1/models pour confirmer l'identifiant exact. Une faute de frappe ou un modèle déprécié retourne une erreur claire plutôt que de « fonctionner incorrectement ».
Symptôme : 400 unknown_model ou 404 model_not_found.
Le corps de la requête est-il correctement structuré ?
Les complétions de chat utilisent un tableau messages. Les images utilisent prompt + n. La synthèse vocale utilise input + voice. Envoyer un corps de requête formaté pour le chat vers /v1/images/generations retourne 400 — facile à manquer en copiant des extraits entre différentes docs.
Symptôme : 400 avec le champ problématique indiqué dans le corps de la réponse.
Avez-vous atteint une limite de débit ou un plafond de quota ?
429 = trop de requêtes cette minute. 402 = votre forfait ou solde est épuisé. Les deux s'affichent sur le Dashboard. Les requêtes du niveau gratuit ont des plafonds distincts de ceux du forfait payant, donc un modèle payant peut répondre normalement pendant qu'un modèle gratuit est limité.
Symptôme : 429 Too Many Requests ou 402 Payment Required.
Le modèle est-il actuellement disponible ?
Consultez la page Models — les pannes de fournisseur s'affichent comme « dégradé » ou « panne majeure ». Si un modèle est indisponible alors que d'autres fonctionnent, il s'agit d'un problème côté fournisseur que nous contournons, et non d'une erreur client.
Symptôme : un modèle spécifique retourne 5xx pendant que d'autres fonctionnent.
Signification des codes de statut HTTP
Chaque réponse d'erreur contient un code de statut HTTP standard. Savoir ce que chacun indique vous évite d'ouvrir un ticket inutilement.
| 400 | Votre côté | Bad Request — JSON malformé, champ obligatoire manquant, paramètre inconnu. Corrigez le corps de la requête. |
| 401 | Votre côté | Unauthorized — clé API manquante ou invalide. Vérifiez que l'en-tête Authorization inclut le préfixe « Bearer ». |
| 402 | Votre côté | Payment Required — forfait épuisé ou solde Pay-as-you-go vide. Abonnez-vous ou rechargez. |
| 403 | Votre côté | Forbidden — votre forfait ou la permission par clé n'autorise pas ce modèle ou cet endpoint. |
| 404 | Votre côté | Not Found — endpoint ou identifiant de modèle inconnu. Vérifiez le chemin URL et l'orthographe du modèle. |
| 413 | Votre côté | Payload Too Large — l'entrée dépasse la fenêtre de contexte du modèle. Raccourcissez le prompt. |
| 429 | Votre côté | Too Many Requests — limite de débit atteinte (RPM, RPD ou plafond quotidien de tokens). Ralentissez ou passez à un forfait supérieur. |
| 500 | Notre côté | Internal Server Error — un bug de notre côté. Signalez-le s'il persiste plus d'une minute. |
| 502 | Notre côté | Bad Gateway — backend en cours de redémarrage (nous déployons plusieurs fois par jour). Attendez 5 à 10 secondes et réessayez. |
| 503 | Notre côté | Service Unavailable — tous les fournisseurs en amont pour ce modèle ont échoué simultanément. Signalez-le s'il dure plus de quelques minutes. |
Quand c'est vraiment un bug
Si le test d'autodiagnostic curl ci-dessus fonctionne mais que la même requête depuis votre code ne fonctionne pas, le problème se trouve dans votre client (ou la bibliothèque qu'il utilise). Si le test lui-même échoue avec un 5xx, ou retourne un 4xx avec un message qui ne correspond pas à votre requête, cela vaut la peine d'être signalé.
Comment signaler efficacement
Ouvrez un ticket de support depuis le Dashboard ou publiez dans #support sur Discord. Incluez :
- Le code de statut HTTP complet et le corps de la réponse (ainsi que l'en-tête de réponse cf-ray, s'il est présent).
- L'horodatage approximatif en UTC.
- Le nom du modèle et l'endpoint que vous avez appelé.
- Un cURL minimal qui reproduit le problème (masquez votre vraie clé API !).
- Si le test d'autodiagnostic ci-dessus fonctionne pour vous avec la même clé.
Bloqué lors de la configuration ou besoin d'une clé gratuite ? Demandez à la communauté sur notre Discord.
Rejoignez notre Discord