Découvrez les codes d’erreur de l’API et les solutions associées.
Ce guide présente les codes d’erreur que vous pouvez rencontrer avec l’API et notre bibliothèque Python officielle. Une section consacrée à chaque code fournit des indications supplémentaires.
Erreurs de l’API
Code
Description
400 - Argument service_tier non valide
Cause : Le projet n’autorise pas l’offre demandée ou déterminée par l’API. Solution : Définissez service_tier sur une offre autorisée pour le projet ou modifiez les offres autorisées dans les paramètres du projet.
401 - Échec de l’authentification
Cause : Les informations d’authentification ne sont pas valides. Solution : Vérifiez que vous utilisez la bonne clé API et que vous envoyez la requête au nom de la bonne organisation.
401 - Clé API fournie incorrecte
Cause : La clé API utilisée pour la requête est incorrecte. Solution : Vérifiez que la clé API est correcte, videz le cache de votre navigateur ou générez une nouvelle clé.
401 - Vous devez être membre d’une organisation pour utiliser l’API
Cause : Votre compte n’est rattaché à aucune organisation. Solution : Contactez-nous pour rejoindre une nouvelle organisation ou demandez au responsable de votre organisation de vous inviter à la rejoindre.
401 - Adresse IP non autorisée
Cause : L’adresse IP d’origine de votre requête ne figure pas dans la liste des adresses IP autorisées pour votre projet ou votre organisation. Solution : Envoyez la requête depuis une adresse IP autorisée ou modifiez les paramètres de la liste des adresses IP autorisées.
403 - Pays, région ou territoire non pris en charge
Code :credit_balance_exhausted Cause : Votre organisation a épuisé ses crédits prépayés. Solution :Ajoutez des crédits pour continuer à utiliser l’API.
429 - Limite de débit des requêtes atteinte
Cause : Vous envoyez des requêtes trop fréquemment. Solution : Espacez vos requêtes et respectez le délai indiqué par l’en-tête Retry-After lorsqu’il est présent. Consultez le guide des limites de débit.
429 - Réduisez le débit
Type :rate_limit_error Code :slow_down Cause : Le débit de vos requêtes a augmenté trop rapidement. Solution : Respectez le délai indiqué par l’en-tête Retry-After lorsqu’il est présent, réduisez le débit de vos requêtes, puis augmentez-le progressivement.
429 - Plafond de dépenses de l’organisation atteint
Code :organization_spend_limit_exceeded Cause : Votre organisation a atteint le plafond de dépenses qui lui est appliqué. Solution : Augmentez ou supprimez le plafond de dépenses de l’organisation.
429 - Plafond de dépenses du projet atteint
Code :project_spend_limit_exceeded Cause : Votre projet a atteint le plafond de dépenses qui lui est appliqué. Solution : Augmentez ou supprimez le plafond de dépenses dans les paramètres du projet.
429 - Limite d’utilisation de l’organisation atteinte
Code :organization_usage_limit_exceeded Cause : Votre organisation a atteint la limite d’utilisation fixée par OpenAI. Solution : Demandez le relèvement de votre limite d’utilisation approuvée ou contactez l’assistance.
500 - Erreur du serveur lors du traitement de votre requête
Cause : Un problème est survenu sur nos serveurs. Solution : Patientez un instant avant de renvoyer votre requête et contactez-nous si le problème persiste. Consultez la page d’état des services.
503 - Modèle temporairement surchargé
Type :service_unavailable_error Code :server_is_overloaded Cause : Le modèle demandé est temporairement surchargé. Solution : Respectez le délai indiqué par l’en-tête Retry-After lorsqu’il est présent, puis renvoyez votre requête.
Pour les erreurs de facturation, examinez error.code afin d’en déterminer la cause précise. Le champ plus général error.type peut toujours avoir la valeur insufficient_quota.
En cas d’erreur de facturation, de plafond de dépenses ou de quota, renvoyer la requête ne rétablit pas l’accès à l’API. Ajustez les crédits ou les limites concernés avant d’envoyer une nouvelle requête.
previous_response_not_found : l’état disponible ne permet pas de retrouver la réponse correspondant à previous_response_id. Renvoyez la requête avec l’intégralité du contexte d’entrée et définissez previous_response_id sur null.
websocket_connection_limit_reached : la connexion a atteint sa durée maximale de 60 minutes. Ouvrez une nouvelle connexion WebSocket pour continuer.
L’API renvoie le message « Invalid service_tier argument: The requested service tier is not allowed for this project. » sous la forme d’une erreur invalid_request_error dont le champ error.param vaut service_tier. Cette erreur se produit lorsque la requête sélectionne une offre non autorisée pour le projet ou que l’API détermine une telle offre à partir de la requête.
Les restrictions du projet s’appliquent aux offres default, flex et priority. L’offre fast est traitée comme priority. Les requêtes qui omettent service_tier ou lui attribuent la valeur auto peuvent également entraîner cette erreur si l’API détermine une offre non autorisée. Cette règle du projet ne s’applique pas à l’offre Scale.
Définissez service_tier sur une offre autorisée pour le projet.
Si la requête utilise auto ou omet service_tier, modifiez les paramètres du projet pour autoriser l’offre déterminée par l’API.
Ce message indique que vos informations d’authentification ne sont pas valides. Plusieurs causes sont possibles :
Vous utilisez une clé API révoquée.
Vous utilisez une autre clé API que celle attribuée à l’organisation ou au projet à l’origine de la requête.
Votre clé API ne dispose pas des autorisations nécessaires pour appeler ce point de terminaison.
Pour résoudre cette erreur :
Vérifiez que l’en-tête de votre requête contient la bonne clé API et le bon identifiant d’organisation. Vous les trouverez dans les paramètres de votre compte. Pour retrouver les clés propres à un projet, ouvrez les paramètres généraux et sélectionnez le projet voulu.
Ce message indique que votre compte n’est rattaché à aucune organisation. Plusieurs causes sont possibles :
Vous avez quitté votre ancienne organisation ou en avez été retiré.
Vous avez quitté votre ancien projet ou en avez été retiré.
Votre organisation a été supprimée.
Pour résoudre cette erreur :
Si vous ne faites plus partie de votre ancienne organisation, demandez la création d’une organisation ou une invitation à rejoindre une organisation existante.
Pour demander la création d’une organisation, contactez-nous via help.openai.com.
Les propriétaires d’une organisation existante peuvent vous inviter à la rejoindre depuis la page de l’équipe ou créer un projet depuis la page des paramètres.
Si vous ne faites plus partie d’un ancien projet, demandez au propriétaire de votre organisation ou du projet de vous y ajouter, ou créez un nouveau projet.
L’erreur credit_balance_exhausted indique que votre organisation a épuisé ses crédits prépayés.
Ce message indique que vous avez atteint la limite de débit qui vous est attribuée pour l’API. Vous avez envoyé trop de tokens ou de requêtes sur une courte période et dépassé le nombre de requêtes autorisé. Plusieurs causes sont possibles :
Vous utilisez une boucle ou un script qui envoie des requêtes fréquentes ou simultanées.
Vous partagez votre clé API avec d’autres utilisateurs ou applications.
Vous utilisez une formule gratuite dont la limite de débit est basse.
Vous avez atteint la limite définie pour votre projet.
Pour résoudre cette erreur :
Espacez vos requêtes et évitez les appels inutiles ou redondants.
Si l’en-tête Retry-After est présent, attendez au moins le délai indiqué avant de réessayer. En son absence, augmentez le délai de façon exponentielle entre les tentatives, ajoutez une variation aléatoire et limitez le nombre de tentatives. La prise en charge des longs délais demandés par le serveur dépend de la version et de la configuration du SDK. Pour en savoir plus, consultez notre guide des limites de débit.
Si d’autres utilisateurs font partie de votre organisation, les limites s’appliquent à l’ensemble de l’organisation et non à chaque utilisateur. Vérifiez l’utilisation du reste de votre équipe, car elle est prise en compte dans ce total.
Si vous utilisez une formule gratuite ou d’entrée de gamme, envisagez de passer à une formule facturée à l’usage dont la limite de débit est plus élevée. Comparez les restrictions de chaque formule dans notre guide des limites de débit.
Demandez au propriétaire de votre organisation d’augmenter les limites de débit de votre projet.
Une réponse 429 de type rate_limit_error avec le code slow_down indique que le débit de vos requêtes a augmenté trop rapidement pour que le service puisse absorber la hausse sans risque. Cette erreur peut survenir même si votre trafic respecte les limites de requêtes et de tokens par minute.
En règle générale, dès que votre trafic atteint 1 million de tokens d’entrée par minute (TPM), limitez sa hausse à 50 % par tranche de 15 minutes. Le seuil précis à partir duquel cette limite de montée en charge s’applique peut varier selon le modèle et les conditions de trafic.
Pour résoudre cette erreur :
Si l’en-tête Retry-After est présent, attendez au moins le délai indiqué avant de réessayer. En son absence, augmentez le délai entre les tentatives et ajoutez un court délai aléatoire.
Réduisez le débit de vos requêtes, puis augmentez-le progressivement.
Maintenez un débit régulier pour réduire le risque d’une nouvelle erreur slow_down.
Les clients Enterprise dont le trafic facturé à l’usage atteint régulièrement les limites de montée en charge peuvent envisager l’offre Scale pour bénéficier d’une capacité plus prévisible sur les modèles éligibles. Pour GPT-5.6 et les modèles ultérieurs, consultez la page Reserved Tier. Même avec ces options de capacité, suivez les étapes ci-dessus : respectez le délai indiqué par Retry-After lorsqu’il est présent et augmentez progressivement le trafic.
L’erreur organization_spend_limit_exceeded indique que votre organisation a atteint le plafond de dépenses mensuel qui lui est appliqué. Ce plafond couvre le trafic API de tous les projets de l’organisation.
Pour rétablir l’accès à l’API, augmentez ou supprimez le plafond dans les paramètres des limites de l’organisation. Sinon, l’accès sera rétabli à la prochaine réinitialisation du plafond mensuel.
L’erreur project_spend_limit_exceeded indique que votre projet a atteint le plafond de dépenses mensuel qui lui est appliqué. Les autres projets peuvent continuer à utiliser l’API tant que ni leur propre plafond ni celui de l’organisation ne sont atteints.
Pour rétablir l’accès à l’API, augmentez ou supprimez le plafond dans les paramètres du projet. Sinon, l’accès sera rétabli à la prochaine réinitialisation du plafond mensuel.
L’erreur organization_usage_limit_exceeded indique que votre organisation a atteint la limite d’utilisation mensuelle fixée par OpenAI. Cette limite est distincte des plafonds de dépenses que vous définissez pour l’organisation et ses projets.
Une réponse 503 de type service_unavailable_error avec le code server_is_overloaded indique que le modèle demandé ne dispose pas actuellement de la capacité nécessaire pour traiter votre requête.
Si l’en-tête Retry-After est présent, attendez au moins le délai indiqué avant de réessayer. En son absence, augmentez le délai entre les tentatives. Si l’erreur persiste, consultez la page d’état des services pour vérifier si un incident est en cours.
Types d’erreurs de la bibliothèque Python
La bibliothèque Python lève l’exception RateLimitError pour les réponses 429 et l’exception InternalServerError pour les réponses 503. Si votre gestionnaire d’erreurs n’interceptait qu’une de ces classes pour les restrictions de débit et les surcharges, traitez désormais les deux et examinez error.code. Par exemple, en cas de surcharge, le service vidéo renvoie désormais 503 au lieu de 429. Consultez les instructions de migration pour connaître les changements propres à chaque point de terminaison.
Type
Description
APIConnectionError
Cause : Un problème empêche la connexion à nos services. Solution : Vérifiez vos paramètres réseau, la configuration de votre proxy, vos certificats SSL ou les règles de votre pare-feu.
APITimeoutError
Cause : Le délai d’attente de la requête a expiré. Solution : Patientez un instant avant de renvoyer votre requête et contactez-nous si le problème persiste.
AuthenticationError
Cause : Votre clé API ou votre jeton d’authentification est non valide, a expiré ou a été révoqué. Solution : Vérifiez que votre clé API ou votre jeton est correct et actif. Au besoin, générez une nouvelle clé ou un nouveau jeton depuis le tableau de bord de votre compte.
BadRequestError
Cause : Votre requête est mal formée ou il manque des paramètres obligatoires, comme un jeton ou une donnée d’entrée. Solution : Le message d’erreur devrait préciser la nature du problème. Consultez la documentation de la méthode d’API appelée et vérifiez que vous envoyez tous les paramètres nécessaires et que leurs valeurs sont valides. Au besoin, vérifiez également l’encodage, le format ou la taille des données de votre requête.
ConflictError
Cause : Une autre requête a modifié la ressource. Solution : Réessayez de mettre à jour la ressource et vérifiez qu’aucune autre requête ne tente de la modifier.
InternalServerError
Cause : Un problème est survenu de notre côté. Solution : Patientez un instant avant de renvoyer votre requête et contactez-nous si le problème persiste.
NotFoundError
Cause : La ressource demandée n’existe pas. Solution : Vérifiez que vous utilisez le bon identifiant de ressource.
PermissionDeniedError
Cause : Vous n’avez pas accès à la ressource demandée. Solution : Vérifiez que vous utilisez la bonne clé API, le bon identifiant d’organisation et le bon identifiant de ressource.
RateLimitError
Cause : Vous avez atteint la limite de débit qui vous est attribuée ou augmenté votre trafic trop rapidement. Solution : Espacez vos requêtes et respectez le délai indiqué par Retry-After lorsqu’il est présent, dans les limites prévues pour vos nouvelles tentatives. Pour en savoir plus, consultez notre guide des limites de débit.
UnprocessableEntityError
Cause : La requête ne peut pas être traitée malgré un format correct. Solution : Renvoyez la requête.
L’erreur APIConnectionError indique que votre requête n’a pas pu atteindre nos serveurs ou établir une connexion sécurisée. Un problème de réseau, la configuration d’un proxy, un certificat SSL ou une règle de pare-feu peuvent en être à l’origine.
Si vous rencontrez une erreur APIConnectionError :
Vérifiez vos paramètres réseau et assurez-vous de disposer d’une connexion Internet stable et rapide. Au besoin, changez de réseau, utilisez une connexion filaire ou réduisez le nombre d’appareils ou d’applications qui utilisent votre bande passante.
Vérifiez que la configuration de votre proxy est compatible avec nos services. Au besoin, modifiez ses paramètres, utilisez un autre proxy ou connectez-vous directement sans passer par le proxy.
Vérifiez que vos certificats SSL sont valides et à jour. Au besoin, installez ou renouvelez vos certificats, utilisez une autre autorité de certification ou désactivez la vérification SSL.
Vérifiez que les règles de votre pare-feu ne bloquent ni ne filtrent le trafic vers nos services. Au besoin, modifiez les paramètres du pare-feu.
Si vous utilisez un conteneur, vérifiez qu’il dispose des autorisations nécessaires pour envoyer et recevoir du trafic.
Si le problème persiste, consultez la section consacrée aux erreurs persistantes.
L’erreur APITimeoutError indique que le traitement de votre requête a pris trop de temps et que notre serveur a fermé la connexion. Un problème de réseau, une charge élevée sur nos services ou une requête complexe qui nécessite davantage de temps de traitement peuvent en être à l’origine.
Si vous rencontrez une erreur APITimeoutError :
Attendez quelques secondes, puis renvoyez votre requête. Si le réseau est moins encombré ou si la charge sur nos services a diminué, la deuxième tentative peut aboutir.
Vérifiez vos paramètres réseau et assurez-vous de disposer d’une connexion Internet stable et rapide. Au besoin, changez de réseau, utilisez une connexion filaire ou réduisez le nombre d’appareils ou d’applications qui utilisent votre bande passante.
Si le problème persiste, consultez la section consacrée aux erreurs persistantes.
L’erreur AuthenticationError indique que votre clé API ou votre jeton d’authentification est non valide, a expiré ou a été révoqué. Une faute de frappe, une erreur de format ou un incident de sécurité peuvent en être à l’origine.
Si vous rencontrez une erreur AuthenticationError :
Vérifiez que votre clé API ou votre jeton est correct et actif. Au besoin, générez une nouvelle clé depuis le tableau de bord des clés API, vérifiez l’absence d’espaces ou de caractères superflus, ou utilisez une autre clé ou un autre jeton si vous en avez plusieurs.
Vérifiez que vous avez respecté le format attendu.
L’erreur BadRequestError (anciennement InvalidRequestError) indique que votre requête est mal formée ou qu’il manque des paramètres obligatoires, comme un jeton ou une donnée d’entrée. Une faute de frappe, une erreur de format ou une erreur de logique dans votre code peuvent en être à l’origine.
Si vous rencontrez une erreur BadRequestError :
Lisez attentivement le message d’erreur pour identifier le problème. Il devrait préciser quel paramètre est non valide ou manquant et quelle valeur ou quel format est attendu.
Consultez la référence de l’API pour la méthode appelée et vérifiez que vous envoyez tous les paramètres nécessaires et que leurs valeurs sont valides. Au besoin, vérifiez que les noms, types, valeurs et formats des paramètres correspondent à la documentation.
Vérifiez que l’encodage, le format et la taille des données de votre requête sont compatibles avec nos services. Au besoin, encodez les données en UTF-8, mettez-les au format JSON ou compressez-les si elles sont trop volumineuses.
Testez votre requête avec un outil comme Postman ou curl pour vérifier qu’elle fonctionne comme prévu. Au besoin, déboguez votre code et corrigez les erreurs ou les incohérences dans la logique de votre requête.
Si le problème persiste, consultez la section consacrée aux erreurs persistantes.
L’erreur InternalServerError indique qu’un problème est survenu de notre côté lors du traitement de votre requête. Il peut s’agir d’une erreur temporaire, d’un bug ou d’une panne du système.
Nous vous prions de nous excuser pour la gêne occasionnée et nous nous efforçons de résoudre les problèmes au plus vite. Pour en savoir plus, consultez la page d’état de nos services.
Si vous rencontrez une erreur InternalServerError :
Attendez quelques secondes, puis renvoyez votre requête. Le problème peut se résoudre rapidement, auquel cas la deuxième tentative peut aboutir.
Consultez notre page d’état pour savoir si un incident ou une opération de maintenance en cours affecte nos services. Si un incident est en cours, suivez les mises à jour et attendez sa résolution avant de renvoyer votre requête.
Si le problème persiste, consultez la section consacrée aux erreurs persistantes.
Notre équipe d’assistance examinera le problème et vous répondra dès que possible. Les délais de réponse peuvent être longs en période de forte demande. Vous pouvez aussi publier un message sur notre forum communautaire, en veillant à ne divulguer aucune information sensible.
L’erreur RateLimitError indique que vous avez atteint la limite de débit qui vous est attribuée. Vous avez envoyé trop de tokens ou de requêtes sur une période donnée, et nos services bloquent temporairement tout nouvel envoi.
Nous appliquons des limites de débit pour assurer une utilisation équitable et efficace de nos ressources et éviter les abus ou la surcharge de nos services.
Si vous rencontrez une erreur RateLimitError :
Envoyez moins de tokens ou de requêtes, ou espacez vos envois. Au besoin, réduisez la fréquence ou le volume de vos requêtes, regroupez vos tokens par lots ou augmentez le délai de façon exponentielle entre les tentatives en l’absence de Retry-After. Pour en savoir plus, consultez notre guide des limites de débit.
Si Retry-After est présent, attendez au moins le délai indiqué avant de réessayer. La bibliothèque Python peut interrompre les nouvelles tentatives automatiques lorsque le délai demandé par le serveur dépasse le maximum qu’elle prend en charge. Si votre application relance la requête, respectez le délai initial et tenez compte des tentatives effectuées par le SDK.
Consultez également les statistiques d’utilisation de l’API dans le tableau de bord de votre compte.
Les données et les en-têtes envoyés dans la requête
L’horodatage de la requête et le fuseau horaire correspondant
Tout autre détail susceptible de nous aider à diagnostiquer le problème
Notre équipe d’assistance examinera le problème et vous répondra dès que possible. Les délais de réponse peuvent être longs en période de forte demande. Vous pouvez aussi publier un message sur notre forum communautaire, en veillant à ne divulguer aucune information sensible.
Gestion des erreurs
Nous vous recommandons de traiter dans votre code les erreurs renvoyées par l’API. Vous pouvez vous inspirer de l’exemple suivant :
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21import OpenAI from"openai";constclient=newOpenAI();try {constresponse=await client.responses.create({ model: "gpt-6-astra", input: "Hello world", }); console.log(response.output_text);} catch (error) {if (error instanceofOpenAI.APIConnectionError) { console.error("Failed to connect to the OpenAI API:", error.message); } elseif (error instanceofOpenAI.RateLimitError) { console.error("OpenAI API request exceeded its rate limit:", error.message); } elseif (error instanceofOpenAI.APIError) { console.error("OpenAI API returned an error:", error.status, error.message); } else {throw error; }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import openaifrom openai import OpenAIclient = OpenAI()try: response = client.responses.create(model="gpt-6-astra", input="Hello world")except openai.APIConnectionError as e: print(f"Failed to connect to OpenAI API: {e}")except openai.RateLimitError as e: print(f"OpenAI API request exceeded rate limit: {e}")except openai.APIError as e: print(f"OpenAI API returned an API Error: {e}")else: print(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28package mainimport ( "context" "errors" "fmt" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses")func main() { client := openai.NewClient() response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Input: responses.ResponseNewParamsInputUnion{OfString: openai.String("Hello world")}, }) if err != nil { var apiError *openai.Error if errors.As(err, &apiError) { fmt.Println("OpenAI API returned an API error:", apiError) return } fmt.Println("Failed to connect to OpenAI API:", err) return } fmt.Println(response.OutputText())}