ข้อมูล X
Provider: Felo · ชำระด้วยยอดคงเหลือบนแพลตฟอร์ม
เลือกการทำงานให้ตรงกับข้อมูลที่คุณต้องการ ทั้งห้าเอนด์พอยต์ใช้ POST และส่งคืน JSON ที่ราก โดยไม่มี wrapper data ร่วมกัน
ตัวอย่างทั้งหมดใช้ FELO_API_KEY จาก ภาพรวม การเรียกใช้ใช้ ยอดคงเหลือบนแพลตฟอร์ม ไม่ใช่ Felo Pro credits ตัวอย่างการตอบกลับมีไว้เพื่อประกอบการอธิบาย; เนื้อหาจริงและฟิลด์เสริมอาจแตกต่างกัน
เลือกการทำงาน
| สิ่งที่ต้องการ | เอนด์พอยต์ |
|---|---|
| โปรไฟล์สำหรับ username ที่ทราบ | POST /api/v1/data/x/user/info |
| ค้นหาผู้ใช้ด้วยคำค้นหา | POST /api/v1/data/x/user/search |
| โพสต์จากผู้ใช้หนึ่งคน | POST /api/v1/data/x/user/tweets |
| โพสต์ที่ตรงกับคำค้นหา | POST /api/v1/data/x/tweet/search |
| คำตอบต่อโพสต์ที่ทราบ | POST /api/v1/data/x/tweet/replies |
1. รับโปรไฟล์ผู้ใช้
POST /api/v1/data/x/user/info
| ฟิลด์ | ประเภท | จำเป็น | ความหมาย |
|---|---|---|---|
usernames | string array | ใช่ | 1–100 usernames; ส่ง handle โดยไม่ต้องมี @ |
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/info" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"usernames":["OpenAI"]}'การตอบกลับมี users และ total ผู้ใช้แต่ละรายประกอบด้วย user_id, username และ display_name; ข้อความโปรไฟล์ จำนวนผู้ติดตาม การยืนยันตัวตน และเมตาดาตาอื่นๆ อาจมีอยู่ด้วย ชุดคำขอหนึ่งครั้งอาจส่งคืนโปรไฟล์น้อยกว่าที่ร้องขอ จับคู่ด้วย username หรือ ID ไม่ใช่ตำแหน่งในอาร์เรย์
{"users":[{"user_id":"example-user-id","username":"example","display_name":"Example"}],"total":1}2. ค้นหาผู้ใช้
POST /api/v1/data/x/user/search
| ฟิลด์ | ประเภท | จำเป็น | ความหมาย |
|---|---|---|---|
query | string | ใช่ | 1–1,000 อักขระ |
cursor | string | ไม่ | cursor สำหรับการแบ่งหน้า, ยาวได้ถึง 4,000 อักขระ |
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/search" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"AI research"}'การตอบกลับมี users, total, has_next และ next_cursor การทำงานนี้ไม่มีพารามิเตอร์ limit
{"users":[],"total":0,"has_next":false,"next_cursor":null}3. รับไทม์ไลน์ของผู้ใช้
POST /api/v1/data/x/user/tweets
| ฟิลด์ | ประเภท | จำเป็น | ความหมาย |
|---|---|---|---|
username | string | ต้องมีหนึ่งตัวระบุ | handle ของผู้ใช้, ยาวได้ถึง 100 อักขระ |
x_user_id | string | ต้องมีหนึ่งตัวระบุ | ID ของผู้ใช้, ยาวได้ถึง 100 อักขระ; มีลำดับความสำคัญเหนือ username |
limit | integer | ไม่ | 1–1,000; การใช้งานปัจจุบันใช้เป้าหมายอย่างน้อย 20 โดยค่าเริ่มต้น 20 |
cursor | string | ไม่ | cursor สำหรับการแบ่งหน้า, ยาวได้ถึง 4,000 อักขระ |
include_replies | boolean | ไม่ | รวมคำตอบย่อยที่ซ้อนกัน; ค่าเริ่มต้น false |
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/tweets" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username":"OpenAI","limit":20,"include_replies":false}'การตอบกลับมี tweets, total, has_next และ next_cursor การตั้ง limit ต่ำกว่า 20 ไม่ได้ทำให้แน่ใจว่าจะมีรายการที่ส่งคืนลดลงหรือค่าบริการน้อยลง การรวม replies อาจเพิ่มข้อมูลที่ส่งคืนและผลลัพธ์ที่คิดค่าบริการได้
ขีดจำกัดผลลัพธ์และคำตอบย่อยที่ซ้อนกัน
limit คือจำนวนเป้าหมายของโพสต์ระดับบนสำหรับคำขอนี้ ไม่ใช่จำนวนผลลัพธ์ที่รับประกัน การใช้งานปัจจุบันใช้เป้าหมายอย่างน้อย 20: เป้าหมาย 20 จะอ่าน upstream page หนึ่งหน้า; เป้าหมายที่มากกว่าจะดึงอัตโนมัติได้สูงสุด 50 หน้า ก่อนแต่ละหน้า จะตรวจสอบเวลาเริ่มต้นและหยุดดึงหน้าต่อไปเมื่อเกิน 60 วินาที การตรวจสอบนี้ไม่ได้รับประกันว่าคำขอ HTTP ทั้งหมดจะเสร็จภายใน 60 วินาที
การเก็บข้อมูลยังหยุดเมื่อถึงเป้าหมาย upstream ไม่มีหน้าถัดไป หน้าว่าง หรือ cursor หายไป ดังนั้นการตอบกลับที่สำเร็จอาจมีโพสต์น้อยกว่า limit ใช้ has_next และ next_cursor เพื่อดำเนินต่อเมื่อมีอยู่
เมื่อ include_replies=true แต่ละโพสต์ที่ส่งคืนจะได้หน้าพิเศษเพิ่มได้สูงสุด 5 หน้า และตอบกลับย่อยที่ซ้อนกันได้มากสุด 100 รายการ การเก็บข้อมูลอาจหยุดก่อนเมื่อไม่มีหน้าถัดไป หน้าว่าง หรือ cursor ไม่สามารถเดินต่อได้ ตอบกลับย่อยเหล่านี้อยู่นอก limit และ total ระดับบน แต่สามารถเพิ่มผลลัพธ์ที่คิดค่าบริการได้
replies ที่ซ้อนกันไม่ใช่คลังคำตอบที่ครบถ้วน และไม่เปิดเผย cursor การดำเนินต่อแยกต่างหากสำหรับการเก็บข้อมูลพิเศษนี้ หากต้องการแบ่งหน้าคำตอบแยกต่างหาก ให้ใช้การทำงาน Read replies และ cursor ที่ส่งคืนมา อย่านำ cursor ของโพสต์ระดับบนมาใช้ซ้ำกับ replies
4. ค้นหาโพสต์
POST /api/v1/data/x/tweet/search
| ฟิลด์ | ประเภท | จำเป็น | ความหมาย |
|---|---|---|---|
query | string | ใช่ | ข้อความค้นหา, 1–1,000 อักขระ |
query_type | string | ไม่ | Latest (ค่าเริ่มต้น) หรือ Top |
limit | integer | ไม่ | 1–1,000; การใช้งานปัจจุบันใช้เป้าหมายอย่างน้อย 20 โดยค่าเริ่มต้น 20 |
cursor | string | ไม่ | cursor สำหรับการแบ่งหน้า, ยาวได้ถึง 4,000 อักขระ |
since_time | integer or string | ไม่ | เวลาเริ่มต้น; ใช้ Unix seconds เพื่อให้ค่าเป็นตัวเลขที่ชัดเจน |
until_time | integer or string | ไม่ | เวลาสิ้นสุด; ใช้ Unix seconds ไม่ใช่ milliseconds |
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/tweet/search" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"retrieval augmented generation","query_type":"Latest","limit":20}'การตอบกลับมี tweets, total, has_next และ next_cursor ออบเจ็กต์โพสต์ประกอบด้วย id, content, author, created_at และ metrics; replies และโพสต์ที่อ้างถึง/รีทวีตอาจซ้อนอยู่ Treat IDs as strings.
ขีดจำกัดจำนวนผลลัพธ์
limit คือเป้าหมาย ไม่ใช่การรับประกัน การใช้งานปัจจุบันใช้เป้าหมายอย่างน้อย 20: เป้าหมาย 20 จะอ่าน upstream page หนึ่งหน้า; เป้าหมายที่มากกว่าจะดึงอัตโนมัติได้สูงสุด 50 หน้า เวลาเริ่มต้นจะถูกตรวจสอบก่อนแต่ละหน้า และจะไม่ดึงหน้าต่อไปเมื่อเกิน 60 วินาที upstream request ที่กำลังดำเนินการอยู่ยังอาจใช้เวลาได้ ดังนั้นนี่ไม่ใช่ overall HTTP timeout
การเก็บข้อมูลยังหยุดเมื่อถึงเป้าหมาย upstream ไม่มีหน้าถัดไป หน้าว่าง หรือ cursor หายไป การส่งคืนโพสต์น้อยกว่า limit ไม่ได้หมายความว่าคำขอล้มเหลวหรือว่าดึงโพสต์ที่ตรงกันทั้งหมดแล้ว ตรวจสอบ has_next และ next_cursor ก่อนดำเนินต่อ
{
"tweets": [{
"id":"example-post-id",
"content":"Example post content",
"author":{"user_id":"example-user-id","username":"example","display_name":"Example"},
"created_at":"2026-11-01T00:00:00Z",
"metrics":{},
"replies":[]
}],
"total":1,
"has_next":false,
"next_cursor":null
}5. อ่านคำตอบ
POST /api/v1/data/x/tweet/replies
| ฟิลด์ | ประเภท | จำเป็น | ความหมาย |
|---|---|---|---|
tweet_ids | string or string array | ใช่ | ID โพสต์หนึ่งรายการ หรือเป็นชุดสูงสุด 20 IDs |
cursor | string | ไม่ | ยาวได้ถึง 4,000 อักขระ; ใช้กับ post ID เดียว |
since_time | integer | ไม่ | เวลาเริ่มต้นใน Unix seconds |
until_time | integer | ไม่ | เวลาสิ้นสุดใน Unix seconds |
แทนที่ placeholder ด้วย post ID จริง:
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/tweet/replies" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tweet_ids":["POST_ID"]}'ต่างจากไทม์ไลน์และการค้นหาโพสต์ คำตอบจะถูกรวมอยู่ใต้ results แต่ละรายการมีสถานะการแบ่งหน้าของตนเอง:
{"results":[{"tweet_id":"POST_ID","replies":[],"total":0,"has_next":false,"next_cursor":null}]}ขีดจำกัดคำตอบต่อคำขอ
แต่ละคำขออ่าน upstream reply page หนึ่งหน้าต่อ tweet_id และเก็บไว้ได้มากสุด 100 replies; มันไม่ได้ดึงทุก reply page โดยอัตโนมัติ ในชุดสูงสุด 20 IDs ขีดจำกัด 100 replies จะใช้แยกกันสำหรับแต่ละรายการ results จำนวนจริงอาจน้อยกว่านั้น
total ของแต่ละรายการคือจำนวน replies ที่ส่งคืนในรายการนั้น ไม่ใช่จำนวน replies ทั้งหมดของโพสต์ หากต้องการต่อ ให้ใช้ next_cursor ของรายการนั้นและส่งเฉพาะ post ID เดี่ยวของมันในคำขอถัดไป ไม่มีพารามิเตอร์ limit ที่เพิ่มขีดจำกัดต่อคำขอ
การแบ่งหน้าและการควบคุมค่าใช้จ่าย
total นับอาร์เรย์ที่สอดคล้องกันใน response ปัจจุบัน: โพสต์ระดับบนสำหรับคำถามโพสต์ หรือ replies ภายในแต่ละรายการผลลัพธ์สำหรับคำถาม replies มันไม่ใช่จำนวนแมตช์ทั่วโลก จำนวน replies ทั้งหมดของโพสต์ หรือจำนวนที่คิดค่าบริการสุดท้าย
- ส่งคำขอแรกโดยไม่ใส่
cursor. - อ่าน
has_nextและnext_cursorจาก response สำหรับ replies ให้อ่านในแต่ละรายการผลลัพธ์ - หากมีหน้าถัดไปและ cursor ไม่ว่าง ให้ส่งค่าเดิมโดยไม่เปลี่ยนพร้อมกับคำค้นหาเดิม สำหรับชุด replies ให้ดำเนินต่อทีละโพสต์
- หยุดเมื่อไม่มีหน้าถัดไป เมื่อ cursor ซ้ำ หรือเมื่อถึงขีดจำกัดหน้าหรือค่าใช้จ่ายของคุณ
เมตาดาตาการแบ่งหน้าสะท้อน response upstream ล่าสุด; collection ที่ส่งคืนอาจถูกตัดที่ขีดจำกัดผลลัพธ์ แม้แต่ has_next=false ก็ไม่รับประกันว่าประวัติ X หรือ replies ทั้งหมดถูกดึงแล้ว แสดงจำนวนที่ส่งคืนจริงแทนที่จะติดป้ายชุดผลลัพธ์ที่มีขอบเขตว่าเป็นข้อมูลทั้งหมดที่มีอยู่
แต่ละหน้าที่สำเร็จอาจมีค่าบริการได้ การทำงานทั้งห้านี้คิดค่าบริการตามผลลัพธ์ที่ส่งคืน ไม่ใช่ค่าธรรมเนียมต่อคำขอแบบคงที่ replies ที่ซ้อนกันและระเบียนที่ส่งคืนอื่นๆ อาจมีผลต่อจำนวนที่คิดค่าบริการ; อย่าประเมินต้นทุนจากความยาวของอาร์เรย์ระดับบนเพียงอย่างเดียว ตรวจสอบ ราคาปัจจุบัน และการใช้งานในคอนโซล ฟิลด์ออบเจ็กต์ฉบับสมบูรณ์อยู่ใน OpenAPI schema