Felo APIs
X Search API
Wyszukuj użytkowników X, tweety, osie czasu i odpowiedzi oraz pobieraj metadane paginacji.
/v2/x/tweet/searchUwierzytelnianie
Bearer API key
Typ zawartości
application/json
Uwagi o limitach
1 request per 10 seconds, 3 per minute, 10 per 10 minutes.
API wyszukiwania X zapewnia dostęp do danych z X (Twitter), w tym profili użytkowników, wyszukiwania tweetów, tweetów użytkownika i odpowiedzi na tweety.
Uwierzytelnianie
Wszystkie żądania wymagają klucza API w nagłówku Authorization:
Authorization: Bearer YOUR_API_KEYUżycie z agentami AI
Zainstaluj kompletny pakiet felo-ai, aby dać agentowi X Search i każdy inny dostępny Felo Skill. Instalator dynamicznie wykrywa każdy katalog pakietu zawierający SKILL.md, zamiast utrzymywać stałą listę Skills. Zainstaluj wszystkie wykryte Skills w Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills lub Hermes Agent ~/.hermes/skills. Instrukcje instalacji, klucza API i weryfikacji dla poszczególnych platform znajdziesz w podręczniku konfiguracji agenta AI.
1. Pobieranie informacji o użytkowniku
Zbiorczo pobieraj profile użytkowników X według nazwy użytkownika.
Endpoint
POST https://openapi.felo.ai/v2/x/user/infoTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
usernames | array of strings | Tak | Lista nazw użytkowników X do wyszukania |
Przykład
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"]
}'Odpowiedź sukcesu (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"
}
]
}
}Pola obiektu użytkownika
| Pole | Typ | Opis |
|---|---|---|
user_id | string | Identyfikator użytkownika X |
username | string | Nazwa użytkownika X (bez @) |
display_name | string | Nazwa wyświetlana |
description | string | Biogram użytkownika |
followers_count | integer | Liczba obserwujących |
following_count | integer | Liczba obserwowanych |
tweet_count | integer | Łączna liczba tweetów |
verified | boolean | Czy konto jest zweryfikowane |
blue_verified | boolean | Czy konto ma weryfikację Blue |
verified_type | string | Typ weryfikacji |
profile_image_url | string | Adres URL zdjęcia profilowego |
cover_image_url | string | Adres URL zdjęcia w tle |
created_at | string | Czas utworzenia konta |
location | string | Lokalizacja użytkownika |
url | string | Adres URL witryny użytkownika |
protected | boolean | Czy konto jest chronione |
favorites_count | integer | Liczba polubień |
media_count | integer | Liczba postów multimedialnych |
can_dm | boolean | Czy wiadomości prywatne są otwarte |
is_automated | boolean | Czy konto jest zautomatyzowane |
pinned_tweet_ids | array of strings | Identyfikatory przypiętych tweetów |
2. Wyszukiwanie użytkowników
Wyszukuj użytkowników X według słowa kluczowego.
Endpoint
POST https://openapi.felo.ai/v2/x/user/searchTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
query | string | Tak | Słowo kluczowe wyszukiwania |
cursor | string | Nie | Kursor paginacji z poprzedniej odpowiedzi |
Przykład
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"
}'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": {
"total": 50,
"has_next": true,
"next_cursor": "cursor_abc123",
"users": [
{
"user_id": "...",
"username": "...",
"display_name": "..."
}
]
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
total | integer | Łączna liczba wyników |
has_next | boolean | Czy dostępne są kolejne wyniki |
next_cursor | string | Kursor następnej strony |
users | array | Lista obiektów użytkowników (zobacz sekcję 1) |
3. Pobieranie tweetów użytkownika
Pobieraj tweety konkretnego użytkownika X.
Endpoint
POST https://openapi.felo.ai/v2/x/user/tweetsTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
x_user_id | string | Nie | Identyfikator użytkownika X (podaj x_user_id lub username) |
username | string | Nie | Nazwa użytkownika X (podaj x_user_id lub username) |
limit | integer | Nie | Liczba tweetów do zwrócenia |
cursor | string | Nie | Kursor paginacji |
include_replies | boolean | Nie | Czy uwzględnić odpowiedzi |
Przykład
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
}'Odpowiedź sukcesu (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"
}
]
}
}Pola obiektu tweeta
| Pole | Typ | Opis |
|---|---|---|
id | string | Identyfikator tweeta |
content | string | Treść tekstowa tweeta |
author | object | Obiekt autora (zobacz sekcję 1) |
created_at | string | Czas utworzenia tweeta |
metrics | object | Metryki zaangażowania (zobacz poniżej) |
replies | array | Tweety będące odpowiedziami (jeśli dostępne) |
conversation_id | string | Identyfikator wątku konwersacji |
media_urls | array | Dołączone multimedia |
hashtags | array of strings | Hashtagi w tweecie |
mentions | array of strings | Wspomniane nazwy użytkowników |
urls | array of strings | Adresy URL w tweecie |
url | string | Bezpośredni link do tweeta |
source | string | Źródło tweeta (np. "Twitter Web App") |
lang | string | Kod języka tweeta |
is_reply | boolean | Czy to odpowiedź |
in_reply_to_id | string | Identyfikator tweeta, na który odpowiadano |
in_reply_to_user_id | string | Identyfikator użytkownika tweeta, na który odpowiadano |
in_reply_to_username | string | Nazwa użytkownika tweeta, na który odpowiadano |
quoted_tweet | object | Obiekt cytowanego tweeta (rekurencyjny) |
retweeted_tweet | object | Obiekt podanego dalej tweeta (rekurencyjny) |
is_limited_reply | boolean | Czy odpowiedzi są ograniczone |
Pola obiektu metryk
| Pole | Typ | Opis |
|---|---|---|
retweet_count | integer | Liczba podań dalej |
favorite_count | integer | Liczba polubień |
reply_count | integer | Liczba odpowiedzi |
quote_count | integer | Liczba cytowań |
view_count | integer | Liczba wyświetleń |
bookmark_count | integer | Liczba zapisanych zakładek |
4. Wyszukiwanie tweetów
Wyszukuj tweety X według słowa kluczowego z obsługą zaawansowanych zapytań.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/searchTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
query | string | Tak | Zapytanie wyszukiwania (obsługuje zaawansowaną składnię wyszukiwania) |
query_type | string | Nie | Filtr typu zapytania |
since_time | integer | Nie | Filtr czasu początkowego (znacznik czasu Unix w sekundach) |
until_time | integer | Nie | Filtr czasu końcowego (znacznik czasu Unix w sekundach) |
limit | integer | Nie | Liczba tweetów do zwrócenia |
cursor | string | Nie | Kursor paginacji |
Przykład
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
}'Odpowiedź sukcesu (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 }
}
]
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
total | integer | Łączna liczba wyników |
has_next | boolean | Czy dostępne są kolejne wyniki |
next_cursor | string | Kursor następnej strony |
tweets | array | Lista obiektów tweetów (zobacz sekcję 3) |
5. Pobieranie odpowiedzi na tweety
Pobieraj odpowiedzi na konkretne tweety.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/repliesTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
tweet_ids | array of strings | Tak | Identyfikatory tweetów, dla których pobrać odpowiedzi |
cursor | string | Nie | Kursor paginacji |
since_time | integer | Nie | Filtr czasu początkowego (znacznik czasu Unix) |
until_time | integer | Nie | Filtr czasu końcowego (znacznik czasu Unix) |
Przykład
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"]
}'Odpowiedź sukcesu (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"
}
]
}
]
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
results | array | Lista obiektów wyników odpowiedzi |
results[].tweet_id | string | Identyfikator oryginalnego tweeta |
results[].total | integer | Łączna liczba odpowiedzi |
results[].has_next | boolean | Czy dostępne są kolejne odpowiedzi |
results[].next_cursor | string | Kursor następnej strony |
results[].replies | array | Lista obiektów tweetów będących odpowiedziami (zobacz sekcję 3) |
Kody błędów
| Kod | Status HTTP | Opis |
|---|---|---|
UNAUTHORIZED | 401 | Klucz API jest nieprawidłowy lub unieważniony |
X_SEARCH_FAILED | 400/500 | Niepowodzenie żądania wyszukiwania X (sprawdź parametry lub błąd podrzędny) |
RATE_LIMIT_EXCEEDED | 429 | Zbyt wiele żądań, ponów po krótkiej chwili |
insufficient_credits | 402 | Niewystarczające kredyty do zrealizowania żądania |
Kredyty i limity szybkości
Koszty kredytów
Każde wywołanie API odejmuje kredyty na podstawie liczby zwróconych wyników:
| Endpoint | Koszt w kredytach |
|---|---|
POST /x/user/info | 1 kredyt za każdego zwróconego użytkownika |
POST /x/user/search | 1 kredyt za każdego zwróconego użytkownika |
POST /x/user/tweets | 1 kredyt za każdego zwróconego tweeta |
POST /x/tweet/search | 1 kredyt za każdego zwróconego tweeta |
POST /x/tweet/replies | 1 kredyt za każdą zwróconą odpowiedź |
Kredyty są odejmowane po zakończeniu żądania, na podstawie rzeczywistej liczby wyników. Jeśli żądanie zwróci 0 wyników, kredyty nie są odejmowane.
Wymagane minimalne saldo: Twoje konto musi mieć co najmniej 10 kredytów, aby wykonać jakiekolwiek żądanie do API X. Żądania z mniejszą liczbą niż 10 kredytów zostaną odrzucone z HTTP 402.
Limity szybkości
Limity szybkości są egzekwowane zgodnie z bieżącymi zasadami usługi API i konta. Przy ograniczeniu szybkości API zwraca HTTP 429. Nagłówek Retry-After wskazuje sugerowany czas oczekiwania w sekundach. Do obsługi limitów szybkości używaj najnowszej dokumentacji usługi i rzeczywistych odpowiedzi API; korzystanie z platformy nie wymaga subskrypcji.