---
title: "Erreurs 429, 403 et 401 de l'API Twitter : causes et solutions"
description: "Corrigez les erreurs 429 Too Many Requests, 403 Forbidden et 401 Unauthorized de l'API X (Twitter) : ce que signifie chaque code sur l'API X officielle et sur TwexAPI, quels en-têtes lire et quand réessayer."
lastModified: "2026-10-19"
sidebar:
  label: "Erreurs 429, 403 et 401"
seo:
  title: "Erreurs 429, 403 et 401 de l'API Twitter : solutions"
search:
  tags: ["erreur 429 twitter", "twitter api 429", "twitter api 403 forbidden", "twitter api 401 unauthorized", "Request failed with status code 401", "x-rate-limit-reset"]
---

**En bref :** `429` signifie que vous avez envoyé trop de requêtes et devez attendre. `403` signifie que vos identifiants sont valides, mais qu'ils n'ont pas le droit de faire cette action. `401` signifie que vos identifiants sont absents ou incorrects. Seul un `429` se règle en attendant ; un `403` ou un `401` renverra la même erreur tant que vous ne changez pas la requête, les identifiants ou les accès.

| Code | Signification | À vérifier d'abord | Réessayer ? |
| :--- | :--- | :--- | :--- |
| **429 Too Many Requests** | Limite de débit, plafond d'utilisation ou limite quotidienne du compte atteinte | En-tête `x-rate-limit-reset` ou `Retry-After` | ✅ Après l'attente indiquée |
| **403 Forbidden** | Authentifié, mais sans autorisation pour cet endpoint, cette action ou ce compte | Accès de l'app, type de jeton, permissions, Credits, compte ciblé | ❌ Corrigez d'abord l'accès |
| **401 Unauthorized** | Identifiants absents, invalides, expirés ou mal signés | En-tête `Authorization` et la clé ou le jeton utilisé | ❌ Corrigez d'abord les identifiants |

Ces solutions s'appliquent que vous appeliez l'API directement ou que l'erreur apparaisse dans un outil. Les messages comme `Request failed with status code 401` ou `status code 429` viennent du client HTTP (par exemple axios, utilisé par n8n et de nombreux bots Node.js) et reprennent le code renvoyé par l'API appelée : leur sens est le même.

## Identifiez d'abord quelle API a renvoyé l'erreur

Un même code n'a pas la même cause selon qui le renvoie :

- **API X officielle** (`api.x.com` ou `api.twitter.com`) : les erreurs suivent les règles de la plateforme développeurs de X sur les apps, les projets, OAuth et les fenêtres de limite de débit.
- **TwexAPI** (`api.twexapi.io`) : les erreurs concernent votre clé TwexAPI, vos Credits et, pour les écritures, la session X que vous avez fournie. Consultez la [référence des codes d'erreur TwexAPI](/fr/guides/error-reference).
- **Le site x.com ou l'app X** : un message « Rate limit exceeded » pendant la navigation vient des limites que X applique à votre compte, pas d'une API développeur.

## Erreur 429 Too Many Requests de l'API Twitter

### Sur l'API X officielle

X applique des limites par endpoint sur des fenêtres généralement de 15 minutes ou de 24 heures, séparément par app et par utilisateur. Chaque réponse contient trois en-têtes :

| En-tête | Signification |
| :--- | :--- |
| `x-rate-limit-limit` | Requêtes autorisées dans la fenêtre actuelle |
| `x-rate-limit-remaining` | Requêtes restantes dans la fenêtre actuelle |
| `x-rate-limit-reset` | Horodatage Unix de réinitialisation de la fenêtre |

Quand vous dépassez une limite, X renvoie HTTP `429`. Les anciens corps de réponse de type v1.1 affichent le code d'erreur `88` et `Rate limit exceeded`. Les réponses problem plus récentes utilisent le type `rate-limit-exceeded`, ou `usage-capped` si votre compte a atteint un plafond d'utilisation plutôt qu'une fenêtre de débit.

Pour corriger :

1. **Attendez `x-rate-limit-reset`.** Réessayer avant renvoie un nouveau `429`.
2. **Surveillez `x-rate-limit-remaining`.** Ralentissez avant qu'il atteigne zéro, pas après.
3. **Vérifiez les limites quotidiennes.** Certains endpoints d'écriture, comme publier ou liker, ont des plafonds sur 24 heures par app ou par utilisateur. Attendre quelques minutes ne les réinitialise pas.
4. **Mettez en cache et étalez les requêtes.** Évitez de récupérer sans cesse le même profil ou le même tweet, et ne lancez pas toutes vos tâches à l'heure pile.

Sur l'API X facturée à l'usage, limites de débit et facturation sont indépendantes. Une requête peut respecter la limite et s'ajouter quand même à votre facture : le cache vous fait économiser de l'argent autant que du quota.

### Sur TwexAPI

Un `429` de TwexAPI peut venir d'une limitation des requêtes ou d'une limite du compte X atteinte pendant une écriture (par exemple le code X `344` pour les publications ou `502` pour la limite quotidienne de DM). Respectez l'en-tête `Retry-After` ou le champ `retry_after` lorsqu'ils sont présents. Les limites quotidiennes du compte exigent d'attendre leur réinitialisation, pas un court délai. Consultez [Limites de débit](/fr/guides/rate-limits) pour le backoff et une reprise compatible avec la pagination.

### Sur x.com dans un navigateur ou dans l'app X

X limite la quantité de contenu que chaque compte peut charger. Si « Rate limit exceeded » s'affiche pendant que vous faites défiler, patientez avant de recharger, fermez les onglets inutiles et les extensions qui actualisent automatiquement, et évitez les réseaux partagés ou les sorties VPN utilisées par beaucoup de monde. Pour simplement consulter un profil public sans compte, vous pouvez utiliser le [visualiseur Twitter](https://twexapi.io/twitter-viewer) gratuit.

## Erreur 403 Forbidden de l'API Twitter

Un `403` signifie que X ou TwexAPI a reconnu vos identifiants mais refuse la requête. Répéter la même requête renvoie le même `403`.

### Sur l'API X officielle

| Cause | Symptôme | Solution |
| :--- | :--- | :--- |
| **App non inscrite ou sans accès** | Type de problème `client-forbidden` ; les anciennes réponses utilisent le code `453` (« You currently have access to a subset of… ») | Utilisez les clés d'une app rattachée à un Project et vérifiez que l'accès de votre compte inclut cet endpoint |
| **Mauvais type de jeton** | Publier, liker, suivre ou envoyer un DM avec un Bearer Token app-only | Utilisez un jeton en contexte utilisateur : access token et secret OAuth 1.0a, ou jeton utilisateur OAuth 2.0 |
| **Permissions ou scopes manquants** | Jeton utilisateur d'une app en Read only, ou jeton OAuth 2.0 sans scopes comme `tweet.write` | Passez l'app en Read and write (et Direct Messages si besoin), puis **régénérez** l'access token et le secret ou faites réautoriser l'utilisateur |
| **Ressource protégée ou indisponible** | Type de problème `not-authorized-for-resource` | Le compte ciblé est privé ou le contenu restreint ; demandez un contenu visible par votre utilisateur |
| **Action en double ou restreinte** | Texte de publication identique, tweets aux réponses restreintes, tweets déjà likés | Modifiez le contenu ou vérifiez l'état actuel avant de réessayer |

Modifier les permissions de l'app ne met pas à jour les jetons existants. Après le passage en Read and write, générez de nouveaux jetons utilisateur ; sinon, la publication continuera de renvoyer `403`.

### Sur TwexAPI

Un `403` de TwexAPI signifie généralement l'un des cas suivants :

- **Credits épuisés** : vérifiez votre solde avec [Get Balance](/fr/api-reference/balance-endpoints/get-balance-api-balance-get) et rechargez depuis le [tableau de bord](https://twexapi.io/dashboard).
- **Compte ciblé protégé ou suspendu** : seuls ses abonnés approuvés peuvent lire ses publications. Ciblez un compte public.
- **Restriction du compte ou de l'action** : le compte X fourni pour l'écriture est suspendu ou verrouillé, le tweet restreint les réponses (code X `433`), ou l'action nécessite X Premium.

Chaque message et sa solution figurent dans la [référence des codes d'erreur](/fr/guides/error-reference).

## Erreur 401 Unauthorized de l'API Twitter

Un `401` signifie que la requête n'a pas pu prouver votre identité. Corrigez les identifiants : réessayer sans rien changer ne fonctionne jamais.

### Sur l'API X officielle

- **En-tête mal formé** : les requêtes app-only exigent exactement `Authorization: Bearer <token>`. Un préfixe `Bearer ` manquant, des guillemets en trop ou un retour à la ligne en fin de variable d'environnement renvoient `401`.
- **Identifiants régénérés ou révoqués** : régénérer des clés dans le portail développeurs invalide immédiatement les anciennes. Mettez à jour tous les endroits où elles sont stockées.
- **Mauvaise combinaison d'identifiants** : OAuth 1.0a nécessite la consumer key et son secret **plus** l'access token et le secret de l'utilisateur. Mélanger les clés de deux apps, ou utiliser une clé d'API à la place d'un jeton, renvoie `401`.
- **Erreurs de signature OAuth 1.0a** : le code `32` (`Could not authenticate you`) indique le plus souvent une mauvaise signature. Vérifiez l'encodage URL des paramètres et l'exactitude de l'horloge du serveur ; un horodatage décalé invalide la signature.
- **Jeton utilisateur OAuth 2.0 expiré** : les jetons d'accès utilisateur expirent. Demandez le scope `offline.access` et utilisez le refresh token pour en obtenir un nouveau.

### Sur TwexAPI

- **Clé d'API absente ou incorrecte** : envoyez `Authorization: Bearer YOUR_API_KEY` avec une clé du [tableau de bord](https://twexapi.io/dashboard). Voir [Authentification](/fr/authentication).
- **Session X expirée sur les endpoints d'écriture** : `Invalid auth_token` ou le code X `32` lors d'une publication, d'un like ou d'un DM signifie que les identifiants de session X fournis dans `cookie` ont expiré. Renouvelez-les ; votre clé d'API est correcte.

## Ne réessayez que ce qui peut réussir

Ce helper Python réessaie les réponses `429` et `5xx` transitoires et renvoie immédiatement tous les autres statuts. Il respecte `Retry-After` (TwexAPI et la plupart des API HTTP) et `x-rate-limit-reset` (API X officielle) :

```python
import random
import time

import requests


def request_with_retry(method, url, max_attempts=5, **kwargs):
    for attempt in range(max_attempts):
        response = requests.request(method, url, timeout=30, **kwargs)
        if response.status_code != 429 and response.status_code < 500:
            return response  # success, or a 4xx that waiting won't fix

        wait = None
        retry_after = response.headers.get("Retry-After", "")
        reset_at = response.headers.get("x-rate-limit-reset", "")
        if retry_after.isdigit():
            wait = int(retry_after)
        elif reset_at.isdigit():
            wait = max(0, int(reset_at) - time.time()) + 1
        if wait is None:
            wait = min(300, 5 * 2 ** attempt) + random.uniform(0, 1)

        time.sleep(wait)

    return response
```

Pour les lectures paginées, réessayez avec le **même curseur** après un `429`, pas le suivant. Pour les écritures, vérifiez si la publication, le like ou le DM a déjà été appliqué avant de le renvoyer ; un timeout ne prouve pas que l'action a échoué.

## Quand les limites officielles sont le vrai problème

Si votre app se heurte sans cesse à des `429` en lecture, ou si la facture à la requête augmente plus vite que les données dont vous avez besoin, comparez le coût d'une API tierce facturée à l'usage. Les lectures TwexAPI coûtent environ 0,05 $ pour 1 000 tweets, avec une clé d'API et sans configuration OAuth, contre 5 $ pour 1 000 publications lues sur l'API X officielle. Voir [TwexAPI vs l'API X officielle](/fr/comparison/official-x-api) et le [calculateur de prix de l'API X](https://twexapi.io/x-api-pricing). TwexAPI n'est ni affiliée à X Corp. ni approuvée par elle.

## Questions sur les erreurs 429, 403 et 401 de l'API Twitter

### Combien de temps dure une erreur 429 de l'API Twitter ?

Jusqu'à l'heure indiquée par `x-rate-limit-reset`, en général moins de 15 minutes. Les endpoints soumis à des limites sur 24 heures, comme la publication, restent bloqués jusqu'à la réinitialisation de la fenêtre quotidienne. Sur TwexAPI, attendez la durée indiquée par `Retry-After` ou `retry_after`.

### Pourquoi j'obtiens 403 Forbidden en publiant un tweet avec l'API X ?

Généralement parce que le jeton ne peut pas écrire. Vous utilisez peut-être un Bearer Token app-only, l'app est en Read only, ou le jeton utilisateur a été créé avant l'activation de Read and write. Activez l'écriture, régénérez les jetons de l'utilisateur et publiez avec une authentification en contexte utilisateur.

### Que signifie « Request failed with status code 401 » dans n8n ?

Que l'API X ou TwexAPI a rejeté les identifiants de ce nœud HTTP. Vérifiez que l'en-tête `Authorization` contient `Bearer` suivi d'une clé ou d'un jeton valide, que l'identifiant n'a pas été régénéré et que les écritures utilisent des identifiants en contexte utilisateur. Consultez le [guide n8n](/fr/guides/n8n) pour une configuration TwexAPI fonctionnelle.

### Quelle est la différence entre une erreur 403 et une erreur 429 ?

`429` signifie que vous avez envoyé trop de requêtes et devez attendre. `403` signifie que vous n'avez pas le droit de faire cette requête. Attendre règle un `429` ; un `403` nécessite de changer les accès, les permissions, les Credits ou la cible.

### Que signifie le code d'erreur 88 de Twitter ?

Le code d'erreur X `88` signifie `Rate limit exceeded` et accompagne un HTTP `429`. Attendez `x-rate-limit-reset` avant la requête suivante.

### Que signifie le code d'erreur 32 de Twitter ?

Le code d'erreur X `32` signifie `Could not authenticate you` et accompagne un HTTP `401`. Sur l'API officielle, il indique le plus souvent une signature OAuth 1.0a ou des jetons incorrects. Sur les endpoints d'écriture de TwexAPI, il signifie que les identifiants de session X fournis ont expiré.

## Pages associées

- [Référence des codes d'erreur de l'API Twitter](/fr/guides/error-reference) : chaque statut TwexAPI et code d'erreur X avec sa solution
- [Limites de débit](/fr/guides/rate-limits) : backoff, `Retry-After` et reprise compatible avec la pagination
- [Gestion des erreurs](/fr/guides/error-handling) : reprise pour MCP, les SDK et les écritures
- [Authentification](/fr/authentication) : clés d'API et identifiants de session X
