# بحث منشورات Felo على X

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

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

تستخدم جميع الأمثلة `FELO_API_KEY` من [نظرة عامة](https://openapi.felo.ai/ar/docs/data-api/guides/felo-overview.md). تستخدم الاستدعاءات **رصيد المنصة**، وليس أرصدة Felo Pro. أمثلة الاستجابة توضيحية؛ ويختلف المحتوى الحي والحقول الاختيارية.





## 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 | لا | مؤشر ترقيم، حتى 4,000 حرف |
| `since_time` | integer or string | لا | وقت البدء؛ استخدم ثواني Unix لقيمة رقمية غير ملتبسة |
| `until_time` | integer or string | لا | وقت الانتهاء؛ استخدم ثواني Unix، وليس المللي ثانية |

```bash
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` قبل المتابعة.

```json
{
  "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
}
```



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

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

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

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

يمكن أن تُفْرض رسوم على كل صفحة ناجحة. تُفوتر هذه العمليات الخمس حسب النتائج المُعادة، وليس برسم ثابت لكل طلب. يمكن للردود المتداخلة والسجلات الأخرى المُعادة أن تؤثر في العدد المُفوتر؛ لا تقدّر التكلفة اعتمادًا على طول المصفوفة ذات المستوى الأعلى فقط. تحقّق من [الأسعار الحالية](https://openapi.felo.ai/api/v1/data/prices) والاستخدام في وحدة التحكم. توجد الحقول الكاملة للكائنات في [مخطط OpenAPI](https://openapi.felo.ai/api/v1/data/openapi.json).
