Felo APIs
X Search API
Cari pengguna X, tweet, linimasa, dan balasan dengan metadata paginasi.
/v2/x/tweet/searchAutentikasi
Bearer API key
Tipe konten
application/json
Catatan batas laju
1 request per 10 seconds, 3 per minute, 10 per 10 minutes.
X Search API menyediakan akses ke data X (Twitter), termasuk profil pengguna, pencarian tweet, tweet pengguna, dan balasan tweet.
Autentikasi
Semua permintaan memerlukan Kunci API di header Authorization:
Authorization: Bearer YOUR_API_KEYPenggunaan dengan Agen AI
Pasang paket felo-ai lengkap untuk memberi Agen X Search dan setiap Felo Skill lain yang tersedia. Installer menemukan setiap direktori paket yang berisi SKILL.md secara dinamis, alih-alih mempertahankan daftar Skill yang tetap. Pasang semua Skill yang ditemukan di Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills, atau Hermes Agent ~/.hermes/skills. Lihat panduan penyiapan Agen AI manual untuk instruksi instalasi, kunci API, dan verifikasi yang spesifik per platform.
1. Mendapatkan Info Pengguna
Ambil profil pengguna X secara batch berdasarkan username.
Endpoint
POST https://openapi.felo.ai/v2/x/user/infoIsi Permintaan
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
usernames | array of strings | Ya | Daftar username X yang akan 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 Berhasil (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"
}
]
}
}Field Objek Pengguna
| Field | Tipe | Deskripsi |
|---|---|---|
user_id | string | ID pengguna X |
username | string | Handle X (tanpa @) |
display_name | string | Nama tampilan |
description | string | Bio pengguna |
followers_count | integer | Jumlah pengikut |
following_count | integer | Jumlah akun yang diikuti |
tweet_count | integer | Total tweet |
verified | boolean | Apakah akun terverifikasi |
blue_verified | boolean | Apakah akun memiliki verifikasi Blue |
verified_type | string | Tipe verifikasi |
profile_image_url | string | URL gambar profil |
cover_image_url | string | URL gambar sampul |
created_at | string | Waktu pembuatan akun |
location | string | Lokasi pengguna |
url | string | URL situs web pengguna |
protected | boolean | Apakah akun dilindungi |
favorites_count | integer | Jumlah suka |
media_count | integer | Jumlah postingan media |
can_dm | boolean | Apakah DM terbuka |
is_automated | boolean | Apakah akun otomatis |
pinned_tweet_ids | array of strings | ID tweet yang disematkan |
2. Mencari Pengguna
Cari pengguna X berdasarkan kata kunci.
Endpoint
POST https://openapi.felo.ai/v2/x/user/searchIsi Permintaan
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
query | string | Ya | Kata kunci pencarian |
cursor | string | Tidak | Cursor paginasi dari 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 Berhasil (200)
{
"status": "ok",
"message": null,
"data": {
"total": 50,
"has_next": true,
"next_cursor": "cursor_abc123",
"users": [
{
"user_id": "...",
"username": "...",
"display_name": "..."
}
]
}
}Field Respons
| Field | Tipe | Deskripsi |
|---|---|---|
total | integer | Jumlah total hasil |
has_next | boolean | Apakah ada hasil lain yang tersedia |
next_cursor | string | Cursor untuk halaman berikutnya |
users | array | Daftar objek pengguna (lihat bagian 1) |
3. Mendapatkan Tweet Pengguna
Ambil tweet dari pengguna X tertentu.
Endpoint
POST https://openapi.felo.ai/v2/x/user/tweetsIsi Permintaan
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
x_user_id | string | Tidak | ID pengguna X (berikan x_user_id atau username) |
username | string | Tidak | Username X (berikan x_user_id atau username) |
limit | integer | Tidak | Jumlah tweet yang dikembalikan |
cursor | string | Tidak | Cursor paginasi |
include_replies | boolean | Tidak | Apakah balasan disertakan |
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 Berhasil (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"
}
]
}
}Field Objek Tweet
| Field | Tipe | Deskripsi |
|---|---|---|
id | string | ID tweet |
content | string | Konten teks tweet |
author | object | Objek pengguna penulis (lihat bagian 1) |
created_at | string | Waktu pembuatan tweet |
metrics | object | Metrik interaksi (lihat di bawah) |
replies | array | Tweet balasan (jika tersedia) |
conversation_id | string | ID thread percakapan |
media_urls | array | Media yang dilampirkan |
hashtags | array of strings | Hashtag dalam tweet |
mentions | array of strings | Username yang disebut |
urls | array of strings | URL dalam tweet |
url | string | Tautan permanen ke tweet |
source | string | Sumber tweet (mis. "Twitter Web App") |
lang | string | Kode bahasa tweet |
is_reply | boolean | Apakah ini balasan |
in_reply_to_id | string | ID tweet yang dibalas |
in_reply_to_user_id | string | ID pengguna dari tweet yang dibalas |
in_reply_to_username | string | Username dari tweet yang dibalas |
quoted_tweet | object | Objek tweet yang dikutip (rekursif) |
retweeted_tweet | object | Objek tweet yang di-retweet (rekursif) |
is_limited_reply | boolean | Apakah balasan dibatasi |
Field Objek Metrik
| Field | Tipe | Deskripsi |
|---|---|---|
retweet_count | integer | Jumlah retweet |
favorite_count | integer | Jumlah suka |
reply_count | integer | Jumlah balasan |
quote_count | integer | Jumlah kutipan |
view_count | integer | Jumlah tampilan |
bookmark_count | integer | Jumlah bookmark |
4. Mencari Tweet
Cari tweet X berdasarkan kata kunci dengan dukungan kueri lanjutan.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/searchIsi Permintaan
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
query | string | Ya | Kueri pencarian (mendukung sintaks pencarian lanjutan) |
query_type | string | Tidak | Filter tipe kueri |
since_time | integer | Tidak | Filter waktu mulai (Unix stempel waktu dalam detik) |
until_time | integer | Tidak | Filter waktu selesai (Unix stempel waktu dalam detik) |
limit | integer | Tidak | Jumlah tweet yang dikembalikan |
cursor | string | Tidak | Cursor paginasi |
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 Berhasil (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 }
}
]
}
}Field Respons
| Field | Tipe | Deskripsi |
|---|---|---|
total | integer | Jumlah total hasil |
has_next | boolean | Apakah ada hasil lain yang tersedia |
next_cursor | string | Cursor untuk halaman berikutnya |
tweets | array | Daftar objek tweet (lihat bagian 3) |
5. Mendapatkan Balasan Tweet
Ambil balasan untuk tweet tertentu.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/repliesIsi Permintaan
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
tweet_ids | array of strings | Ya | ID tweet yang akan diambil balasannya |
cursor | string | Tidak | Cursor paginasi |
since_time | integer | Tidak | Filter waktu mulai (Unix stempel waktu) |
until_time | integer | Tidak | Filter waktu selesai (Unix stempel waktu) |
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 Berhasil (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"
}
]
}
]
}
}Field Respons
| Field | Tipe | Deskripsi |
|---|---|---|
results | array | Daftar objek hasil balasan |
results[].tweet_id | string | ID tweet asli |
results[].total | integer | Jumlah total balasan |
results[].has_next | boolean | Apakah ada balasan lain yang tersedia |
results[].next_cursor | string | Cursor untuk halaman berikutnya |
results[].replies | array | Daftar objek tweet balasan (lihat bagian 3) |
Kode Error
| Kode | Status HTTP | Deskripsi |
|---|---|---|
UNAUTHORIZED | 401 | Kunci API tidak valid atau sudah dicabut |
X_SEARCH_FAILED | 400/500 | Permintaan pencarian X gagal (periksa parameter atau error downstream) |
RATE_LIMIT_EXCEEDED | 429 | Terlalu banyak permintaan, silakan coba lagi setelah jeda singkat |
insufficient_credits | 402 | Kredit tidak cukup untuk menyelesaikan permintaan |
Kredit & Batas Laju
Biaya Kredit
Setiap panggilan API memotong kredit berdasarkan jumlah hasil yang dikembalikan:
| Endpoint | Biaya Kredit |
|---|---|
POST /x/user/info | 1 kredit per pengguna yang dikembalikan |
POST /x/user/search | 1 kredit per pengguna yang dikembalikan |
POST /x/user/tweets | 1 kredit per tweet yang dikembalikan |
POST /x/tweet/search | 1 kredit per tweet yang dikembalikan |
POST /x/tweet/replies | 1 kredit per balasan yang dikembalikan |
Kredit dipotong setelah permintaan selesai, berdasarkan jumlah hasil sebenarnya. Jika permintaan mengembalikan 0 hasil, tidak ada kredit yang dipotong.
Persyaratan saldo minimum: Akun Anda harus memiliki setidaknya 10 kredit untuk melakukan permintaan X API apa pun. Permintaan dengan kurang dari 10 kredit akan ditolak dengan HTTP 402.
Batas Laju
Batas laju diberlakukan sesuai kebijakan layanan API dan akun yang berlaku. Saat terkena batas laju, API mengembalikan HTTP 429. Header Retry-After menunjukkan saran waktu tunggu dalam detik. Gunakan dokumentasi layanan terbaru dan respons API aktual untuk menangani batas laju; langganan tidak diperlukan untuk menggunakan platform.