Felo APIs
X Search API
Cari pengguna X, tweet, garis masa dan balasan dengan metadata penomboran halaman.
/v2/x/tweet/searchPengesahan
Bearer API key
Jenis kandungan
application/json
Nota had kadar
1 request per 10 seconds, 3 per minute, 10 per 10 minutes.
X Search API menyediakan akses kepada data X (Twitter), termasuk profil pengguna, carian tweet, tweet pengguna, dan balasan tweet.
Pengesahan
Semua permintaan memerlukan Kunci API dalam pengepala Authorization:
Authorization: Bearer YOUR_API_KEYGuna dengan Ejen AI
Pasang pakej lengkap felo-ai untuk memberikan Ejen X Search dan setiap Felo Skill lain yang tersedia. Pemasang menemui secara dinamik setiap direktori pakej yang mengandungi SKILL.md, dan bukannya menyimpan senarai Skill tetap. Pasang semua Skill yang ditemui dalam ~/.codex/skills Codex, ~/.claude/skills Claude Code, ~/.agents/skills OpenClaw, atau ~/.hermes/skills Hermes Agent. Lihat panduan persediaan Ejen AI manual untuk arahan pemasangan, kunci API, dan pengesahan khusus platform.
1. Dapatkan Maklumat Pengguna
Ambil profil pengguna X secara berkumpulan mengikut nama pengguna.
Endpoint
POST https://openapi.felo.ai/v2/x/user/infoIsi Badan Permintaan
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
usernames | array of strings | Ya | Senarai nama pengguna X untuk dicari |
Contoh
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"]
}'Respons Berjaya (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"
}
]
}
}Medan Objek Pengguna
| Medan | Jenis | Penerangan |
|---|---|---|
user_id | string | ID pengguna X |
username | string | Nama pengguna X (tanpa @) |
display_name | string | Nama paparan |
description | string | Bio pengguna |
followers_count | integer | Bilangan pengikut |
following_count | integer | Bilangan yang diikuti |
tweet_count | integer | Jumlah tweet |
verified | boolean | Sama ada akaun disahkan |
blue_verified | boolean | Sama ada akaun mempunyai pengesahan Blue |
verified_type | string | Jenis pengesahan |
profile_image_url | string | URL imej profil |
cover_image_url | string | URL imej muka depan |
created_at | string | Masa penciptaan akaun |
location | string | Lokasi pengguna |
url | string | URL laman web pengguna |
protected | boolean | Sama ada akaun dilindungi |
favorites_count | integer | Bilangan suka |
media_count | integer | Bilangan siaran media |
can_dm | boolean | Sama ada DM dibuka |
is_automated | boolean | Sama ada akaun automatik |
pinned_tweet_ids | array of strings | ID tweet yang disematkan |
2. Cari Pengguna
Cari pengguna X mengikut kata kunci.
Endpoint
POST https://openapi.felo.ai/v2/x/user/searchIsi Badan Permintaan
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
query | string | Ya | Kata kunci carian |
cursor | string | Tidak | Kursor penomboran halaman daripada respons sebelumnya |
Contoh
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"
}'Respons Berjaya (200)
{
"status": "ok",
"message": null,
"data": {
"total": 50,
"has_next": true,
"next_cursor": "cursor_abc123",
"users": [
{
"user_id": "...",
"username": "...",
"display_name": "..."
}
]
}
}Medan Respons
| Medan | Jenis | Penerangan |
|---|---|---|
total | integer | Jumlah bilangan hasil |
has_next | boolean | Sama ada lebih banyak hasil tersedia |
next_cursor | string | Kursor untuk halaman seterusnya |
users | array | Senarai objek pengguna (lihat bahagian 1) |
3. Dapatkan Tweet Pengguna
Ambil tweet daripada pengguna X tertentu.
Endpoint
POST https://openapi.felo.ai/v2/x/user/tweetsIsi Badan Permintaan
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
x_user_id | string | Tidak | ID pengguna X (berikan sama ada x_user_id atau username) |
username | string | Tidak | Nama pengguna X (berikan sama ada x_user_id atau username) |
limit | integer | Tidak | Bilangan tweet untuk dikembalikan |
cursor | string | Tidak | Kursor penomboran halaman |
include_replies | boolean | Tidak | Sama ada untuk menyertakan balasan |
Contoh
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
}'Respons Berjaya (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"
}
]
}
}Medan Objek Tweet
| Medan | Jenis | Penerangan |
|---|---|---|
id | string | ID tweet |
content | string | Kandungan teks tweet |
author | object | Objek pengguna penulis (lihat bahagian 1) |
created_at | string | Masa penciptaan tweet |
metrics | object | Metrik penglibatan (lihat di bawah) |
replies | array | Tweet balasan (jika tersedia) |
conversation_id | string | ID benang perbualan |
media_urls | array | Media yang dilampirkan |
hashtags | array of strings | Hashtag dalam tweet |
mentions | array of strings | Nama pengguna yang disebut |
urls | array of strings | URL dalam tweet |
url | string | Pautan kekal ke tweet |
source | string | Sumber tweet (contohnya "Twitter Web App") |
lang | string | Kod bahasa tweet |
is_reply | boolean | Sama ada ini balasan |
in_reply_to_id | string | ID tweet yang dibalas |
in_reply_to_user_id | string | ID pengguna tweet yang dibalas |
in_reply_to_username | string | Nama pengguna tweet yang dibalas |
quoted_tweet | object | Objek tweet yang dipetik (rekursif) |
retweeted_tweet | object | Objek tweet yang di-retweet (rekursif) |
is_limited_reply | boolean | Sama ada balasan dihadkan |
Medan Objek Metrik
| Medan | Jenis | Penerangan |
|---|---|---|
retweet_count | integer | Bilangan retweet |
favorite_count | integer | Bilangan suka |
reply_count | integer | Bilangan balasan |
quote_count | integer | Bilangan petikan |
view_count | integer | Bilangan paparan |
bookmark_count | integer | Bilangan penanda buku |
4. Cari Tweet
Cari tweet X mengikut kata kunci dengan sokongan pertanyaan lanjutan.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/searchIsi Badan Permintaan
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
query | string | Ya | Pertanyaan carian (menyokong sintaks carian lanjutan) |
query_type | string | Tidak | Penapis jenis pertanyaan |
since_time | integer | Tidak | Penapis masa mula (cap masa Unix dalam saat) |
until_time | integer | Tidak | Penapis masa tamat (cap masa Unix dalam saat) |
limit | integer | Tidak | Bilangan tweet untuk dikembalikan |
cursor | string | Tidak | Kursor penomboran halaman |
Contoh
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
}'Respons Berjaya (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 }
}
]
}
}Medan Respons
| Medan | Jenis | Penerangan |
|---|---|---|
total | integer | Jumlah bilangan hasil |
has_next | boolean | Sama ada lebih banyak hasil tersedia |
next_cursor | string | Kursor untuk halaman seterusnya |
tweets | array | Senarai objek tweet (lihat bahagian 3) |
5. Dapatkan Balasan Tweet
Ambil balasan untuk tweet tertentu.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/repliesIsi Badan Permintaan
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
tweet_ids | array of strings | Ya | ID tweet untuk mendapatkan balasan |
cursor | string | Tidak | Kursor penomboran halaman |
since_time | integer | Tidak | Penapis masa mula (cap masa Unix) |
until_time | integer | Tidak | Penapis masa tamat (cap masa Unix) |
Contoh
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"]
}'Respons Berjaya (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"
}
]
}
]
}
}Medan Respons
| Medan | Jenis | Penerangan |
|---|---|---|
results | array | Senarai objek hasil balasan |
results[].tweet_id | string | ID tweet asal |
results[].total | integer | Jumlah bilangan balasan |
results[].has_next | boolean | Sama ada lebih banyak balasan tersedia |
results[].next_cursor | string | Kursor untuk halaman seterusnya |
results[].replies | array | Senarai objek tweet balasan (lihat bahagian 3) |
Kod Ralat
| Kod | Status HTTP | Penerangan |
|---|---|---|
UNAUTHORIZED | 401 | Kunci API tidak sah atau telah dibatalkan |
X_SEARCH_FAILED | 400/500 | Permintaan carian X gagal (semak parameter atau ralat hiliran) |
RATE_LIMIT_EXCEEDED | 429 | Terlalu banyak permintaan, sila cuba semula selepas kelewatan singkat |
insufficient_credits | 402 | Kredit tidak mencukupi untuk menyelesaikan permintaan |
Kredit & Had Kadar
Kos Kredit
Setiap panggilan API menolak kredit berdasarkan bilangan hasil yang dikembalikan:
| Endpoint | Kos Kredit |
|---|---|
POST /x/user/info | 1 kredit setiap pengguna yang dikembalikan |
POST /x/user/search | 1 kredit setiap pengguna yang dikembalikan |
POST /x/user/tweets | 1 kredit setiap tweet yang dikembalikan |
POST /x/tweet/search | 1 kredit setiap tweet yang dikembalikan |
POST /x/tweet/replies | 1 kredit setiap balasan yang dikembalikan |
Kredit ditolak selepas permintaan selesai, berdasarkan bilangan hasil sebenar. Jika permintaan mengembalikan 0 hasil, tiada kredit ditolak.
Keperluan baki minimum: Akaun anda mesti mempunyai sekurang-kurangnya 10 kredit untuk membuat sebarang permintaan X API. Permintaan yang dibuat dengan kurang daripada 10 kredit akan ditolak dengan HTTP 402.
Had Kadar
Had kadar dikuatkuasakan mengikut perkhidmatan API semasa dan dasar akaun. Apabila terhad kadar, API mengembalikan HTTP 429. Pengepala Retry-After menunjukkan masa tunggu yang disyorkan dalam saat. Gunakan dokumentasi perkhidmatan terkini dan respons API sebenar untuk mengendalikan had kadar; langganan tidak diperlukan untuk menggunakan platform.