# Tìm kiếm bài đăng Felo X

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

Chọn thao tác cho dữ liệu bạn cần. Cả năm endpoint đều dùng POST và trả về JSON ở gốc, không có bao bọc `data` chung.

Tất cả ví dụ dùng `FELO_API_KEY` từ [tổng quan](https://openapi.felo.ai/vi/docs/data-api/guides/felo-overview.md). Các cuộc gọi sử dụng **số dư nền tảng**, không phải tín dụng Felo Pro. Các ví dụ phản hồi chỉ mang tính minh họa; nội dung thực tế và các trường tùy chọn sẽ thay đổi.





## 4. Tìm kiếm bài đăng

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

| Trường | Kiểu | Bắt buộc | Ý nghĩa |
|---|---|---|---|
| `query` | string | Có | Văn bản tìm kiếm, 1–1.000 ký tự |
| `query_type` | string | Không | `Latest` (mặc định) hoặc `Top` |
| `limit` | integer | Không | 1–1.000; cách triển khai hiện tại dùng ít nhất 20, mặc định 20 |
| `cursor` | string | Không | Con trỏ phân trang, tối đa 4.000 ký tự |
| `since_time` | integer or string | Không | Thời gian bắt đầu; dùng giây Unix để có giá trị số rõ ràng |
| `until_time` | integer or string | Không | Thời gian kết thúc; dùng giây Unix, không phải mili giây |

```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}'
```

Phản hồi chứa `tweets`, `total`, `has_next` và `next_cursor`. Đối tượng bài đăng bao gồm `id`, `content`, `author`, `created_at` và `metrics`; phản hồi và bài đăng được trích dẫn/chuyển tiếp có thể được lồng vào nhau. Hãy coi ID là chuỗi.

### Giới hạn số lượng kết quả

`limit` là mục tiêu, không phải sự bảo đảm. Cách triển khai hiện tại dùng mục tiêu ít nhất là 20: mục tiêu 20 sẽ đọc một trang upstream; mục tiêu lớn hơn tự động lấy tối đa 50 trang. Thời gian đã trôi qua được kiểm tra trước mỗi trang, và không lấy thêm trang nào sau khi vượt quá 60 giây. Một yêu cầu upstream đang xử lý vẫn có thể mất thời gian, vì vậy đây không phải là toàn bộ thời gian chờ HTTP.

Việc thu thập cũng dừng khi đạt mục tiêu, upstream không còn trang tiếp theo, một trang trống, hoặc con trỏ bị thiếu. Việc trả về ít hơn `limit` bài đăng không có nghĩa là yêu cầu thất bại hoặc rằng mọi bài đăng khớp đã được lấy. Hãy kiểm tra `has_next` và `next_cursor` trước khi tiếp tục.

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



## Phân trang và kiểm soát chi phí

`total` đếm mảng tương ứng trong phản hồi hiện tại: các bài đăng cấp cao nhất cho truy vấn bài đăng, hoặc các phản hồi trong từng mục kết quả cho truy vấn phản hồi. Nó không phải là số lượng khớp toàn cục, không phải tổng số phản hồi đầy đủ của bài đăng, cũng không phải số lượng tính phí cuối cùng.

1. Gửi yêu cầu đầu tiên không có `cursor`.
2. Đọc `has_next` và `next_cursor` từ phản hồi. Với phản hồi, đọc chúng trên từng mục kết quả.
3. Nếu còn trang khác và con trỏ không rỗng, gửi lại nguyên trạng cùng truy vấn đó. Với một lô phản hồi, tiếp tục từng bài đăng riêng biệt.
4. Dừng khi không còn trang tiếp theo, khi con trỏ lặp lại, hoặc khi giới hạn trang hay chi tiêu của bạn đã đạt.

Siêu dữ liệu phân trang phản ánh phản hồi upstream cuối cùng; bộ sưu tập trả về có thể bị cắt ở một giới hạn kết quả. Ngay cả `has_next=false` cũng không đảm bảo rằng toàn bộ lịch sử X hoặc phản hồi đã được lấy. Hiển thị số lượng thực tế trả về thay vì gắn nhãn một tập kết quả có giới hạn là toàn bộ dữ liệu có sẵn.

Mỗi trang thành công có thể phát sinh phí. Năm thao tác này được tính phí theo kết quả trả về, không phải phí cố định theo yêu cầu. Phản hồi lồng nhau và các bản ghi khác được trả về có thể ảnh hưởng đến số lượng bị tính phí; đừng ước tính chi phí chỉ dựa trên độ dài mảng cấp cao nhất. Kiểm tra [giá hiện tại](https://openapi.felo.ai/api/v1/data/prices) và mức sử dụng trong console. Các trường đối tượng đầy đủ có trong [lược đồ OpenAPI](https://openapi.felo.ai/api/v1/data/openapi.json).
