# پست‌های کاربر X در Felo

POST /api/v1/data/x/user/tweets

عملیات مناسب برای داده‌ای را که نیاز دارید انتخاب کنید. هر پنج پایان‌نقطه از POST استفاده می‌کنند و JSON را در ریشه برمی‌گردانند، بدون یک پوشش مشترک `data`.

تمام نمونه‌ها از `FELO_API_KEY` از [نمای کلی](https://openapi.felo.ai/fa/docs/data-api/guides/felo-overview.md) استفاده می‌کنند. تماس‌ها از **موجودی پلتفرم** استفاده می‌کنند، نه اعتبارات Felo Pro. نمونه‌های پاسخ صرفاً نمایشی هستند؛ محتوای زنده و فیلدهای اختیاری متفاوت‌اند.





## 3. دریافت تایم‌لاین کاربر

`POST /api/v1/data/x/user/tweets`

| فیلد | نوع | الزامی | معنا |
|---|---|---|---|
| `username` | string | یک شناسه لازم است | هندل کاربر، تا 100 نویسه |
| `x_user_id` | string | یک شناسه لازم است | شناسه کاربر، تا 100 نویسه؛ بر `username` اولویت دارد |
| `limit` | integer | خیر | 1 تا 1,000؛ پیاده‌سازی فعلی حداقل 20 را استفاده می‌کند، با پیش‌فرض 20 |
| `cursor` | string | خیر | نشانگر صفحه‌بندی، تا 4,000 نویسه |
| `include_replies` | boolean | خیر | پاسخ‌های تودرتو را شامل شود؛ پیش‌فرض `false` |

```bash
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 ثانیه تمام شود.

گردآوری همچنین وقتی هدف برآورده شود، صفحه بعدی بالادست وجود نداشته باشد، یک صفحه خالی باشد، یا cursor موجود نباشد متوقف می‌شود. بنابراین یک پاسخ موفق ممکن است کمتر از `limit` پست داشته باشد. در صورت وجود، از `has_next` و `next_cursor` برای ادامه استفاده کنید.

با `include_replies=true`، هر پست بازگردانده‌شده تا 5 صفحه اضافی و حداکثر 100 پاسخ تودرتو دریافت می‌کند. گردآوری می‌تواند زودتر متوقف شود وقتی صفحه بعدی وجود نداشته باشد، صفحه‌ای خالی باشد، یا cursor نتواند پیش برود. این پاسخ‌های تودرتو خارج از `limit` و `total` سطح بالا هستند، اما می‌توانند نتایج قابل‌صورتحساب را افزایش دهند.

`replies` تودرتو یک بایگانی کامل پاسخ‌ها نیست و یک cursor ادامه‌دهنده جداگانه برای این گردآوری اضافی در اختیار نمی‌گذارد. برای صفحه‌بندی مستقل پاسخ‌ها، از عملیات Read replies و cursor بازگردانده‌شده آن استفاده کنید. از cursor پست سطح بالا برای پاسخ‌ها استفاده نکنید.



## صفحه‌بندی و کنترل هزینه

`total` آرایه متناظر را در پاسخ فعلی می‌شمارد: پست‌های سطح بالا برای پرس‌وجوهای پست، یا پاسخ‌ها درون هر ورودی نتیجه برای پرس‌وجوهای پاسخ. این یک شمارش جهانیِ تطابق‌ها، تعداد کامل پاسخ‌های یک پست، یا شمارش نهایی قابل‌صورتحساب نیست.

1. درخواست اول را بدون `cursor` بفرستید.
2. `has_next` و `next_cursor` را از پاسخ بخوانید. برای پاسخ‌ها، آن‌ها را روی هر ورودی نتیجه بخوانید.
3. اگر صفحه دیگری وجود دارد و cursor خالی نیست، همان را بدون تغییر با همان پرس‌وجو بفرستید. برای یک دسته پاسخ، هر پست را جداگانه ادامه دهید.
4. وقتی صفحه بعدی وجود ندارد، وقتی cursor تکرار می‌شود، یا وقتی سقف صفحه یا هزینه خودتان به پایان می‌رسد، متوقف شوید.

فراداده صفحه‌بندی نشان‌دهنده آخرین پاسخ بالادستی است؛ مجموعه بازگردانده‌شده می‌تواند در یک سقف نتیجه کوتاه شود. حتی `has_next=false` نیز تضمین نمی‌کند که تمام تاریخچه X یا پاسخ‌ها بازیابی شده‌اند. به‌جای برچسب‌زدن یک مجموعه نتیجه محدود به‌عنوان همه داده‌های موجود، شمارش واقعی بازگردانده‌شده را نمایش دهید.

هر صفحه موفق می‌تواند هزینه‌ای در پی داشته باشد. این پنج عملیات بر اساس نتایج بازگردانده‌شده صورتحساب می‌شوند، نه یک هزینه ثابت برای هر درخواست. پاسخ‌های تودرتو و سایر رکوردهای بازگردانده‌شده می‌توانند روی شمارش صورتحساب اثر بگذارند؛ هزینه را فقط بر اساس طول آرایه سطح بالا تخمین نزنید. [قیمت‌های فعلی](https://openapi.felo.ai/api/v1/data/prices) و استفاده در کنسول را بررسی کنید. فیلدهای کامل شیء در [اسکیما OpenAPI](https://openapi.felo.ai/api/v1/data/openapi.json) موجود است.
