Поиск постов Felo X
Поставщик: Felo · Оплачивается балансом платформы
Выберите операцию для нужных вам данных. Все пять конечных точек используют POST и возвращают JSON в корне, без общего обертки data.
Во всех примерах используется FELO_API_KEY из обзора. Вызовы используют баланс платформы, а не кредиты 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-секунды, а не миллисекунды |
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; ответы и цитируемые/репостнутые посты могут быть вложенными. Считайте ID строками.
Ограничения количества результатов
limit — это цель, а не гарантия. Текущая реализация использует цель не менее 20: цель 20 читает одну вышестоящую страницу; большие цели автоматически выбирают до 50 страниц. Перед каждой страницей проверяется прошедшее время, и дальнейшие страницы не выбираются, когда оно превышает 60 секунд. Уже выполняющийся запрос к вышестоящему источнику все еще может занять время, поэтому это не является общим 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
}Пагинация и контроль затрат
total считает соответствующий массив в текущем ответе: посты верхнего уровня для запросов постов или ответы внутри каждой записи результата для запросов ответов. Это не глобальное число совпадений, не полный счет ответов на пост и не итоговое число для биллинга.
- Отправьте первый запрос без
cursor. - Прочитайте
has_nextиnext_cursorиз ответа. Для ответов читайте их в каждой записи результата. - Если существует следующая страница и курсор непуст, отправьте его без изменений с тем же запросом. Для пакета ответов продолжайте по каждому посту отдельно.
- Остановитесь, когда следующей страницы нет, курсор повторяется или достигнут ваш собственный предел страниц либо расходов.
Метаданные пагинации отражают последний ответ вышестоящего источника; возвращенная коллекция может быть усечена из-за ограничения по результатам. Даже has_next=false не гарантирует, что вся история X или все ответы были получены. Отображайте фактически возвращенное количество вместо того, чтобы помечать ограниченный набор результатов как все доступные данные.
За каждую успешную страницу может взиматься плата. Эти пять операций тарифицируются по возвращенным результатам, а не по фиксированной плате за запрос. Вложенные ответы и другие возвращенные записи могут влиять на число подлежащих оплате результатов; не оценивайте стоимость только по длине верхнеуровневого массива. Проверьте текущие цены и использование в консоли. Полные поля объектов находятся в схеме OpenAPI.