Felo API PlatformFelo API Platform

Felo APIs

X Search API

Recherchez des utilisateurs X, tweets, timelines et réponses avec des métadonnées de pagination.

POST/v2/x/tweet/search

Authentification

Bearer API key

Type de contenu

application/json

Notes sur les limites

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

L'API X Search donne accès aux données de X (Twitter), y compris les profils utilisateurs, la recherche de tweets, les tweets d'un utilisateur et les réponses aux tweets.

Authentification

Toutes les requêtes nécessitent une clé API dans l'en-tête Authorization :

Authorization: Bearer YOUR_API_KEY

Utilisation avec des agents IA

Installez le paquet complet felo-ai pour fournir à un agent X Search et tous les autres Felo Skills disponibles. L'installateur découvre dynamiquement chaque répertoire de paquet contenant SKILL.md, au lieu de conserver une liste figée de Skills. Installez tous les Skills découverts dans Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills ou Hermes Agent ~/.hermes/skills. Consultez le guide d'installation manuelle des agents IA pour les instructions d'installation, de clé API et de vérification propres à chaque plateforme.


1. Obtenir les informations d'un utilisateur

Récupérez par lot les profils d'utilisateurs X par nom d'utilisateur.

Endpoint

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

Corps de requête

ParamètreTypeRequisDescription
usernamesarray of stringsOuiListe des noms d'utilisateur X à rechercher

Exemple

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"]
  }'

Réponse de succès (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"
      }
    ]
  }
}

Champs de l'objet utilisateur

ChampTypeDescription
user_idstringID utilisateur X
usernamestringHandle X (sans @)
display_namestringNom d'affichage
descriptionstringBiographie de l'utilisateur
followers_countintegerNombre d'abonnés
following_countintegerNombre d'abonnements
tweet_countintegerNombre total de tweets
verifiedbooleanIndique si le compte est vérifié
blue_verifiedbooleanIndique si le compte dispose de la vérification Blue
verified_typestringType de vérification
profile_image_urlstringURL de l'image de profil
cover_image_urlstringURL de l'image de couverture
created_atstringDate de création du compte
locationstringLocalisation de l'utilisateur
urlstringURL du site web de l'utilisateur
protectedbooleanIndique si le compte est protégé
favorites_countintegerNombre de likes
media_countintegerNombre de publications média
can_dmbooleanIndique si les DM sont ouverts
is_automatedbooleanIndique si le compte est automatisé
pinned_tweet_idsarray of stringsID des tweets épinglés

2. Rechercher des utilisateurs

Recherchez des utilisateurs X par mot-clé.

Endpoint

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

Corps de requête

ParamètreTypeRequisDescription
querystringOuiMot-clé de recherche
cursorstringNonCurseur de pagination issu de la réponse précédente

Exemple

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"
  }'

Réponse de succès (200)

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

Champs de réponse

ChampTypeDescription
totalintegerNombre total de résultats
has_nextbooleanIndique si d'autres résultats sont disponibles
next_cursorstringCurseur pour la page suivante
usersarrayListe d'objets utilisateur (voir section 1)

3. Obtenir les tweets d'un utilisateur

Récupérez les tweets d'un utilisateur X spécifique.

Endpoint

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

Corps de requête

ParamètreTypeRequisDescription
x_user_idstringNonID utilisateur X (fournissez x_user_id ou username)
usernamestringNonNom d'utilisateur X (fournissez x_user_id ou username)
limitintegerNonNombre de tweets à renvoyer
cursorstringNonCurseur de pagination
include_repliesbooleanNonIndique s'il faut inclure les réponses

Exemple

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
  }'

Réponse de succès (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"
      }
    ]
  }
}

Champs de l'objet tweet

ChampTypeDescription
idstringID du tweet
contentstringContenu textuel du tweet
authorobjectObjet utilisateur de l'auteur (voir section 1)
created_atstringDate de création du tweet
metricsobjectMétriques d'engagement (voir ci-dessous)
repliesarrayTweets de réponse (s'ils sont disponibles)
conversation_idstringID du fil de conversation
media_urlsarrayMédias joints
hashtagsarray of stringsHashtags présents dans le tweet
mentionsarray of stringsNoms d'utilisateur mentionnés
urlsarray of stringsURL présentes dans le tweet
urlstringLien permanent vers le tweet
sourcestringSource du tweet (par exemple "Twitter Web App")
langstringCode de langue du tweet
is_replybooleanIndique s'il s'agit d'une réponse
in_reply_to_idstringID du tweet auquel il est répondu
in_reply_to_user_idstringID utilisateur du tweet auquel il est répondu
in_reply_to_usernamestringNom d'utilisateur du tweet auquel il est répondu
quoted_tweetobjectObjet du tweet cité (récursif)
retweeted_tweetobjectObjet du tweet retweeté (récursif)
is_limited_replybooleanIndique si les réponses sont limitées

Champs de l'objet metrics

ChampTypeDescription
retweet_countintegerNombre de retweets
favorite_countintegerNombre de likes
reply_countintegerNombre de réponses
quote_countintegerNombre de citations
view_countintegerNombre de vues
bookmark_countintegerNombre de signets

4. Rechercher des tweets

Recherchez des tweets X par mot-clé avec prise en charge des requêtes avancées.

Endpoint

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

Corps de requête

ParamètreTypeRequisDescription
querystringOuiRequête de recherche (prend en charge la syntaxe de recherche avancée)
query_typestringNonFiltre par type de requête
since_timeintegerNonFiltre d'heure de début (horodatage Unix en secondes)
until_timeintegerNonFiltre d'heure de fin (horodatage Unix en secondes)
limitintegerNonNombre de tweets à renvoyer
cursorstringNonCurseur de pagination

Exemple

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
  }'

Réponse de succès (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 }
      }
    ]
  }
}

Champs de réponse

ChampTypeDescription
totalintegerNombre total de résultats
has_nextbooleanIndique si d'autres résultats sont disponibles
next_cursorstringCurseur pour la page suivante
tweetsarrayListe d'objets tweet (voir section 3)

5. Obtenir les réponses à un tweet

Récupérez les réponses à des tweets spécifiques.

Endpoint

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

Corps de requête

ParamètreTypeRequisDescription
tweet_idsarray of stringsOuiID du ou des tweets dont vous voulez les réponses
cursorstringNonCurseur de pagination
since_timeintegerNonFiltre d'heure de début (horodatage Unix)
until_timeintegerNonFiltre d'heure de fin (horodatage Unix)

Exemple

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"]
  }'

Réponse de succès (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"
          }
        ]
      }
    ]
  }
}

Champs de réponse

ChampTypeDescription
resultsarrayListe d'objets de résultat de réponses
results[].tweet_idstringID du tweet d'origine
results[].totalintegerNombre total de réponses
results[].has_nextbooleanIndique si d'autres réponses sont disponibles
results[].next_cursorstringCurseur pour la page suivante
results[].repliesarrayListe d'objets tweet de réponse (voir section 3)

Codes d'erreur

CodeStatut HTTPDescription
UNAUTHORIZED401La clé API est invalide ou révoquée
X_SEARCH_FAILED400/500La requête de recherche X a échoué (vérifiez les paramètres ou une erreur en aval)
RATE_LIMIT_EXCEEDED429Trop de requêtes, réessayez après un court délai
insufficient_credits402Crédits insuffisants pour effectuer la requête

Crédits et limitation de débit

Coût en crédits

Chaque appel API déduit des crédits selon le nombre de résultats renvoyés :

EndpointCoût en crédits
POST /x/user/info1 crédit par utilisateur renvoyé
POST /x/user/search1 crédit par utilisateur renvoyé
POST /x/user/tweets1 crédit par tweet renvoyé
POST /x/tweet/search1 crédit par tweet renvoyé
POST /x/tweet/replies1 crédit par réponse renvoyée

Les crédits sont déduits après la fin de la requête, selon le nombre réel de résultats. Si une requête renvoie 0 résultat, aucun crédit n'est déduit.

Solde minimum requis : votre compte doit disposer d'au moins 10 crédits pour effectuer une requête à l'API X. Les requêtes effectuées avec moins de 10 crédits sont rejetées avec HTTP 402.

Limitation de débit

Les limites de débit sont appliquées selon les politiques en vigueur du service API et du compte. En cas de limitation, l'API renvoie HTTP 429. L'en-tête Retry-After indique le délai d'attente suggéré en secondes. Utilisez la documentation de service la plus récente et les réponses réelles de l'API pour gérer les limites de débit ; un abonnement n'est pas requis pour utiliser la plateforme.