Codes d’erreur de l’API Twitter et référence des statuts HTTP
Résolvez les erreurs de l’API Twitter/X dans TwexAPI : HTTP 401, 403, 429 et 5xx, invalid auth_token, tweets en double, limites des messages privés et nouvelles tentatives sûres.
TwexAPI signale les échecs de l’API Twitter/X au moyen de statuts HTTP et, lorsqu’ils sont disponibles, de codes d’erreur renvoyés par X. Un 401 nécessite de corriger les identifiants, un 403 de résoudre un problème d’accès ou de compte, et un 429 d’attendre la réinitialisation de la limite de requêtes. Vérifiez le corps de la réponse avant de réessayer.
Utilisez cette référence pour résoudre les codes d’erreur de l’API Twitter, les erreurs invalid auth_token, les tweets en double et les limites des messages privés. Les chemins des endpoints suivent la référence de l’API actuelle. Pour les erreurs MCP, la reprise de la pagination et les exemples de SDK, consultez Gestion des erreurs.
Les messages et codes renvoyés par X ci-dessous sont des exemples de diagnostic ; la structure des réponses et leur correspondance avec les statuts HTTP peuvent varier selon l’endpoint. Consultez à la fois le schéma de l’endpoint et la réponse réelle.
Trouver la solution à une erreur de l’API Twitter
- HTTP 401 /
Invalid auth_token: vérifiez votre clé d’API TwexAPI ainsi que les identifiants de session X utilisés par les endpoints d’écriture. Consultez Authentification. - HTTP 403 : vérifiez si le message indique un manque de crédits, des publications protégées, des restrictions de compte ou une exigence Premium. Répéter une requête à l’identique ne rétablit pas l’accès.
- HTTP 429 /
Too Many Requests: respectezRetry-Afterouretry_afteret distinguez la limitation des requêtes de la limite quotidienne d’un compte X. Consultez Limites de requêtes. - HTTP 500 / 502 / 503 : réessayez les lectures qui échouent temporairement en augmentant les délais d’attente jusqu’à un maximum. Vérifiez si une écriture a déjà réussi avant de la répéter.
- Codes X 187, 344 ou 502 : ce sont des codes renvoyés par X, distincts des statuts HTTP. Consultez le tableau des codes Twitter/X et les questions sur les nouvelles tentatives.
Format des réponses d’erreur
Conservez le statut HTTP et le corps JSON complet. Les réponses de TwexAPI peuvent inclure code et msg ; les erreurs de validation des requêtes utilisent detail :
{
"code": 500,
"msg": "Internal server error"
}
{
"detail": [
{
"loc": ["body", "cookie"],
"msg": "Field required",
"type": "missing"
}
]
}
Si la réponse contient des métadonnées supplémentaires provenant de X, conservez-les :
error: un message d’erreur, lorsqu’il est fourni. Ne supposez pas que tous les endpoints utilisent ce champ.twitter_error_code: un code d’erreur X, lorsqu’il est fourni. Il est indépendant du statut HTTP ; le code X502, par exemple, correspond à une limite des messages privés.retry_after: le nombre de secondes à attendre, lorsqu’il est fourni. Respectez également l’en-tête HTTPRetry-After.
N’exigez pas la présence des champs facultatifs et ne fondez pas vos décisions uniquement sur le texte exact du message. Un statut HTTP autre que 2xx indique un échec, même si le corps contient un code différent.
Erreurs courantes pour tous les endpoints
Vérifiez ces conditions pour toute requête. Les messages exacts peuvent varier.
| Statut | Message | Signification | Mesure à prendre |
|---|---|---|---|
| 401 | Invalid or missing API key |
Votre clé d’API est absente ou incorrecte | Vérifiez votre en-tête Authorization: Bearer <key> |
| 400 | Missing required … param: <x> |
Un champ ou paramètre obligatoire est absent ou invalide | Corrigez la requête |
| 429 | Please try again shortly. (capacité de notre service) · Rate limit exceeded… · ou un message de limite côté X |
Trop de requêtes, capacité de notre service ou limite d’un compte X (par exemple, limite quotidienne des messages privés ou des tweets ; ces réponses peuvent inclure twitter_error_code) |
Respectez retry_after / Retry-After ; les limites quotidiennes du compte nécessitent une attente plus longue |
| 403 | Crédits épuisés ou accès refusé | Crédits insuffisants ou permissions de compte insuffisantes | Vérifiez le solde et l’accès du compte |
| 422 | Erreur de validation (detail) |
Les champs de la requête ne respectent pas le schéma | Corrigez les champs indiqués dans detail ; ne réessayez pas à l’identique |
| 500 | Internal server error |
Une erreur temporaire s’est produite | Réessayez dans un court délai |
Statuts HTTP de l’API Twitter
| Statut | Signification |
|---|---|
| 200 | Réussite |
| 202 | Accepté ; si un endpoint renvoie ce statut, l’action est en attente |
| 400 | Requête incorrecte, paramètres absents ou invalides, URL de proxy invalide ou fichier multimédia trop volumineux |
| 401 | Non autorisé, clé d’API incorrecte ou auth_token invalide ou expiré |
| 403 | Interdit : crédits insuffisants, compte cible protégé/privé ou suspendu (ses publications ne peuvent pas être lues), compte suspendu ou verrouillé que vous utilisez, restriction de permissions ou action réservée à Premium |
| 404 | Introuvable : l’utilisateur, le tweet ou la ressource n’existe pas |
| 409 | Conflit, tweet en double |
| 410 | Ressource indisponible ; consultez le corps pour les détails de suspension du compte |
| 422 | Échec de la validation de la requête ; consultez detail et corrigez les données d’entrée |
| 423 | Si X le renvoie : le compte est verrouillé ou nécessite une vérification |
| 429 | Trop de requêtes, une limite de requêtes a été atteinte |
| 500 / 502 / 503 | Erreur temporaire du serveur ou du service en amont ; réessayez |
Codes d’erreur de l’API Twitter/X
Lorsqu’un code X figure dans la réponse, utilisez les significations suivantes. Il s’agit de codes X, pas de statuts HTTP, et tous les endpoints n’exposent pas twitter_error_code.
| Code | Signification | Mesure à prendre |
|---|---|---|
| 32 | Votre authentification a échoué | Renouvelez les identifiants de session X fournis dans cookie |
| 63 | Le compte cible est suspendu | Utilisez un compte accessible ou attendez le rétablissement de l’accès |
| 64 | Votre compte est suspendu | Utilisez un autre compte |
| 131 | Erreur interne temporaire de X | Réessayez |
| 139 | Vous avez déjà ajouté un J’aime | Confirmez l’état actuel ; ne répétez pas l’action |
| 144 | Aucun tweet trouvé avec cet ID | Le tweet a été supprimé ou l’ID est incorrect |
| 187 | Tweet en double | Confirmez la publication précédente, puis modifiez le texte si vous souhaitez créer une nouvelle publication |
| 226 | La requête semblait automatisée | Réessayez |
| 326 | Compte temporairement verrouillé | Déverrouillez-le sur x.com/account/access, puis réessayez |
| 327 | Vous avez déjà retweeté | Confirmez l’état actuel ; ne répétez pas l’action |
| 344 | Publication temporairement limitée (limitation du réseau/de l’IP, pas du compte) | Augmentez le délai d’attente et vérifiez le proxy si vous en avez fourni un ; confirmez le résultat de l’écriture avant de réessayer |
| 349 | Impossible d’envoyer un message à cet utilisateur | Le destinataire n’accepte pas vos messages privés |
| 399 | Échec de la connexion à la session X | Vérifiez les identifiants de session X |
| 433 | Réponses restreintes / Premium requis | Le tweet limite les réponses ou l’action nécessite X Premium |
| 465 | Impossible de retweeter un ancien tweet | Le tweet est trop ancien pour être retweeté |
| 476 | Envoi de demandes de message non autorisé | Le compte ne peut pas envoyer de demandes de message privé |
| 502 | Limite quotidienne des messages privés (demandes de message) atteinte | Attendez 24 heures ou utilisez un compte X Premium pour bénéficier de limites plus élevées |
Lecture des tweets et recherche
S’applique à POST /twitter/{screen_name}/timeline/page, /twitter/tweets-replies/page et /twitter/advanced_search/page.
| Statut | Message | Mesure à prendre |
|---|---|---|
| 403 | This account's posts are not available. The account is protected (private), suspended, or no longer active. |
Ne réessayez pas à l’identique : l’accès doit changer pour que la requête puisse réussir. Seuls les abonnés approuvés peuvent lire les publications du compte cible. Dirigez la requête vers un compte public. |
| 403 | This account is suspended, so its posts are not available. |
Le compte cible est suspendu. Utilisez un compte accessible ou attendez le rétablissement de l’accès. |
| 502 | Upstream returned an unexpected response — please retry. |
Échec du service en amont. Réessayez avec des délais d’attente croissants, plafonnés ; conservez le même curseur. |
Publication et interactions
Créer un tweet
POST /twitter/tweets/create
Utilisez tweet_content, le champ facultatif reply_tweet_id et vos identifiants X dans cookie. Consultez Créer un tweet ou une réponse.
| Statut | Code | Message | Mesure à prendre |
|---|---|---|---|
| 409 | 187 | Status is a duplicate. |
Vérifiez si la publication existe déjà ; modifiez le texte pour une nouvelle publication |
| 403 | 433 | The original Tweet author restricted who can reply… |
Le tweet n’autorise pas votre réponse |
| 403 | 433 | Texte long / vidéo longue nécessitant Premium | Utilisez un compte Premium ou raccourcissez le contenu |
| 403 | n/a | Vous n’êtes pas membre de la communauté | Rejoignez d’abord la communauté |
| 429 | 344 | Publication temporairement limitée (limitation du réseau/de l’IP) | Augmentez le délai d’attente ; vérifiez le proxy fourni et confirmez si la publication a été créée |
| 502 | n/a | X returned an empty result (résultat non confirmé) |
Lisez le fil du compte avant de réessayer ; le résultat de l’écriture n’est pas confirmé |
| 400 | n/a | File size exceeds… |
Réduisez la taille du fichier multimédia |
| 503 | 226 | This request looks automated |
Augmentez le délai d’attente et vérifiez le résultat de l’écriture avant de réessayer |
| 502 / 503 | n/a | Erreur temporaire de connexion | Réessayez (si vous avez fourni un proxy, vérifiez qu’il fonctionne) |
J’aime / Retweet / Signet
POST /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
DELETE /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
| Statut | Code | Message | Mesure à prendre |
|---|---|---|---|
| 403 | n/a | User is suspended, deactivated or offboarded |
Le compte est indisponible ; changez de compte |
| 401 | 32 | Could not authenticate you |
Renouvelez les identifiants de session X fournis dans cookie |
| 403 | 465 | not permitted to retweet an outdated Tweet |
Le tweet est trop ancien pour être retweeté |
| Variable | 139 / 327 | J’aime déjà ajouté / tweet déjà retweeté | Confirmez l’état actuel ; ne répétez pas l’action |
| 429 | n/a | Limite de requêtes | Réduisez la fréquence, puis réessayez |
| 502 / 503 | n/a | Erreur temporaire de connexion | Réessayez |
Supprimer un tweet
POST /twitter/tweets/delete-batch
Fournissez target_id pour supprimer un seul tweet. Si vous l’omettez, vous sélectionnez la suppression en masse ; conservez les champs de la requête d’origine lors de la reprise après une erreur.
| Statut | Message | Mesure à prendre |
|---|---|---|
| 404 | No status found with that ID |
Déjà supprimé ou ID incorrect |
| 403 | Vous n’êtes pas l’auteur | Vous ne pouvez supprimer que vos propres tweets |
| 401 | auth_token invalide |
Renouvelez les identifiants de session X |
S’abonner / Se désabonner
POST /twitter/user/follow · DELETE /twitter/user/follow
| Statut | Message | Mesure à prendre |
|---|---|---|
| 404 | User not found |
Vérifiez le nom d’utilisateur ou l’ID |
| 403 | Restriction | Votre compte ou le compte cible ne l’autorise pas |
| 401 | auth_token invalide |
Renouvelez les identifiants de session X |
| 429 | Limite d’abonnements | Attendez, puis réessayez |
Modifier le profil / L’avatar / La bannière
POST /twitter/profile
Utilisez profile_image et profile_banner pour les URL des images, et cookie pour les identifiants X.
| Statut | Message | Mesure à prendre |
|---|---|---|
| 401 | Invalid auth_token - could not fetch credentials |
Renouvelez les identifiants de session X |
| 400 | Image trop volumineuse / format incorrect | Corrigez l’image |
Pièces jointes multimédias
Joignez des fichiers multimédias lors de la création de tweets ou de l’envoi de messages privés ; la référence actuelle ne contient pas de route distincte de téléversement de médias. Pour la création de tweets, media_urls accepte jusqu’à quatre images, un GIF ou une vidéo. Ne combinez pas un GIF ou une vidéo avec d’autres médias. Corrigez les URL inaccessibles, les formats non pris en charge ou les tailles de fichier refusées avant de réessayer. Suivez le schéma de l’endpoint pour les noms des champs et les contraintes.
Messages privés
POST /v3/twitter/send-dm · /v3/twitter/dm-history · /v3/twitter/conversations
Pour vérifier les permissions, utilisez POST /v2/dm/status. Consultez Envoyer un message privé.
| Statut | Code | Message | Mesure à prendre |
|---|---|---|---|
| 429 | 502 | You've hit your daily message request limit. Subscribe to Premium for higher limits. |
Attendez 24 h ou utilisez un compte Premium |
| 403 | 476 | Sender is not verified to send message requests |
Le compte ne peut pas envoyer de demandes de message privé |
| 403 | 349 | Cannot send messages to this user |
Le destinataire n’accepte pas vos messages privés |
| 401 | 32 | Could not authenticate you |
Renouvelez les identifiants de session X |
| 404 | n/a | Conversation / utilisateur introuvable | Vérifiez le destinataire |
Lecture des données
POST /v2/tweet/detail · /twitter/tweets/lookup · /twitter/users/by_ids · /v3/twitter/users/followers · /v3/twitter/users/following · /twitter/tweets/thread_by_id · /twitter/tweets/{tweet_id}/replies/page
GET /twitter/{screen_name}/about · /twitter/search-user/{keyword}/{target_count}
| Statut | Message | Mesure à prendre |
|---|---|---|
| 404 | Tweet not found: <id> |
Le tweet a été supprimé, est protégé ou l’ID est incorrect |
| 404 | Could not resolve userId for @<handle> |
Le nom d’utilisateur n’existe pas, a changé ou correspond à un compte suspendu |
| 404 | Could not find user with ID: <id> |
Vérifiez l’ID de l’utilisateur |
| 400 | Missing required query param: <x> |
Fournissez le paramètre obligatoire |
| 429 | Limite de requêtes | Attendez retry_after, puis réessayez |
Articles
POST /x/article · GET /x/article/{tweet_id}/markdown
Pour les écritures : POST /x/articles/draft · PUT /x/articles/{article_id}/cover · /x/articles/{article_id}/title · /x/articles/{article_id}/content · POST /x/articles/{article_id}/publish ou /x/articles/publish.
L’exigence Premium ci-dessous s’applique à la publication d’articles. Privilégiez le parcours de création d’article étape par étape pour conserver article_id et réessayer uniquement l’étape qui a échoué.
| Statut | Message | Mesure à prendre |
|---|---|---|
| 403 | Premium requis | La publication d’articles nécessite un compte X Premium |
| 404 | Article introuvable | Vérifiez l’ID de l’article |
| 401 | auth_token invalide |
Renouvelez les identifiants de session X |
| 400 | Contenu invalide | Corrigez le corps de l’article |
Guide des nouvelles tentatives
| Vous voyez… | Réessayer ? | Remarques |
|---|---|---|
| 429 | ✅ après le délai indiqué | Respectez les limites quotidiennes du compte ainsi que les limites de requêtes |
| 422 | ❌ | Corrigez les champs indiqués dans la réponse de validation |
| 500 / 502 / 503 | ✅ | Erreur temporaire, réessayez dans un court délai |
| Code X 226 | Après avoir vérifié le résultat de l’écriture | Augmentez le délai d’attente ; vérifiez les restrictions du compte avant de réessayer |
| 401 | ❌ | Corrigez votre clé d’API ou renouvelez les identifiants de session X |
| 403 (compte suspendu/verrouillé) | ❌ | Utilisez un autre compte ou déverrouillez-le d’abord |
| 404 | ❌ | Vérifiez l’ID ou le nom d’utilisateur |
| 400 / 409 | ❌ | Corrigez la requête (paramètres, taille des médias, texte en double) |
Conseil : Utilisez des délais d’attente croissants, plafonnés, avec une variation aléatoire pour 429 et les erreurs 5xx temporaires. Pour 400/401/403/404/409/422, corrigez d’abord les données d’entrée, les identifiants ou l’accès du compte.
Questions sur les erreurs de l’API Twitter et les nouvelles tentatives
Pourquoi l’API Twitter renvoie-t-elle 401 ou invalid auth_token ?
HTTP 401 peut indiquer que votre clé d’API TwexAPI est absente ou invalide. Pour les endpoints d’écriture, Invalid auth_token ou le code X 32 peuvent aussi indiquer que la session X a expiré. Corrigez l’en-tête Bearer ou renouvelez les identifiants X fournis dans cookie avant de réessayer.
Quelle est la différence entre les erreurs 403 et 429 de l’API Twitter ?
HTTP 403 indique un problème d’accès, comme des crédits insuffisants, du contenu privé, un compte restreint ou une action réservée à Premium. HTTP 429 indique une limite de requêtes ou de compte. Corrigez la cause d’un 403 ; après un 429, attendez la réinitialisation de la limite indiquée.
Comment résoudre l’erreur 429 Too Many Requests de l’API Twitter ?
Respectez le délai indiqué par Retry-After ou retry_after lorsqu’il est fourni, puis reprenez avec moins de requêtes simultanées et des délais d’attente croissants, plafonnés. Une limite quotidienne de tweets ou de messages privés nécessite d’attendre sa réinitialisation, pas seulement de faire une courte pause. Conservez le curseur de la page qui a échoué lorsque vous réessayez une lecture.
Que signifie le code d’erreur Twitter 187 ?
Le code d’erreur X 187 signifie que le contenu du tweet est en double. Vérifiez si l’écriture précédente a déjà créé la publication. Si vous souhaitez publier un contenu différent, modifiez tweet_content au lieu de répéter la même requête.
Que signifie le code d’erreur Twitter 344 ?
Le code d’erreur X 344 indique une restriction temporaire de publication liée au réseau ou à l’IP. Augmentez le délai d’attente, vérifiez tout proxy que vous avez fourni et consultez le fil du compte avant de réessayer l’écriture. Il s’agit d’un code d’erreur X, pas d’un statut HTTP.
Faut-il réessayer les erreurs 500, 502 ou 503 de l’API Twitter ?
Réessayez les lectures qui échouent temporairement avec des délais d’attente croissants, plafonnés, et une variation aléatoire. Après une écriture qui dépasse le délai d’attente ou renvoie 5xx, consultez d’abord le fil du compte, l’historique des messages privés ou l’état de l’interaction. Une réponse d’échec ne prouve pas que l’écriture n’a jamais été appliquée.
Faut-il réessayer après une erreur de validation 422 de TwexAPI ?
Ne réessayez pas avec les mêmes données d’entrée. TwexAPI utilise HTTP 422 pour les erreurs de validation des requêtes. Consultez detail pour identifier le champ en échec, son emplacement et le type d’erreur, puis corrigez la requête conformément au schéma de l’endpoint.
Le code d’erreur Twitter 502 est-il identique à HTTP 502 ?
Non. Le code d’erreur X 502 correspond à une limite quotidienne de demandes de message privé et peut accompagner HTTP 429. HTTP 502 indique un échec de réponse du service en amont. Lisez le statut HTTP et twitter_error_code, lorsqu’il est fourni, avant de choisir une politique de nouvelle tentative.
Pages connexes
- Gestion des erreurs — MCP, SDK et reprise de la pagination
- Authentification — clés d’API et identifiants de session X
- Limites de requêtes — délais d’attente et débit
- Présentation de l’API — référence actuelle des endpoints