Códigos de error de la API de Twitter y referencia de estados HTTP
Resuelve errores de la API de Twitter/X en TwexAPI: HTTP 401, 403, 429 y 5xx, invalid auth_token, tweets duplicados, límites de mensajes directos y reintentos seguros.
TwexAPI informa los fallos de la API de Twitter/X mediante estados HTTP y, cuando están disponibles, códigos de error de X. Un 401 requiere corregir las credenciales; un 403, resolver un problema de acceso o de la cuenta; y un 429, esperar a que se restablezca el límite de solicitudes. Revisa el cuerpo de la respuesta antes de reintentar.
Usa esta referencia para resolver códigos de error de la API de Twitter, invalid auth_token, tweets duplicados y límites de mensajes directos. Las rutas de los endpoints siguen la referencia de la API actual. Para errores de MCP, recuperación de la paginación y ejemplos de SDK, consulta Manejo de errores.
Los mensajes y códigos de X que aparecen a continuación son ejemplos para diagnosticar problemas; la estructura de las respuestas y su correspondencia con los estados HTTP pueden variar según el endpoint. Consulta tanto el esquema del endpoint como la respuesta real.
Encuentra la solución al error de la API de Twitter
- HTTP 401 /
Invalid auth_token: revisa tanto tu clave de API de TwexAPI como las credenciales de sesión de X que usan los endpoints de escritura. Consulta Autenticación. - HTTP 403: revisa si el mensaje indica créditos insuficientes, publicaciones protegidas, restricciones de la cuenta o requisitos de Premium. Repetir una solicitud sin cambios no restablece el acceso.
- HTTP 429 /
Too Many Requests: respetaRetry-Afteroretry_aftery distingue entre la limitación de solicitudes y el límite diario de una cuenta de X. Consulta Límites de solicitudes. - HTTP 500 / 502 / 503: reintenta los fallos transitorios de lectura con esperas progresivas que tengan un máximo. Comprueba si una escritura ya se completó antes de repetirla.
- Códigos de X 187, 344 o 502: son códigos de X, distintos de los estados HTTP. Consulta la tabla de códigos de Twitter/X y las preguntas sobre reintentos.
Formato de las respuestas de error
Conserva el estado HTTP y el cuerpo JSON completo. Las respuestas de TwexAPI pueden incluir code y msg; los errores de validación de solicitudes usan detail:
{
"code": 500,
"msg": "Internal server error"
}
{
"detail": [
{
"loc": ["body", "cookie"],
"msg": "Field required",
"type": "missing"
}
]
}
Si la respuesta incluye metadatos adicionales de X, consérvalos:
error: un mensaje de error, cuando se proporciona. No supongas que todos los endpoints usan este campo.twitter_error_code: un código de error de X, cuando se proporciona. Es independiente del estado HTTP; por ejemplo, el código de X502se refiere a un límite de mensajes directos.retry_after: los segundos que debes esperar, cuando se proporciona. Respeta también el encabezado HTTPRetry-After.
No exijas que existan campos opcionales ni decidas qué hacer basándote solo en el texto exacto del mensaje. Un estado HTTP distinto de 2xx indica un fallo, aunque el cuerpo contenga un code diferente.
Errores comunes en todos los endpoints
Revisa estas condiciones en cualquier solicitud. Los mensajes exactos pueden variar.
| Estado | Mensaje | Qué significa | Qué hacer |
|---|---|---|---|
| 401 | Invalid or missing API key |
Falta tu clave de API o es incorrecta | Revisa el encabezado Authorization: Bearer <key> |
| 400 | Missing required … param: <x> |
Falta un campo o parámetro obligatorio, o no es válido | Corrige la solicitud |
| 429 | Please try again shortly. (nuestra capacidad) · Rate limit exceeded… · o un mensaje de límite de X |
Demasiadas solicitudes, capacidad de nuestro servicio o un límite de la cuenta de X (p. ej., límite diario de mensajes directos o tweets; puede incluir twitter_error_code) |
Respeta retry_after / Retry-After; los límites diarios de la cuenta requieren una espera más larga |
| 403 | Créditos agotados o acceso denegado | Créditos insuficientes o falta de permisos de la cuenta | Revisa el saldo y el acceso de la cuenta |
| 422 | Error de validación (detail) |
Los campos de la solicitud no pasaron la validación del esquema | Corrige los campos indicados en detail; no reintentes sin cambios |
| 500 | Internal server error |
Ocurrió un error temporal | Reintenta en breve |
Estados HTTP de la API de Twitter
| Estado | Significado |
|---|---|
| 200 | Éxito |
| 202 | Aceptado; si un endpoint devuelve este estado, la acción está pendiente |
| 400 | Solicitud incorrecta, parámetros faltantes o no válidos, URL de proxy no válida o archivo multimedia demasiado grande |
| 401 | No autorizado, clave de API incorrecta o auth_token no válido o vencido |
| 403 | Prohibido: créditos insuficientes, una cuenta de destino protegida/privada o suspendida (no se pueden leer sus publicaciones), una cuenta suspendida o bloqueada que estás usando, una restricción de permisos o una acción exclusiva de Premium |
| 404 | No encontrado; el usuario, tweet o recurso no existe |
| 409 | Conflicto, tweet duplicado |
| 410 | Recurso no disponible; revisa el cuerpo para conocer los detalles de la suspensión de la cuenta |
| 422 | Falló la validación de la solicitud; revisa detail y corrige los datos de entrada |
| 423 | Si X lo devuelve: la cuenta está bloqueada o requiere verificación |
| 429 | Demasiadas solicitudes; se alcanzó un límite de solicitudes |
| 500 / 502 / 503 | Error temporal del servidor o del servicio de origen; reintenta |
Códigos de error de la API de Twitter/X
Cuando la respuesta incluya un código de X, usa los siguientes significados. Son códigos de X, no estados HTTP, y no todos los endpoints exponen twitter_error_code.
| Código | Significado | Qué hacer |
|---|---|---|
| 32 | No se pudo autenticar tu cuenta | Renueva las credenciales de sesión de X proporcionadas en cookie |
| 63 | La cuenta de destino está suspendida | Usa una cuenta accesible o espera a que se restablezca el acceso |
| 64 | Tu cuenta está suspendida | Usa otra cuenta |
| 131 | Error interno temporal de X | Reintenta |
| 139 | Ya diste Me gusta | Confirma el estado actual; no repitas la acción |
| 144 | No se encontró ningún tweet con ese ID | Se eliminó el tweet o el ID es incorrecto |
| 187 | Tweet duplicado | Confirma la publicación anterior y cambia el texto si quieres crear una nueva |
| 226 | La solicitud pareció automatizada | Reintenta |
| 326 | Cuenta bloqueada temporalmente | Desbloquéala en x.com/account/access y luego reintenta |
| 327 | Ya retuiteaste | Confirma el estado actual; no repitas la acción |
| 344 | Publicación limitada temporalmente (limitación de red/IP, no de la cuenta) | Aumenta la espera y revisa el proxy si proporcionaste uno; confirma el resultado de la escritura antes de reintentar |
| 349 | No puedes enviar mensajes a este usuario | El destinatario no acepta tus mensajes directos |
| 399 | Falló el inicio de sesión en X | Revisa las credenciales de sesión de X |
| 433 | Respuestas restringidas / se requiere Premium | El tweet restringe quién puede responder o la acción requiere X Premium |
| 465 | No se puede retuitear un tweet antiguo | El tweet es demasiado antiguo para retuitearlo |
| 476 | No se permite enviar solicitudes de mensajes | La cuenta no puede enviar solicitudes de mensajes directos |
| 502 | Se alcanzó el límite diario de mensajes directos (solicitudes de mensajes) | Espera 24 horas o usa una cuenta de X Premium para obtener límites más altos |
Lectura de tweets y búsqueda
Se aplica a POST /twitter/{screen_name}/timeline/page, /twitter/tweets-replies/page y /twitter/advanced_search/page.
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 403 | This account's posts are not available. The account is protected (private), suspended, or no longer active. |
No reintentes sin cambios: el acceso debe cambiar para que la solicitud pueda completarse. Solo los seguidores aprobados pueden leer las publicaciones de la cuenta de destino. Dirige la solicitud a una cuenta pública. |
| 403 | This account is suspended, so its posts are not available. |
La cuenta de destino está suspendida. Usa una cuenta accesible o espera a que se restablezca el acceso. |
| 502 | Upstream returned an unexpected response — please retry. |
Fallo del servicio de origen. Reintenta con esperas progresivas que tengan un máximo; conserva el mismo cursor. |
Publicaciones e interacciones
Crear un tweet
POST /twitter/tweets/create
Usa tweet_content, el campo opcional reply_tweet_id y tus credenciales de X en cookie. Consulta Crear un tweet o una respuesta.
| Estado | Código | Mensaje | Qué hacer |
|---|---|---|---|
| 409 | 187 | Status is a duplicate. |
Comprueba si la publicación ya existe; cambia el texto para crear una nueva |
| 403 | 433 | The original Tweet author restricted who can reply… |
El tweet no permite tu respuesta |
| 403 | 433 | El texto extenso o video largo requiere Premium | Usa una cuenta Premium o acorta el contenido |
| 403 | n/a | No eres miembro de la comunidad | Únete primero a la comunidad |
| 429 | 344 | Publicación limitada temporalmente (limitación de red/IP) | Aumenta la espera; revisa el proxy proporcionado y confirma si se creó la publicación |
| 502 | n/a | X returned an empty result (resultado sin confirmar) |
Lee la cronología de la cuenta antes de reintentar; el resultado de la escritura no está confirmado |
| 400 | n/a | File size exceeds… |
Reduce el tamaño del archivo multimedia |
| 503 | 226 | This request looks automated |
Aumenta la espera y comprueba el resultado de la escritura antes de reintentar |
| 502 / 503 | n/a | Error temporal de conexión | Reintenta (si proporcionaste un proxy, confirma que funciona) |
Me gusta / Retuitear / Guardar en marcadores
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
| Estado | Código | Mensaje | Qué hacer |
|---|---|---|---|
| 403 | n/a | User is suspended, deactivated or offboarded |
La cuenta no está disponible; usa otra cuenta |
| 401 | 32 | Could not authenticate you |
Renueva las credenciales de sesión de X proporcionadas en cookie |
| 403 | 465 | not permitted to retweet an outdated Tweet |
El tweet es demasiado antiguo para retuitearlo |
| Varía | 139 / 327 | Ya diste Me gusta / ya retuiteaste | Confirma el estado actual; no repitas la acción |
| 429 | n/a | Límite de solicitudes | Reduce la frecuencia y luego reintenta |
| 502 / 503 | n/a | Error temporal de conexión | Reintenta |
Eliminar un tweet
POST /twitter/tweets/delete-batch
Proporciona target_id para eliminar un solo tweet. Si lo omites, seleccionas la eliminación masiva; conserva los campos de la solicitud original al recuperarte de errores.
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 404 | No status found with that ID |
Ya se eliminó o el ID es incorrecto |
| 403 | No eres el autor | Solo puedes eliminar tus propios tweets |
| 401 | auth_token no válido |
Renueva las credenciales de sesión de X |
Seguir / Dejar de seguir
POST /twitter/user/follow · DELETE /twitter/user/follow
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 404 | User not found |
Revisa el nombre de usuario o ID |
| 403 | Restringido | Tu cuenta o la cuenta de destino no lo permite |
| 401 | auth_token no válido |
Renueva las credenciales de sesión de X |
| 429 | Límite para seguir cuentas | Espera y luego reintenta |
Actualizar el perfil / Avatar / Imagen de encabezado
POST /twitter/profile
Usa profile_image y profile_banner para las URL de las imágenes, y cookie para las credenciales de X.
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 401 | Invalid auth_token - could not fetch credentials |
Renueva las credenciales de sesión de X |
| 400 | Imagen demasiado grande / formato incorrecto | Corrige la imagen |
Archivos multimedia adjuntos
Adjunta archivos multimedia al crear tweets o enviar mensajes directos; la referencia actual no incluye una ruta independiente para cargar archivos multimedia. Al crear un tweet, media_urls admite hasta cuatro imágenes, un GIF o un video. No combines un GIF o video con otros archivos multimedia. Corrige las URL inaccesibles, los formatos no compatibles o los tamaños de archivo rechazados antes de reintentar. Sigue el esquema del endpoint para los nombres de los campos y sus restricciones.
Mensajes directos
POST /v3/twitter/send-dm · /v3/twitter/dm-history · /v3/twitter/conversations
Para comprobar los permisos, usa POST /v2/dm/status. Consulta Enviar un mensaje directo.
| Estado | Código | Mensaje | Qué hacer |
|---|---|---|---|
| 429 | 502 | You've hit your daily message request limit. Subscribe to Premium for higher limits. |
Espera 24 h o usa una cuenta Premium |
| 403 | 476 | Sender is not verified to send message requests |
La cuenta no puede enviar solicitudes de mensajes directos |
| 403 | 349 | Cannot send messages to this user |
El destinatario no acepta tus mensajes directos |
| 401 | 32 | Could not authenticate you |
Renueva las credenciales de sesión de X |
| 404 | n/a | Conversación / usuario no encontrado | Revisa el destinatario |
Lectura de datos
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}
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 404 | Tweet not found: <id> |
El tweet se eliminó, está protegido o el ID es incorrecto |
| 404 | Could not resolve userId for @<handle> |
El nombre de usuario no existe, cambió o corresponde a una cuenta suspendida |
| 404 | Could not find user with ID: <id> |
Revisa el ID del usuario |
| 400 | Missing required query param: <x> |
Proporciona el parámetro obligatorio |
| 429 | Límite de solicitudes | Espera retry_after y luego reintenta |
Artículos
POST /x/article · GET /x/article/{tweet_id}/markdown
Para escrituras: 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 o /x/articles/publish.
El requisito de Premium indicado a continuación se aplica a la publicación de artículos. Usa preferentemente el flujo de artículos paso a paso para conservar article_id y reintentar solo el paso que falló.
| Estado | Mensaje | Qué hacer |
|---|---|---|
| 403 | Se requiere Premium | Para publicar artículos necesitas una cuenta de X Premium |
| 404 | Artículo no encontrado | Revisa el ID del artículo |
| 401 | auth_token no válido |
Renueva las credenciales de sesión de X |
| 400 | Contenido no válido | Corrige el cuerpo del artículo |
Guía de reintentos
| Si ves… | ¿Reintentar? | Notas |
|---|---|---|
| 429 | ✅ después de la espera indicada | Respeta tanto los límites diarios de la cuenta como los límites de solicitudes |
| 422 | ❌ | Corrige los campos indicados en la respuesta de validación |
| 500 / 502 / 503 | ✅ | Error temporal; reintenta en breve |
| Código de X 226 | Después de comprobar el resultado de la escritura | Aumenta la espera; revisa las restricciones de la cuenta antes de reintentar |
| 401 | ❌ | Corrige tu clave de API o renueva las credenciales de sesión de X |
| 403 (cuenta suspendida/bloqueada) | ❌ | Usa otra cuenta o desbloquéala primero |
| 404 | ❌ | Revisa el ID o nombre de usuario |
| 400 / 409 | ❌ | Corrige la solicitud (parámetros, tamaño del archivo multimedia, texto duplicado) |
Consejo: Usa esperas progresivas con un máximo y variación aleatoria para 429 y errores 5xx transitorios. Para 400/401/403/404/409/422, corrige primero los datos de entrada, las credenciales o el acceso de la cuenta.
Preguntas sobre errores y reintentos de la API de Twitter
¿Por qué la API de Twitter devuelve 401 o invalid auth_token?
HTTP 401 puede indicar que falta tu clave de API de TwexAPI o que no es válida. En los endpoints de escritura, Invalid auth_token o el código de X 32 también pueden indicar que la sesión de X venció. Corrige el encabezado Bearer o renueva las credenciales de X proporcionadas en cookie antes de reintentar.
¿Cuál es la diferencia entre los errores 403 y 429 de la API de Twitter?
HTTP 403 indica un problema de acceso, como créditos insuficientes, contenido privado, una cuenta restringida o una acción exclusiva de Premium. HTTP 429 indica un límite de solicitudes o de la cuenta. Corrige la causa de un 403; después de un 429, espera a que se restablezca el límite indicado.
¿Cómo resuelvo el error 429 Too Many Requests de la API de Twitter?
Respeta la espera de Retry-After o retry_after cuando se proporcionen y luego continúa con menos solicitudes simultáneas y esperas progresivas que tengan un máximo. Un límite diario de tweets o mensajes directos requiere esperar su período de restablecimiento, no solo una pausa breve. Conserva el cursor de la página que falló al reintentar una lectura.
¿Qué significa el código de error 187 de Twitter?
El código de error de X 187 significa que el contenido del tweet está duplicado. Comprueba si la escritura anterior ya creó la publicación. Si quieres publicar algo diferente, cambia tweet_content en vez de repetir la misma solicitud.
¿Qué significa el código de error 344 de Twitter?
El código de error de X 344 indica una restricción temporal de publicación asociada a la red o a la IP. Aumenta la espera, revisa cualquier proxy que hayas proporcionado y consulta la cronología de la cuenta antes de reintentar la escritura. Es un código de error de X, no un estado HTTP.
¿Debo reintentar los errores 500, 502 o 503 de la API de Twitter?
Reintenta los fallos transitorios de lectura con esperas progresivas que tengan un máximo y variación aleatoria. Si una escritura agota el tiempo de espera o devuelve 5xx, revisa primero la cronología, el historial de mensajes directos o el estado de la interacción. Una respuesta fallida no demuestra que la escritura no se haya aplicado.
¿Debo reintentar un error de validación 422 de TwexAPI?
No reintentes con los mismos datos de entrada. TwexAPI usa HTTP 422 para los errores de validación de solicitudes. Revisa detail para identificar el campo que falló, su ubicación y el tipo de error; luego corrige la solicitud según el esquema del endpoint.
¿El código de error 502 de Twitter es lo mismo que HTTP 502?
No. El código de error de X 502 se refiere a un límite diario de solicitudes de mensajes directos y puede aparecer junto con HTTP 429. HTTP 502 indica un fallo en la respuesta del servicio de origen. Lee tanto el estado HTTP como twitter_error_code, cuando se proporcione, antes de elegir una política de reintentos.
Páginas relacionadas
- Manejo de errores — MCP, SDK y recuperación de la paginación
- Autenticación — claves de API y credenciales de sesión de X
- Límites de solicitudes — esperas progresivas y capacidad de procesamiento
- Descripción general de la API — referencia actual de endpoints