Felo API PlatformFelo API Platform

Felo APIs

X Search API

Busca usuarios de X, tweets, cronologías y respuestas con metadatos de paginación.

POST/v2/x/tweet/search

Autenticación

Bearer API key

Tipo de contenido

application/json

Notas sobre límites

1 request per 10 seconds, 3 per minute, 10 per 10 minutes.

La X Search API proporciona acceso a los datos de X (Twitter), incluidos los perfiles de usuario, la búsqueda de tuits, los tuits de un usuario y las respuestas a tuits.

Autenticación

Todas las solicitudes requieren una clave de API en el encabezado Authorization:

Authorization: Bearer YOUR_API_KEY

Uso con agentes de IA

Instala el paquete completo felo-ai para dar a un agente X Search y todas las demás Felo Skills disponibles. El instalador descubre dinámicamente todos los directorios del paquete que contengan SKILL.md, en lugar de mantener una lista fija de Skills. Instala todas las Skills descubiertas en Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills o Hermes Agent ~/.hermes/skills. Consulta la guía de configuración manual de agentes de IA para obtener instrucciones de instalación, clave de API y verificación específicas de cada plataforma.


1. Obtener información de usuario

Recupera en lote perfiles de usuarios de X por nombre de usuario.

Endpoint

POST https://openapi.felo.ai/v2/x/user/info

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
usernamesarray de stringsSíLista de nombres de usuario de X que se van a consultar

Ejemplo

curl -X POST 'https://openapi.felo.ai/v2/x/user/info' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "usernames": ["elonmusk", "OpenAI"]
  }'

Respuesta correcta (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 2,
    "users": [
      {
        "user_id": "44196397",
        "username": "elonmusk",
        "display_name": "Elon Musk",
        "description": "...",
        "followers_count": 100000000,
        "following_count": 500,
        "tweet_count": 30000,
        "verified": true,
        "blue_verified": true,
        "profile_image_url": "https://pbs.twimg.com/...",
        "created_at": "2009-06-02T00:00:00Z",
        "location": "Mars"
      }
    ]
  }
}

Campos del objeto de usuario

CampoTipoDescripción
user_idstringID de usuario de X
usernamestringNombre de usuario de X (sin @)
display_namestringNombre visible
descriptionstringBiografía del usuario
followers_countintegerNúmero de seguidores
following_countintegerNúmero de cuentas seguidas
tweet_countintegerTotal de tuits
verifiedbooleanIndica si la cuenta está verificada
blue_verifiedbooleanIndica si la cuenta tiene verificación Blue
verified_typestringTipo de verificación
profile_image_urlstringURL de la imagen de perfil
cover_image_urlstringURL de la imagen de portada
created_atstringFecha de creación de la cuenta
locationstringUbicación del usuario
urlstringURL del sitio web del usuario
protectedbooleanIndica si la cuenta está protegida
favorites_countintegerNúmero de me gusta
media_countintegerNúmero de publicaciones multimedia
can_dmbooleanIndica si los mensajes directos están abiertos
is_automatedbooleanIndica si la cuenta es automatizada
pinned_tweet_idsarray de stringsID de los tuits fijados

2. Buscar usuarios

Busca usuarios de X por palabra clave.

Endpoint

POST https://openapi.felo.ai/v2/x/user/search

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
querystringSíPalabra clave de búsqueda
cursorstringNoCursor de paginación de una respuesta anterior

Ejemplo

curl -X POST 'https://openapi.felo.ai/v2/x/user/search' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "artificial intelligence"
  }'

Respuesta correcta (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 50,
    "has_next": true,
    "next_cursor": "cursor_abc123",
    "users": [
      {
        "user_id": "...",
        "username": "...",
        "display_name": "..."
      }
    ]
  }
}

Campos de la respuesta

CampoTipoDescripción
totalintegerNúmero total de resultados
has_nextbooleanIndica si hay más resultados disponibles
next_cursorstringCursor de la página siguiente
usersarrayLista de objetos de usuario (consulta la sección 1)

3. Obtener los tuits de un usuario

Recupera los tuits de un usuario de X concreto.

Endpoint

POST https://openapi.felo.ai/v2/x/user/tweets

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
x_user_idstringNoID de usuario de X (indica x_user_id o username)
usernamestringNoNombre de usuario de X (indica x_user_id o username)
limitintegerNoNúmero de tuits que se devolverán
cursorstringNoCursor de paginación
include_repliesbooleanNoIndica si se incluyen las respuestas

Ejemplo

curl -X POST 'https://openapi.felo.ai/v2/x/user/tweets' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "username": "elonmusk",
    "limit": 20
  }'

Respuesta correcta (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 20,
    "has_next": true,
    "next_cursor": "cursor_def456",
    "tweets": [
      {
        "id": "1234567890",
        "content": "Tweet content here...",
        "author": { "user_id": "...", "username": "elonmusk" },
        "created_at": "2026-03-09T12:00:00Z",
        "metrics": {
          "retweet_count": 1000,
          "favorite_count": 5000,
          "reply_count": 200,
          "quote_count": 100,
          "view_count": 500000,
          "bookmark_count": 50
        },
        "hashtags": ["AI"],
        "mentions": ["OpenAI"],
        "url": "https://x.com/elonmusk/status/1234567890",
        "lang": "en"
      }
    ]
  }
}

Campos del objeto de tuit

CampoTipoDescripción
idstringID del tuit
contentstringContenido de texto del tuit
authorobjectObjeto de usuario del autor (consulta la sección 1)
created_atstringFecha de creación del tuit
metricsobjectMétricas de interacción (consulta más abajo)
repliesarrayTuits de respuesta (si están disponibles)
conversation_idstringID del hilo de la conversación
media_urlsarrayMultimedia adjunta
hashtagsarray de stringsHashtags del tuit
mentionsarray de stringsNombres de usuario mencionados
urlsarray de stringsURL del tuit
urlstringEnlace permanente al tuit
sourcestringOrigen del tuit (por ejemplo, "Twitter Web App")
langstringCódigo de idioma del tuit
is_replybooleanIndica si es una respuesta
in_reply_to_idstringID del tuit al que se responde
in_reply_to_user_idstringID de usuario del tuit al que se responde
in_reply_to_usernamestringNombre de usuario del tuit al que se responde
quoted_tweetobjectObjeto del tuit citado (recursivo)
retweeted_tweetobjectObjeto del tuit retuiteado (recursivo)
is_limited_replybooleanIndica si las respuestas están limitadas

Campos del objeto de métricas

CampoTipoDescripción
retweet_countintegerNúmero de retuits
favorite_countintegerNúmero de me gusta
reply_countintegerNúmero de respuestas
quote_countintegerNúmero de citas
view_countintegerNúmero de visualizaciones
bookmark_countintegerNúmero de marcadores

4. Buscar tuits

Busca tuits de X por palabra clave con compatibilidad para consultas avanzadas.

Endpoint

POST https://openapi.felo.ai/v2/x/tweet/search

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
querystringSíConsulta de búsqueda (admite sintaxis de búsqueda avanzada)
query_typestringNoFiltro por tipo de consulta
since_timeintegerNoFiltro de hora de inicio (marca de tiempo Unix en segundos)
until_timeintegerNoFiltro de hora de fin (marca de tiempo Unix en segundos)
limitintegerNoNúmero de tuits que se devolverán
cursorstringNoCursor de paginación

Ejemplo

curl -X POST 'https://openapi.felo.ai/v2/x/tweet/search' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "artificial intelligence",
    "limit": 20
  }'

Respuesta correcta (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 20,
    "has_next": true,
    "next_cursor": "cursor_ghi789",
    "tweets": [
      {
        "id": "...",
        "content": "...",
        "author": { "user_id": "...", "username": "..." },
        "created_at": "2026-03-09T12:00:00Z",
        "metrics": { "retweet_count": 100, "favorite_count": 500 }
      }
    ]
  }
}

Campos de la respuesta

CampoTipoDescripción
totalintegerNúmero total de resultados
has_nextbooleanIndica si hay más resultados disponibles
next_cursorstringCursor de la página siguiente
tweetsarrayLista de objetos de tuit (consulta la sección 3)

5. Obtener respuestas a tuits

Recupera las respuestas de tuits concretos.

Endpoint

POST https://openapi.felo.ai/v2/x/tweet/replies

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
tweet_idsarray de stringsSíID de los tuits cuyas respuestas se quieren obtener
cursorstringNoCursor de paginación
since_timeintegerNoFiltro de hora de inicio (marca de tiempo Unix)
until_timeintegerNoFiltro de hora de fin (marca de tiempo Unix)

Ejemplo

curl -X POST 'https://openapi.felo.ai/v2/x/tweet/replies' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "tweet_ids": ["1234567890"]
  }'

Respuesta correcta (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "results": [
      {
        "tweet_id": "1234567890",
        "total": 10,
        "has_next": true,
        "next_cursor": "cursor_jkl012",
        "replies": [
          {
            "id": "...",
            "content": "Great tweet!",
            "author": { "user_id": "...", "username": "..." },
            "created_at": "2026-03-09T12:30:00Z"
          }
        ]
      }
    ]
  }
}

Campos de la respuesta

CampoTipoDescripción
resultsarrayLista de objetos de resultado de respuestas
results[].tweet_idstringID del tuit original
results[].totalintegerNúmero total de respuestas
results[].has_nextbooleanIndica si hay más respuestas disponibles
results[].next_cursorstringCursor de la página siguiente
results[].repliesarrayLista de objetos de tuit de respuesta (consulta la sección 3)

Códigos de error

CódigoEstado HTTPDescripción
UNAUTHORIZED401La clave de API no es válida o está revocada
X_SEARCH_FAILED400/500Falló la solicitud de búsqueda en X (comprueba los parámetros o el error downstream)
RATE_LIMIT_EXCEEDED429Demasiadas solicitudes; vuelve a intentarlo tras una breve espera
insufficient_credits402No hay créditos suficientes para completar la solicitud

Créditos y límites de solicitudes

Costes en créditos

Cada llamada a la API descuenta créditos según el número de resultados devueltos:

EndpointCoste en créditos
POST /x/user/info1 crédito por cada usuario devuelto
POST /x/user/search1 crédito por cada usuario devuelto
POST /x/user/tweets1 crédito por cada tuit devuelto
POST /x/tweet/search1 crédito por cada tuit devuelto
POST /x/tweet/replies1 crédito por cada respuesta devuelta

Los créditos se descuentan una vez completada la solicitud, según el número real de resultados. Si una solicitud devuelve 0 resultados, no se descuentan créditos.

Requisito de saldo mínimo: tu cuenta debe tener al menos 10 créditos para realizar cualquier solicitud a la API de X. Las solicitudes con menos de 10 créditos se rechazan con HTTP 402.

Límites de solicitudes

Los límites de solicitudes se aplican según el servicio de API y las políticas de cuenta vigentes. Cuando se aplica un límite, la API devuelve HTTP 429. El encabezado Retry-After indica el tiempo de espera sugerido en segundos. Usa la documentación de servicio más reciente y las respuestas reales de la API para gestionar los límites de solicitudes; no se requiere suscripción para usar la plataforma.