{"meta":{"title":"Résolution des problèmes de l’API REST","intro":"Découvrez comment diagnostiquer et résoudre les problèmes courants pour l’API REST.","product":"API REST","breadcrumbs":[{"href":"/fr/rest","title":"API REST"},{"href":"/fr/rest/using-the-rest-api","title":"En utilisant l’API REST"},{"href":"/fr/rest/using-the-rest-api/troubleshooting-the-rest-api","title":"Dépannage"}],"documentType":"article"},"body":"# Résolution des problèmes de l’API REST\n\nDécouvrez comment diagnostiquer et résoudre les problèmes courants pour l’API REST.\n\n## Erreurs de limite de débit\n\nGitHub 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](/fr/rest/overview/rate-limits-for-the-rest-api) ».\n\nSi 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.\n\nSi vous recevez une erreur de limite de débit, vous devez arrêter temporairement d’effectuer des demandes en fonction des instructions suivantes :\n\n* 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é.\n* Si l’en-tête `x-ratelimit-remaining` est `0`, vous ne devez pas effectuer une autre demande avant la durée spécifiée par l’en-tête `x-ratelimit-reset`. L’en-tête `x-ratelimit-reset` est en secondes d’époque UTC.\n* 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.\n\nContinuer à effectuer des requêtes alors que vous êtes limité par le rate limit peut entraîner le bannissement de votre intégration.\n\nPour 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](/fr/rest/guides/best-practices-for-using-the-rest-api).\n\n##\n\n```\n          `404 Not Found` pour une ressource existante\n```\n\nSi 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.\n\nSi vous recevez une réponse `404 Not Found` lorsque vous savez que la ressource que vous demandez existe, vous devez vérifier votre authentification. Par exemple :\n\n* Si vous utilisez un personal access token (classic), vous devez vous assurer que :\n  * Le jeton possède les étendues nécessaires pour utiliser ce point de terminaison. Pour plus d’informations, consultez « [Étendues des applications OAuth](/fr/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes) » et « [Gestion de vos jetons d’accès personnels](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) ».\n  * 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.\n  * Le jeton n’a pas expiré ou n’a pas été révoqué. Pour plus d’informations, consultez « [Expiration et révocation des jetons](/fr/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation) ».\n* Si vous utilisez un fine-grained personal access token, vous devez vous assurer que :\n  * 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.\n  * 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](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) ».\n  * 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](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) ».\n  * 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.\n  * Le jeton n’a pas expiré ou n’a pas été révoqué. Pour plus d’informations, consultez « [Expiration et révocation des jetons](/fr/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation) ».\n* Si vous utilisez un jeton d’accès d’installation GitHub App, vérifiez que :\n  * 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.\n  * Le point de terminaison affecte uniquement les ressources appartenant au compte où les GitHub App sont installées.\n  * Les GitHub App ont accès aux référentiels affectés par le point de terminaison.\n  * Le jeton n’a pas expiré ou n’a pas été révoqué. Pour plus d’informations, consultez « [Expiration et révocation des jetons](/fr/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation) ».\n* Si vous utilisez un jeton d’accès utilisateur GitHub App, vérifiez que :\n  * 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.\n  * 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.\n  * Les GitHub App ont accès aux référentiels affectés par le point de terminaison.\n  * L’utilisateur a accès à tous les référentiels affectés par le point de terminaison.\n  * 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](/fr/apps/using-github-apps/approving-updated-permissions-for-a-github-app) ».\n* Si vous utilisez un jeton d’accès utilisateur OAuth app, vérifiez que :\n  * Le jeton possède les étendues nécessaires pour utiliser ce point de terminaison. Pour plus d’informations, consultez « [Étendues des applications OAuth](/fr/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes) ».\n  * 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.\n  * 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 à leurs utilisateurs de vérifier cela. Pour plus d’informations, consultez [À propos des restrictions d’accès des applications OAuth](/fr/organizations/managing-oauth-access-to-your-organizations-data/about-oauth-app-access-restrictions).\n  * Le jeton n’a pas expiré ou n’a pas été révoqué. Pour plus d’informations, consultez « [Expiration et révocation des jetons](/fr/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation) ».\n* Si vous utilisez `GITHUB_TOKEN` dans un flux de travail GitHub Actions, vérifiez que :\n  * 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.\n\nPour plus d’informations sur l’authentification, consultez [Authentification auprès de l’API REST](/fr/rest/overview/authenticating-to-the-rest-api).\n\nVous devez également vérifier 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.\n\nEn 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.\n\n## Résultats manquants\n\nLa 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 parcourir les résultats. Pour plus d’informations, consultez « [Utilisation de la pagination dans l’API REST](/fr/rest/guides/using-pagination-in-the-rest-api) ».\n\nSi 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\n## Nécessite une authentification lors de l’utilisation de l’authentification de base\n\nL’authentification de base avec votre nom d’utilisateur et votre mot de passe n’est pas prise en charge. À la place, vous devez utiliser un personal access token ou un jeton d’accès pour un GitHub App ou un OAuth app. Pour plus d’informations, consultez « [Authentification auprès de l’API REST](/fr/rest/overview/authenticating-to-the-rest-api) ».\n\n## Délais d’expiration\n\nSi 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 ».\n\nGitHub se réserve le droit de modifier le délai d’expiration pour protéger la vitesse et la fiabilité de l’API.\n\nVous pouvez vérifier le statut de l’API REST à [githubstatus.com](https://www.githubstatus.com/) pour déterminer si le temps d'attente 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.\n\n## Ressource non accessible\n\nSi 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.\n\nVous 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.\n\nLa 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.\n\nPar exemple :\n\n* `X-Accepted-GitHub-Permissions: contents=read` indique que votre GitHub App ou fine-grained personal access token doit disposer d’un accès en lecture à la permission de contenu.\n* `X-Accepted-GitHub-Permissions: pull_requests=write,contents=read` indique que votre GitHub App ou fine-grained personal access token doit disposer d’un accès en écriture à la demande de tirage ainsi que d’un accès en lecture à la permission de contenu.\n* `X-Accepted-GitHub-Permissions: pull_requests=read,contents=read; issues=read,contents=read` indique que votre GitHub App ou fine-grained personal access token doit disposer soit d’un accès en lecture à la permission de demande de tirage et d’un accès en lecture à la permission de contenu, soit d’un accès en lecture à la permission d’issues et d’un accès en lecture à la permission de contenu\n\n## Problèmes d’analyse JSON\n\nSi 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.\n\n## Le corps doit être un objet JSON\n\nSi 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 ».\n\n## Demande non valide\n\nSi 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.\n\n## Échec de la validation\n\nSi 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.\n\n| Code             | Description                                                                                                                                                                          |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `missing`        | Une ressource n’existe pas.                                                                                                                                                          |\n| `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.                                           |\n| `invalid`        | La mise en forme d’un paramètre n’est pas valide. Pour plus d’informations, consultez la documentation du point de terminaison.                                                      |\n| `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). |\n| `unprocessable`  | Les paramètres fournis n’étaient pas valides.                                                                                                                                        |\n| `custom`         | Reportez-vous à la propriété `message` pour diagnostiquer l’erreur.                                                                                                                  |\n\n## Version non prise en charge\n\nVous devez utiliser l’en-tête `X-GitHub-Api-Version` pour spécifier une version d’API. Par exemple :\n\n```shell\ncurl --header \"X-GitHub-Api-Version:2026-03-10\" https://api.github.com/zen\n```\n\nSi 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.\n\nPour plus d’informations, consultez « [Versions des API](/fr/rest/overview/api-versions) ».\n\n## Agent utilisateur requis\n\nLes 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`.\n\ncurl envoie par défaut un en-tête `User-Agent` valide.\n\n## Autres erreurs\n\nSi 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.\n\nSi vous observez des défaillances inattendues, vous pouvez utiliser [githubstatus.com](https://www.githubstatus.com/) ou l'[API d'état de GitHub](https://www.githubstatus.com/api) pour vérifier si des incidents affectent l'API.\n\n## Pour aller plus loin\n\n* [Meilleures pratiques pour utiliser l'API REST](/fr/rest/guides/best-practices-for-using-the-rest-api)\n* [Résolution des problèmes liés aux webhooks](/fr/webhooks/testing-and-troubleshooting-webhooks/troubleshooting-webhooks)\n* [Meilleures pratiques pour la création d’une application GitHub](/fr/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app)"}