---
title: "Codes d’erreur de l’API Twitter et référence des statuts HTTP"
description: "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."
lastModified: "2026-10-08"
sidebar:
  label: "Référence des erreurs"
seo:
  title: "Codes d’erreur de l’API Twitter : 401, 403, 429 et nouvelles tentatives"
search:
  tags: ["codes d’erreur de l’API Twitter", "erreurs de l’API X", "invalid auth_token", "429 Too Many Requests", "twitter_error_code"]
---

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](/fr/api-reference/overview) actuelle. Pour les erreurs MCP, la reprise de la pagination et les exemples de SDK, consultez [Gestion des erreurs](/fr/guides/error-handling).

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](/fr/authentication#opérations-décriture-et-byoc-bring-your-own-cookie).
- **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`** : respectez `Retry-After` ou `retry_after` et distinguez la limitation des requêtes de la limite quotidienne d’un compte X. Consultez [Limites de requêtes](/fr/guides/rate-limits).
- **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](#codes-derreur-de-lapi-twitterx) et les [questions sur les nouvelles tentatives](#questions-sur-les-erreurs-de-lapi-twitter-et-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` :

```json
{
  "code": 500,
  "msg": "Internal server error"
}
```

```json
{
  "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 X `502`, 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 HTTP `Retry-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 |

:::warning
**Deux types de 401.** Un `401` au niveau de l’API signifie que votre **clé d’API** est incorrecte. Pour les endpoints d’écriture (publication, ajout d’un J’aime, modification du profil), un `401` peut aussi indiquer que les **identifiants de session X fournis dans `cookie`** sont invalides ou ont expiré ; le message peut être `Invalid auth_token` ou `Could not authenticate you`. Dans ce cas, renouvelez les identifiants de session X. Consultez [Authentification](/fr/authentication#opérations-décriture-et-byoc-bring-your-own-cookie).
:::

## 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. |

:::info
Un `403` causé par un **compte cible protégé ou suspendu** nécessite de modifier l’accès ou de changer de compte. Un `502` peut être temporaire. Consultez le statut et le corps avant de choisir une politique de nouvelle tentative.
:::

## 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](/fr/api-reference/tweet-actions-endpoints/create-tweet-twitter-tweets-create-post).

| 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é](/fr/api-reference/dm-endpoints/send-dm-api-v3-v3-twitter-send-dm-post).

| 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 |

:::info
**Contenu soumis à des restrictions régionales.** Les restrictions d’accès de X peuvent dépendre de la localisation, y compris du point de sortie d’un proxy fourni. Consultez la réponse et vérifiez la disponibilité du compte cible ; ne supposez pas que l’accès par l’API contourne les restrictions régionales.
:::

## 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](/fr/api-reference/article-endpoints/article-create-draft-x-articles-draft-post) 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.

:::warning Nouvelles tentatives d’écriture
Après un dépassement du délai d’attente, une réponse vide ou un `5xx` lors d’une écriture, vérifiez le fil du compte, l’historique des messages privés ou l’état de l’interaction avant de renvoyer l’action. Ne supposez pas qu’une réponse d’échec signifie que l’action n’a jamais eu lieu.
:::

## 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](/fr/guides/error-handling) — MCP, SDK et reprise de la pagination
- [Authentification](/fr/authentication) — clés d’API et identifiants de session X
- [Limites de requêtes](/fr/guides/rate-limits) — délais d’attente et débit
- [Présentation de l’API](/fr/api-reference/overview) — référence actuelle des endpoints
