Erreurs 429, 403 et 401 de l'API Twitter : causes et solutions
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.
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.comouapi.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. - 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 :
- Attendez
x-rate-limit-reset. Réessayer avant renvoie un nouveau429. - Surveillez
x-rate-limit-remaining. Ralentissez avant qu’il atteigne zéro, pas après. - 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.
- 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 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 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 et rechargez depuis le tableau de bord.
- 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.
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éfixeBearermanquant, des guillemets en trop ou un retour à la ligne en fin de variable d’environnement renvoient401. - 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.accesset utilisez le refresh token pour en obtenir un nouveau.
Sur TwexAPI
- Clé d’API absente ou incorrecte : envoyez
Authorization: Bearer YOUR_API_KEYavec une clé du tableau de bord. Voir Authentification. - Session X expirée sur les endpoints d’écriture :
Invalid auth_tokenou le code X32lors d’une publication, d’un like ou d’un DM signifie que les identifiants de session X fournis danscookieont 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) :
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 et le calculateur de prix de l’API X. 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 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 : chaque statut TwexAPI et code d’erreur X avec sa solution
- Limites de débit : backoff,
Retry-Afteret reprise compatible avec la pagination - Gestion des erreurs : reprise pour MCP, les SDK et les écritures
- Authentification : clés d’API et identifiants de session X