Felo API PlatformFelo API Platform

بيانات X

المزود: Felo · مدفوع برصيد المنصة

اختر العملية الخاصة بالبيانات التي تحتاجها. تستخدم النقاط الخمس جميعها POST وتعيد JSON في الجذر، من دون غلاف data مشترك.

تستخدم جميع الأمثلة FELO_API_KEY من نظرة عامة. تستخدم الاستدعاءات رصيد المنصة، وليس أرصدة Felo Pro. أمثلة الاستجابة توضيحية؛ ويختلف المحتوى الحي والحقول الاختيارية.

اختر عملية

الحاجةنقطة النهاية
ملفات التعريف لأسماء المستخدمين المعروفة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

الحقلالنوعمطلوبالمعنى
usernamesstring arrayنعممن 1 إلى 100 اسم مستخدم؛ أرسل المعرّفات بدون @
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; وقد يظهر أيضًا نص الملف الشخصي، وأعداد المتابعين، وحالة التحقق، وبيانات وصفية أخرى. يمكن أن تُرجع الدفعة أقل من عدد الملفات الشخصية المطلوبة. طابِق باستخدام اسم المستخدم أو المعرف، وليس بحسب موضع المصفوفة.

{"users":[{"user_id":"example-user-id","username":"example","display_name":"Example"}],"total":1}

2. ابحث عن المستخدمين

POST /api/v1/data/x/user/search

الحقلالنوعمطلوبالمعنى
querystringنعم1–1,000 حرف
cursorstringلامؤشر ترقيم، حتى 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

الحقلالنوعمطلوبالمعنى
usernamestringمطلوب مُعرّف واحدمعرّف المستخدم، حتى 100 حرف
x_user_idstringمطلوب مُعرّف واحدمعرّف المستخدم، حتى 100 حرف؛ وله أولوية على username
limitintegerلا1–1,000؛ يستخدم التنفيذ الحالي 20 على الأقل، مع افتراضي 20
cursorstringلامؤشر ترقيم، حتى 4,000 حرف
include_repliesbooleanلاتضمين الردود المتداخلة؛ الافتراضي 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 لا يضمن عدد عناصر أقل مُعادة أو فاتورة أصغر. قد يؤدي تضمين الردود إلى إضافة بيانات مُعادة ونتائج قابلة للفوترة.

حدود النتائج والردود المتداخلة

limit هو عدد مستهدف للمنشورات من المستوى الأعلى لهذا الطلب، وليس عدد نتائج مضمونًا. يستخدم التنفيذ الحالي هدفًا لا يقل عن 20: إذ يقرأ هدف 20 صفحةً أصلية واحدة؛ وتتولى الأهداف الأكبر جلب ما يصل إلى 50 صفحة تلقائيًا. قبل كل صفحة، يُفحص الوقت المنقضي ويتوقف الجلب عن صفحات إضافية بمجرد تجاوزه 60 ثانية. هذا الفحص ليس ضمانًا بأن طلب HTTP الكامل سينتهي خلال 60 ثانية.

يتوقف الجمع أيضًا عندما يتحقق الهدف، أو لا تحتوي الصفحة الأصلية على صفحة تالية، أو تكون الصفحة فارغة، أو يكون المؤشر مفقودًا. لذلك قد تحتوي الاستجابة الناجحة على عدد أقل من limit من المنشورات. استخدم has_next وnext_cursor للمتابعة عند توفرهما.

مع include_replies=true، تحصل كل منشور مُعاد على ما يصل إلى 5 صفحات إضافية وبحد أقصى 100 رد متداخل. يمكن أن يتوقف الجمع مبكرًا عندما لا توجد صفحة تالية، أو تكون الصفحة فارغة، أو يتعذر على المؤشر التقدم. هذه الردود المتداخلة خارج limit وtotal للمستوى الأعلى، لكنها قد تضيف نتائج قابلة للفوترة.

الردود المتداخلة replies ليست أرشيفًا كاملًا للردود ولا تكشف عن مؤشر متابعة منفصل لهذا الجمع الإضافي. لترقيم الردود بشكل مستقل، استخدم عملية قراءة الردود والمؤشر المُعاد منها. لا تعِد استخدام مؤشر منشور المستوى الأعلى للردود.

4. ابحث عن المنشورات

POST /api/v1/data/x/tweet/search

الحقلالنوعمطلوبالمعنى
querystringنعمنص البحث، 1–1,000 حرف
query_typestringلاLatest (الافتراضي) أو Top
limitintegerلا1–1,000؛ يستخدم التنفيذ الحالي 20 على الأقل، مع افتراضي 20
cursorstringلامؤشر ترقيم، حتى 4,000 حرف
since_timeinteger or stringلاوقت البدء؛ استخدم ثواني Unix لقيمة رقمية غير ملتبسة
until_timeinteger or stringلاوقت الانتهاء؛ استخدم ثواني Unix، وليس المللي ثانية
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; وقد تكون الردود والمنشورات المقتبسة/المعاد نشرها متداخلة. عامِل المعرفات كسلاسل نصية.

حدود عدد النتائج

limit هو هدف، وليس ضمانًا. يستخدم التنفيذ الحالي هدفًا لا يقل عن 20: إذ يقرأ هدف 20 صفحة أصلية واحدة؛ وتتولى الأهداف الأكبر جلب ما يصل إلى 50 صفحة تلقائيًا. يُفحص الوقت المنقضي قبل كل صفحة، ولا تُجلب صفحات إضافية بعد تجاوزه 60 ثانية. قد يستغرق طلب upstream الجاري وقتًا إضافيًا، لذا فهذه ليست مهلة HTTP شاملة.

يتوقف الجمع أيضًا عندما يتحقق الهدف، أو لا تحتوي الصفحة الأصلية على صفحة تالية، أو تكون الصفحة فارغة، أو يكون المؤشر مفقودًا. إن إرجاع عدد أقل من 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_idsstring or string arrayنعممعرّف منشور واحد أو دفعة تصل إلى 20 معرّفًا
cursorstringلاحتى 4,000 حرف؛ استخدمه مع معرّف منشور واحد
since_timeintegerلاوقت البدء بثواني Unix
until_timeintegerلاوقت الانتهاء بثواني Unix

استبدل العنصر النائب بمعرّف منشور حقيقي:

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

حدود الردود لكل طلب

يقرأ كل طلب صفحة ردود أصلية واحدة لكل tweet_id ويحتفظ بما يصل إلى 100 رد؛ ولا يجلب تلقائيًا كل صفحات الردود. في دفعة تصل إلى 20 معرّفًا، ينطبق حد 100 رد بشكل منفصل على كل إدخال في results. قد تكون الأعداد الفعلية أقل.

يمثل total في كل إدخال عدد الردود المُعادة في ذلك الإدخال، وليس العدد الكامل لردود المنشور. للمتابعة، استخدم next_cursor لذلك الإدخال وأرسل فقط معرّف المنشور المفرد الخاص به في الطلب التالي. لا يوجد معامل limit لزيادة الحد الأقصى لكل طلب.

الترقيم والتحكم في التكلفة

يعدّ total المصفوفة المقابلة في الاستجابة الحالية: المنشورات ذات المستوى الأعلى في استعلامات المنشورات، أو الردود داخل كل إدخال نتيجة في استعلامات الردود. وهو ليس عدد المطابقات العالمي، ولا العدد الكامل لردود منشور، ولا العدد النهائي القابل للفوترة.

  1. أرسل الطلب الأول بدون cursor.
  2. اقرأ has_next وnext_cursor من الاستجابة. بالنسبة للردود، اقرأهما في كل إدخال نتيجة.
  3. إذا كانت هناك صفحة أخرى وكان المؤشر غير فارغ، فأرسله كما هو مع الاستعلام نفسه. بالنسبة لدفعة ردود، واصل كل منشور على حدة.
  4. توقّف عندما لا توجد صفحة تالية، أو عندما يتكرر مؤشر، أو عندما تصل إلى حد الصفحة أو الإنفاق الخاص بك.

تعكس بيانات ترقيم الصفحات آخر استجابة أصلية؛ وقد تُقتطع المجموعة المُعادة عند حد أقصى للنتائج. حتى has_next=false ليس ضمانًا بأن كل سجل X أو الردود قد استُرجعت. اعرض العدد الفعلي المُعاد بدلًا من وسم مجموعة نتائج محدودة على أنها كل البيانات المتاحة.

يمكن أن تُفْرض رسوم على كل صفحة ناجحة. تُفوتر هذه العمليات الخمس حسب النتائج المُعادة، وليس برسم ثابت لكل طلب. يمكن للردود المتداخلة والسجلات الأخرى المُعادة أن تؤثر في العدد المُفوتر؛ لا تقدّر التكلفة اعتمادًا على طول المصفوفة ذات المستوى الأعلى فقط. تحقّق من الأسعار الحالية والاستخدام في وحدة التحكم. توجد الحقول الكاملة للكائنات في مخطط OpenAPI.

هل تحتاج إلى مساعدة؟