Erreurs de limite de débit
GitHub applique les limites de dĂ©bit pour sâassurer que lâAPI reste disponible pour tous les utilisateurs. Pour plus dâinformations, consultez « Limites de dĂ©bit pour l'API REST ».
Si vous dépassez votre limite de débit primaire, vous recevrez une réponse 403 Forbidden
ou 429 Too Many Requests
et lâen-tĂȘte x-ratelimit-remaining
sera 0
. Si vous dépassez une limite de débit secondaire, vous recevrez une réponse 403 Forbidden
ou 429 Too Many Requests
et un message dâerreur indiquant que vous avez dĂ©passĂ© une limite de dĂ©bit secondaire.
Si vous recevez une erreur de limite de dĂ©bit, vous devez arrĂȘter temporairement dâeffectuer des demandes en fonction des instructions suivantes :
- Si l'en-tĂȘte de rĂ©ponse
retry-after
est prĂ©sent, vous ne devez pas rĂ©essayer votre demande avant le nombre de secondes spĂ©cifiĂ©. - Si lâen-tĂȘte
x-ratelimit-remaining
est0
, vous ne devez pas effectuer une autre demande avant la durĂ©e spĂ©cifiĂ©e par lâen-tĂȘtex-ratelimit-reset
. Lâen-tĂȘtex-ratelimit-reset
est en secondes dâĂ©poque UTC. - Sinon, attendez au moins une minute avant de rĂ©essayer. Si votre demande continue d'Ă©chouer en raison d'une limite de dĂ©bit secondaire, attendez une durĂ©e exponentiellement croissante entre les nouvelles tentatives et levez une erreur aprĂšs un nombre spĂ©cifique de nouvelles tentatives.
La poursuite des demandes pendant que vous ĂȘtes limitĂ© peut entraĂźner l'interdiction de votre intĂ©gration.
Pour plus dâinformations sur la façon dâĂ©viter de dĂ©passer les limites de dĂ©bit, consultez Meilleures pratiques pour utiliser l'API REST.
404 Not Found
pour une ressource existante
Si vous effectuez une demande dâaccĂšs Ă une ressource privĂ©e et que votre demande nâest pas correctement authentifiĂ©e, vous recevrez une rĂ©ponse 404 Not Found
. GitHub utilise une réponse 404 Not Found
au lieu dâune rĂ©ponse 403 Forbidden
pour Ă©viter de confirmer lâexistence de rĂ©fĂ©rentiels privĂ©s.
Si vous recevez une réponse 404 Not Found
lorsque vous savez que la ressource que vous demandez existe, vous devez case activée votre authentification. Par exemple :
- Si vous utilisez un personal access token (classic), vous devez vous assurer que :
- Le jeton a les Ă©tendues requises pour utiliser le point de terminaison. Pour plus dâinformations, consultez « Ătendues des applications OAuth » et « Gestion de vos jetons d'accĂšs personnels ».
- Le propriĂ©taire du jeton dispose des autorisations nĂ©cessaires pour utiliser le point de terminaison. Par exemple, si un point de terminaison ne peut ĂȘtre utilisĂ© que par des propriĂ©taire d'organisation s, seuls les utilisateurs propriĂ©taires de lâorganisation concernĂ©e peuvent utiliser le point de terminaison.
- Le jeton nâa pas expirĂ© ou nâa pas Ă©tĂ© rĂ©voquĂ©. Pour plus dâinformations, consultez « Expiration et rĂ©vocation des jetons ».
- Si vous utilisez un fine-grained personal access token, vous devez vous assurer que :
- Le jeton dispose des autorisations nĂ©cessaires pour utiliser le point de terminaison. Consultez la documentation du point de terminaison pour obtenir plus dâinformations sur les autorisations requises.
- Le propriĂ©taire de la ressource spĂ©cifiĂ© pour le jeton correspond au propriĂ©taire de la ressource affectĂ©e par le point de terminaison. Pour plus dâinformations, consultez « Gestion de vos jetons d'accĂšs personnels ».
- Le jeton a accĂšs Ă tous les rĂ©fĂ©rentiels privĂ©s affectĂ©s par le point de terminaison. Pour plus dâinformations, consultez « Gestion de vos jetons d'accĂšs personnels ».
- Le propriĂ©taire du jeton dispose des autorisations nĂ©cessaires pour utiliser le point de terminaison. Par exemple, si un point de terminaison ne peut ĂȘtre utilisĂ© que par des propriĂ©taire d'organisation s, seuls les utilisateurs propriĂ©taires de lâorganisation concernĂ©e peuvent utiliser le point de terminaison.
- Le jeton nâa pas expirĂ© ou nâa pas Ă©tĂ© rĂ©voquĂ©. Pour plus dâinformations, consultez « Expiration et rĂ©vocation des jetons ».
- Si vous utilisez un jeton dâaccĂšs dâinstallation GitHub App, vĂ©rifiez que :
- Les GitHub App disposent des autorisations requises pour utiliser le point de terminaison. Consultez la documentation du point de terminaison pour obtenir plus dâinformations sur les autorisations requises.
- Le point de terminaison affecte uniquement les ressources appartenant au compte oĂč les GitHub App sont installĂ©es.
- Les GitHub App ont accÚs aux référentiels affectés par le point de terminaison.
- Le jeton nâa pas expirĂ© ou nâa pas Ă©tĂ© rĂ©voquĂ©. Pour plus dâinformations, consultez « Expiration et rĂ©vocation des jetons ».
- Si vous utilisez un jeton dâaccĂšs utilisateur GitHub App, vĂ©rifiez que :
- Les GitHub App disposent des autorisations requises pour utiliser le point de terminaison. Consultez la documentation du point de terminaison pour obtenir plus dâinformations sur les autorisations requises.
- Lâutilisateur qui a autorisĂ© le jeton dispose dâautorisations requises pour utiliser le point de terminaison. Par exemple, si un point de terminaison ne peut ĂȘtre utilisĂ© que par des propriĂ©taire d'organisation s, seuls les utilisateurs propriĂ©taires de lâorganisation concernĂ©e peuvent utiliser le point de terminaison.
- Les GitHub App ont accÚs aux référentiels affectés par le point de terminaison.
- Lâutilisateur a accĂšs Ă tous les rĂ©fĂ©rentiels affectĂ©s par le point de terminaison.
- Lâutilisateur a approuvĂ© toutes les autorisations mises Ă jour pour vos GitHub App. Pour plus dâinformations, consultez « Approbation des autorisations mises Ă jour pour une application GitHub ».
- Si vous utilisez un jeton dâaccĂšs utilisateur OAuth app, vĂ©rifiez que :
- Le jeton a les Ă©tendues requises pour utiliser le point de terminaison. Pour plus dâinformations, consultez « Ătendues des applications OAuth ».
- Lâutilisateur qui a autorisĂ© le jeton dispose dâautorisations requises pour utiliser le point de terminaison. Par exemple, si un point de terminaison ne peut ĂȘtre utilisĂ© que par des propriĂ©taire d'organisation s, seuls les utilisateurs propriĂ©taires de lâorganisation concernĂ©e peuvent utiliser le point de terminaison.
- Lâorganisation nâa pas bloquĂ© lâaccĂšs aux applications OAuth, si vous utilisez un point de terminaison qui affectera les ressources appartenant Ă une organisation. Les propriĂ©taires dâapplications ne peuvent pas voir si leur application est bloquĂ©e, mais ils peuvent demander aux utilisateurs de lâapplication de case activĂ©e cela. Pour plus dâinformations, consultez Ă propos des restrictions dâaccĂšs des applications OAuth.
- Le jeton nâa pas expirĂ© ou nâa pas Ă©tĂ© rĂ©voquĂ©. Pour plus dâinformations, consultez « Expiration et rĂ©vocation des jetons ».
- Si vous utilisez
GITHUB_TOKEN
dans un flux de travail GitHub Actions, vĂ©rifiez que :- Le point de terminaison affecte uniquement les ressources dĂ©tenues par le rĂ©fĂ©rentiel oĂč le flux de travail est en cours dâexĂ©cution. Si vous devez accĂ©der aux ressources en dehors de ce rĂ©fĂ©rentiel, telles que les ressources appartenant Ă une organisation ou des ressources appartenant Ă un autre rĂ©fĂ©rentiel, vous devez utiliser un personal access token ou un jeton dâaccĂšs pour un GitHub App.
Pour plus dâinformations sur lâauthentification, consultez Authentification auprĂšs de lâAPI REST.
Vous devez Ă©galement case activĂ©e pour les fautes de frappe dans votre URL. Par exemple, lâajout dâune barre oblique de fin au point de terminaison entraĂźne un 404 Not Found
. Vous pouvez consulter la documentation de rĂ©fĂ©rence du point de terminaison pour confirmer que vous disposez de lâURL correcte.
En outre, tous les paramĂštres de chemin dâaccĂšs doivent ĂȘtre encodĂ©s dans lâURL. Par exemple, toutes les barres obliques de la valeur du paramĂštre doivent ĂȘtre remplacĂ©es par %2F
. Si vous nâencodez pas correctement les barres obliques dans le nom du paramĂštre, lâURL du point de terminaison ne sera pas interprĂ©tĂ©e correctement.
Résultats manquants
La plupart des points de terminaison qui retournent une liste de ressources prennent en charge la pagination. Pour la plupart de ces points de terminaison, seules les 30 premiĂšres ressources sont retournĂ©es par dĂ©faut. Pour afficher toutes les ressources, vous devez paginer les rĂ©sultats. Pour plus dâinformations, consultez « Utilisation de la pagination dans lâAPI REST ».
Si vous utilisez correctement la pagination et que vous ne voyez toujours pas tous les rĂ©sultats attendus, vĂ©rifiez que les informations dâidentification dâauthentification que vous avez utilisĂ©es ont accĂšs Ă toutes les ressources attendues. Par exemple, si vous utilisez un jeton dâaccĂšs dâinstallation GitHub App, si lâinstallation nâa Ă©tĂ© accordĂ©e quâĂ un sous-ensemble de rĂ©fĂ©rentiels dâune organisation, toute demande de tous les rĂ©fĂ©rentiels de cette organisation retourne uniquement les rĂ©fĂ©rentiels auxquels lâinstallation de lâapplication peut accĂ©der.
NĂ©cessite une authentification lors de lâutilisation de lâauthentification de base
Lâauthentification de base avec votre nom dâutilisateur et votre mot de passe nâest pas prise en charge. Ă la place, vous devez utiliser une personal access token or un jeton dâaccĂšs pour un GitHub App ou OAuth app. Pour plus dâinformations, consultez « Authentification auprĂšs de lâAPI REST ».
Délais d'attente
Si GitHub prend plus de 10 secondes pour traiter une demande dâAPI, GitHub mettra fin Ă la demande et vous recevrez une rĂ©ponse de dĂ©lai expirĂ© et un message dâ« Erreur de serveur ».
GitHub se rĂ©serve le droit de modifier le dĂ©lai dâexpiration pour protĂ©ger la vitesse et la fiabilitĂ© de lâAPI.
Vous pouvez case activĂ©e lâĂ©tat de lâAPI REST Ă githubstatus.com pour dĂ©terminer si le dĂ©lai dâexpiration est dĂ» Ă un problĂšme avec lâAPI. Vous pouvez Ă©galement essayer de simplifier votre demande ou dâessayer votre demande ultĂ©rieurement. Par exemple, si vous demandez 100 articles sur une page, vous pouvez essayer de demander moins dâarticles.
Ressource non accessible
Si vous utilisez un GitHub App ou fine-grained personal access token et que vous recevez une erreur « Ressource non accessible par intĂ©gration » ou « Ressource non accessible par personal access token », votre jeton a des autorisations insuffisantes. Consultez la documentation du point de terminaison pour obtenir plus dâinformations sur les autorisations requises.
Vous pouvez utiliser lâen-tĂȘte X-Accepted-GitHub-Permissions
pour identifier les autorisations requises pour accĂ©der au point de terminaison de lâAPI REST.
La valeur de lâen-tĂȘte X-Accepted-GitHub-Permissions
est une liste sĂ©parĂ©e par des virgules des autorisations requises pour utiliser le point de terminaison. Parfois, vous pouvez choisir parmi plusieurs ensembles dâautorisations. Dans ce cas, les diverses listes sĂ©parĂ©es par des virgules seront sĂ©parĂ©es par un point-virgule.
Par exemple :
X-Accepted-GitHub-Permissions: contents=read
signifie que votre GitHub App ou fine-grained personal access token a besoin dâun accĂšs en lecture Ă lâautorisation de contenu.X-Accepted-GitHub-Permissions: pull_requests=write,contents=read
signifie que votre GitHub App ou fine-grained personal access token a besoin dâun accĂšs en Ă©criture Ă lâautorisation de demande de tirage (pull request) et dâaccĂšs en lecture Ă lâautorisation de contenu.X-Accepted-GitHub-Permissions: pull_requests=read,contents=read; issues=read,contents=read
signifie que votre GitHub App ou fine-grained personal access token a besoin soit dâun accĂšs en lecture Ă lâautorisation de demande de tirage (pull request) et dâun accĂšs en lecture Ă lâautorisation de contenu, ou alors dâun accĂšs en lecture aux problĂšmes dâautorisation et dâun accĂšs en lecture Ă lâautorisation de contenu.
ProblĂšmes dâanalyse JSON
Si vous envoyez un JSON non valide dans le corps de la demande, vous pouvez recevoir une réponse 400 Bad Request
et un message dâerreur « ProblĂšmes dâanalyse JSON ». Vous pouvez utiliser un validateur linter ou JSON pour vous aider Ă identifier les erreurs dans votre JSON.
Le corps doit ĂȘtre un objet JSON
Si le point de terminaison attend un objet JSON et que vous ne mettez pas en forme votre corps de requĂȘte en tant quâobjet JSON, vous pouvez recevoir une rĂ©ponse 400 Bad Request
et un message dâerreur « Corps doit ĂȘtre un objet JSON ».
Demande non valide
Si vous omettez les paramÚtres requis ou que vous utilisez le type incorrect pour un paramÚtre, vous pouvez recevoir une réponse 422 Unprocessable Entity
et un message dâerreur « Demande non valide ». Par exemple, vous obtiendrez cette erreur si vous spĂ©cifiez une valeur de paramĂštre en tant que tableau, mais que le point de terminaison attend une chaĂźne. Vous pouvez consulter la documentation de rĂ©fĂ©rence du point de terminaison pour vĂ©rifier que vous utilisez les types de paramĂštres corrects et que vous incluez tous les paramĂštres obligatoires.
Ăchec de la validation
Si votre demande nâa pas pu ĂȘtre traitĂ©e, vous pouvez recevoir une rĂ©ponse 422 Unprocessable Entity
et un message dâerreur « Ăchec de validation ». Le corps de la rĂ©ponse inclut une propriĂ©tĂ© errors
, qui inclut une propriété code
pour vous aider Ă diagnostiquer le problĂšme.
Code | Description |
---|---|
missing | Une ressource nâexiste pas. |
missing_field | Un paramĂštre requis nâa pas Ă©tĂ© spĂ©cifiĂ©. Passez en revue la documentation du point de terminaison pour voir quels paramĂštres sont requis. |
invalid | La mise en forme dâun paramĂštre nâest pas valide. Pour plus dâinformations, consultez la documentation du point de terminaison. |
already_exists | Une autre ressource a la mĂȘme valeur que lâun de vos paramĂštres. Cela peut se produire dans les ressources qui doivent disposer dâune clĂ© unique (par exemple les noms dâĂ©tiquette). |
unprocessable | Les paramĂštres fournis nâĂ©taient pas valides. |
custom | Reportez-vous Ă la propriĂ©tĂ© message pour diagnostiquer lâerreur. |
Version non prise en charge
Vous devez utiliser lâen-tĂȘte X-GitHub-Api-Version
pour spĂ©cifier une version dâAPI. Par exemple :
curl --header "X-GitHub-Api-Version:2022-11-28" https://api.github.com/zen
Si vous spĂ©cifiez une version qui nâexiste pas, vous recevrez une erreur 400 Bad Request
et un message indiquant que la version nâest pas prise en charge.
Pour plus dâinformations, consultez « Versions des API ».
Agent utilisateur requis
Les demandes sans un en-tĂȘte User-Agent
valable seront rejetĂ©es. Vous devez utiliser votre nom dâutilisateur ou le nom de votre application pour la valeur User-Agent
.
curl envoie par dĂ©faut un en-tĂȘte User-Agent
valide.
Autres erreurs
Si vous observez une erreur qui nâest pas traitĂ©e ici, vous devez faire rĂ©fĂ©rence au message dâerreur que lâAPI vous donne. La plupart des messages dâerreur fournissent un indice sur ce qui est incorrect et un lien vers la documentation pertinente.
Si vous observez des dĂ©faillances inattendues, vous pouvez utiliser githubstatus.com ou lâAPI dâĂ©tat de GitHub pour vĂ©rifier si des incidents affectent lâAPI.