---
title: "Errores 429, 403 y 401 de la API de Twitter: causas y soluciones"
description: "Soluciona los errores 429 Too Many Requests, 403 Forbidden y 401 Unauthorized de la API de X (Twitter): qué significa cada código en la API oficial de X y en TwexAPI, qué cabeceras revisar y cuándo reintentar."
lastModified: "2026-10-19"
sidebar:
  label: "Errores 429, 403 y 401"
seo:
  title: "Errores 429, 403 y 401 de Twitter API: solución"
search:
  tags: ["código 429 twitter", "error 429 twitter", "twitter api 403 forbidden", "twitter api 401 unauthorized", "Request failed with status code 401", "x-rate-limit-reset"]
---

**Respuesta corta:** `429` significa que enviaste demasiadas solicitudes y tienes que esperar. `403` significa que tus credenciales funcionan, pero no tienen permiso para esa acción. `401` significa que faltan credenciales o son incorrectas. Solo el `429` se arregla esperando; un `403` o un `401` seguirá devolviendo el mismo error hasta que cambies la solicitud, las credenciales o el acceso.

| Código | Qué significa | Revisa primero | ¿Reintentar? |
| :--- | :--- | :--- | :--- |
| **429 Too Many Requests** | Llegaste a un límite de tasa, a un tope de uso o al límite diario de la cuenta | Cabecera `x-rate-limit-reset` o `Retry-After` | ✅ Después de la espera indicada |
| **403 Forbidden** | Autenticado, pero sin permiso para ese endpoint, acción o cuenta | Acceso de la app, tipo de token, permisos, Credits, cuenta objetivo | ❌ Primero arregla el acceso |
| **401 Unauthorized** | Credenciales ausentes, inválidas, vencidas o mal firmadas | La cabecera `Authorization` y qué clave o token usaste | ❌ Primero arregla las credenciales |

Estas soluciones sirven tanto si llamas a la API directamente como si ves el error en una herramienta. Mensajes como `Request failed with status code 401` o `status code 429` vienen del cliente HTTP (por ejemplo axios, que usan n8n y muchos bots en Node.js) y contienen el código de estado de la API que llamaste, así que significan lo mismo.

## Primero, identifica qué API devolvió el error

El mismo código tiene causas distintas según quién lo devuelva:

- **API oficial de X** (`api.x.com` o `api.twitter.com`): los errores siguen las reglas de la plataforma de desarrolladores de X sobre apps, proyectos, OAuth y ventanas de límite de tasa.
- **TwexAPI** (`api.twexapi.io`): los errores tienen que ver con tu clave de TwexAPI, tus Credits y, en acciones de escritura, la sesión de X que enviaste. Consulta la [referencia de códigos de error de TwexAPI](/es/guides/error-reference).
- **El sitio x.com o la app de X**: el mensaje "Rate limit exceeded" mientras navegas viene de los límites que X aplica a tu cuenta, no de ninguna API para desarrolladores.

## Error 429 Too Many Requests en la API de Twitter

### En la API oficial de X

X aplica límites por endpoint en ventanas que suelen ser de 15 minutos o de 24 horas, por app y por usuario. Cada respuesta incluye tres cabeceras:

| Cabecera | Significado |
| :--- | :--- |
| `x-rate-limit-limit` | Solicitudes permitidas en la ventana actual |
| `x-rate-limit-remaining` | Solicitudes que te quedan en la ventana actual |
| `x-rate-limit-reset` | Marca de tiempo Unix en que se reinicia la ventana |

Cuando superas un límite, X devuelve HTTP `429`. Los cuerpos antiguos estilo v1.1 muestran el código de error `88` y `Rate limit exceeded`. Las respuestas nuevas de tipo problem usan el tipo `rate-limit-exceeded`, o `usage-capped` cuando tu cuenta llegó a un tope de uso y no a una ventana de límite.

Cómo arreglarlo:

1. **Espera hasta `x-rate-limit-reset`.** Si reintentas antes, recibirás otro `429`.
2. **Vigila `x-rate-limit-remaining`.** Baja el ritmo antes de que llegue a cero, no después.
3. **Revisa los límites diarios.** Algunos endpoints de escritura, como publicar o dar like, tienen topes de 24 horas por app o por usuario. Esperar unos minutos no los reinicia.
4. **Usa caché y reparte las solicitudes.** No pidas el mismo perfil o tweet una y otra vez, y no lances todos tus trabajos en punto.

En la API de X de pago por uso, los límites de tasa y la facturación son independientes. Una solicitud puede estar dentro del límite y aun así sumar a tu factura, así que la caché te ahorra dinero además de cuota.

### En TwexAPI

Un `429` de TwexAPI puede ser limitación de solicitudes o un límite de la cuenta de X alcanzado durante una acción de escritura (por ejemplo, el código de X `344` para publicaciones o el `502` para el límite diario de DM). Respeta la cabecera `Retry-After` o el campo `retry_after` cuando aparezcan. Los límites diarios de la cuenta necesitan su periodo de reinicio, no un reintento corto. Consulta [Límites de tasa](/es/guides/rate-limits) para backoff y recuperación segura con paginación.

### En x.com desde el navegador o la app de X

X limita cuánto contenido puede cargar cada cuenta. Si ves "Rate limit exceeded" al hacer scroll, espera antes de recargar, cierra pestañas de más y extensiones que recargan solas, y evita redes compartidas o salidas de VPN que usa mucha gente. Si solo quieres ver un perfil público sin cuenta, puedes usar el [visor de Twitter](https://twexapi.io/twitter-viewer) gratuito.

## Error 403 Forbidden en la API de Twitter

Un `403` significa que X o TwexAPI reconocieron tus credenciales, pero rechazan la solicitud. Repetir la misma solicitud devuelve el mismo `403`.

### En la API oficial de X

| Causa | Cómo se ve | Solución |
| :--- | :--- | :--- |
| **La app no está inscrita o no tiene acceso** | Tipo de problema `client-forbidden`; respuestas antiguas usan el código `453` ("You currently have access to a subset of…") | Usa claves de una app asociada a un Project y confirma que el acceso de tu cuenta incluye ese endpoint |
| **Tipo de token incorrecto** | Publicar, dar like, seguir o enviar DM con un Bearer Token de solo app (app-only) | Usa un token de contexto de usuario: access token y secret de OAuth 1.0a, o un token de usuario de OAuth 2.0 |
| **Faltan permisos o scopes** | Un token de usuario de una app en Read only, o un token OAuth 2.0 sin scopes como `tweet.write` | Cambia la app a Read and write (y Direct Messages si lo necesitas), luego **regenera** el access token y el secret o vuelve a autorizar al usuario |
| **Recurso protegido o no disponible** | Tipo de problema `not-authorized-for-resource` | La cuenta objetivo es privada o el contenido está restringido; pide algo que tu usuario pueda ver |
| **Acción duplicada o restringida** | Texto de publicación duplicado, tweets con respuestas restringidas, tweets que ya tienen tu like | Cambia el contenido o confirma el estado actual antes de reintentar |

Cambiar los permisos de la app no actualiza los tokens que ya existen. Después de pasar a Read and write, genera tokens de usuario nuevos; si no, publicar seguirá devolviendo `403`.

### En TwexAPI

Un `403` de TwexAPI suele significar una de estas cosas:

- **Te quedaste sin Credits**: revisa tu saldo con [Get Balance](/es/api-reference/balance-endpoints/get-balance-api-balance-get) y recarga en el [dashboard](https://twexapi.io/dashboard).
- **Cuenta objetivo protegida o suspendida**: solo sus seguidores aprobados pueden leer sus publicaciones. Apunta la solicitud a una cuenta pública.
- **Restricción de cuenta o de acción**: la cuenta de X que enviaste para escribir está suspendida o bloqueada, el tweet restringe respuestas (código de X `433`) o la acción requiere X Premium.

Cada mensaje aparece con su solución en la [referencia de códigos de error](/es/guides/error-reference).

## Error 401 Unauthorized en la API de Twitter

Un `401` significa que la solicitud no pudo demostrar quién eres. Arregla las credenciales; reintentar sin cambios nunca funciona.

### En la API oficial de X

- **Cabecera mal formada**: las solicitudes de solo app necesitan exactamente `Authorization: Bearer <token>`. Si falta el prefijo `Bearer `, sobran comillas o la variable de entorno trae un salto de línea al final, obtendrás `401`.
- **Credenciales regeneradas o revocadas**: al regenerar claves en el portal de desarrolladores, las anteriores dejan de funcionar al instante. Actualiza todos los lugares donde las guardas.
- **Combinación de credenciales incorrecta**: OAuth 1.0a necesita la consumer key y el secret **más** el access token y el secret del usuario. Mezclar claves de dos apps, o usar una API key donde va un token, devuelve `401`.
- **Errores de firma de OAuth 1.0a**: el código `32` (`Could not authenticate you`) suele indicar una firma incorrecta. Revisa la codificación URL de los parámetros y que el reloj de tu servidor esté en hora; una marca de tiempo desfasada invalida la firma.
- **Token de usuario de OAuth 2.0 vencido**: los tokens de acceso de usuario caducan. Pide el scope `offline.access` y usa el refresh token para obtener uno nuevo.

### En TwexAPI

- **API key ausente o incorrecta**: envía `Authorization: Bearer YOUR_API_KEY` con una clave del [dashboard](https://twexapi.io/dashboard). Consulta [Autenticación](/es/authentication).
- **Sesión de X vencida en endpoints de escritura**: `Invalid auth_token` o el código de X `32` al publicar, dar like o enviar DM significa que las credenciales de sesión de X que enviaste en `cookie` caducaron. Renuévalas; tu API key está bien.

## Reintenta solo lo que puede funcionar

Este helper de Python reintenta respuestas `429` y `5xx` transitorias y devuelve de inmediato cualquier otro estado. Respeta `Retry-After` (TwexAPI y la mayoría de las APIs HTTP) y `x-rate-limit-reset` (API oficial de X):

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

Si lees resultados paginados, después de un `429` reintenta con el **mismo cursor**, no con el siguiente. En acciones de escritura, comprueba si la publicación, el like o el DM ya se aplicó antes de volver a enviarlo; un timeout no prueba que la acción haya fallado.

## Cuando el problema real son los límites oficiales

Si tu app sigue chocando con `429` al leer, o la factura por solicitud crece más rápido que los datos que necesitas, compara el costo de una API de terceros con pago por uso. Las lecturas de TwexAPI cuestan unos $0.05 por cada 1,000 tweets, con una API key y sin configurar OAuth, frente a $5 por cada 1,000 publicaciones leídas en la API oficial de X. Consulta [TwexAPI vs la API oficial de X](/es/comparison/official-x-api) y la [calculadora de precios de la API de X](https://twexapi.io/x-api-pricing). TwexAPI no está afiliada ni respaldada por X Corp.

## Preguntas sobre los errores 429, 403 y 401 de la API de Twitter

### ¿Cuánto dura un error 429 de la API de Twitter?

Hasta la hora que indica `x-rate-limit-reset`, normalmente menos de 15 minutos. Los endpoints con límites de 24 horas, como publicar, siguen bloqueados hasta que se reinicia la ventana diaria. En TwexAPI, espera lo que indique `Retry-After` o `retry_after`.

### ¿Por qué recibo 403 Forbidden al publicar un tweet con la API de X?

Normalmente porque el token no puede escribir. Puede que estés usando un Bearer Token de solo app, que la app esté en Read only o que el token de usuario se haya creado antes de activar Read and write. Activa el permiso de escritura, regenera los tokens del usuario y publica con autenticación de contexto de usuario.

### ¿Qué significa "Request failed with status code 401" en n8n?

Que la API de X o TwexAPI rechazó las credenciales de ese nodo HTTP. Revisa que la cabecera `Authorization` sea `Bearer` seguida de una clave o token válido, que la credencial no se haya regenerado y que las acciones de escritura usen credenciales de contexto de usuario. Consulta la [guía de n8n](/es/guides/n8n) para una configuración de TwexAPI que funciona.

### ¿Qué diferencia hay entre un 403 y un 429?

`429` significa que enviaste demasiadas solicitudes y debes esperar. `403` significa que no tienes permiso para hacer esa solicitud. Esperar arregla un `429`; un `403` necesita un cambio de acceso, permisos, Credits o del objetivo.

### ¿Qué es el código de error 88 de Twitter?

El código de error `88` de X significa `Rate limit exceeded` y se devuelve con HTTP `429`. Espera hasta `x-rate-limit-reset` antes de la siguiente solicitud.

### ¿Qué es el código de error 32 de Twitter?

El código de error `32` de X significa `Could not authenticate you` y se devuelve con HTTP `401`. En la API oficial suele indicar una firma de OAuth 1.0a o tokens incorrectos. En los endpoints de escritura de TwexAPI, significa que las credenciales de sesión de X que enviaste caducaron.

## Páginas relacionadas

- [Referencia de códigos de error de la API de Twitter](/es/guides/error-reference): cada estado de TwexAPI y código de error de X con su solución
- [Límites de tasa](/es/guides/rate-limits): backoff, `Retry-After` y recuperación segura con paginación
- [Manejo de errores](/es/guides/error-handling): recuperación en MCP, SDKs y acciones de escritura
- [Autenticación](/es/authentication): API keys y credenciales de sesión de X
