Обрабатывайте архивные страницы пакетно, без живого потока

Получить API-ключ

Пример запроса

cURL

curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2"

Отдельные исторические запросы вместо доставки событий

Reddit Stream API предоставляет чтение независимого исторического архива Reddit. Это не официальный сервис Reddit, он не связан с платформой. Stream в названии не означает доставку событий в реальном времени: API возвращает отдельные ответы GET, а не SSE-соединение, подписку WebSocket или ленту уведомлений. Повтор запроса — новое чтение архива, не способ подписаться на текущую активность Reddit.

Планируйте пакетное задание вокруг явных фильтров и ограниченных номеров страниц. Внутренний порядок _doc не является хронологией, релевантностью или оценкой, повторные запросы не гарантируют тех же записей и последовательности. Номер страницы — не стабильное смещение в потоке событий. Сохранение локального прогресса организует вашу обработку, но не создаёт фиксированного снимка и не доказывает отсутствия пропусков или повторов.

Ответы содержат плоские записи, без собранных сервером деревьев обсуждений. Присутствующие parent_id и link_id позволяют связывать полученные данные локально, но не гарантируют полной беседы или цепочки родителей. Отсутствующие поля и неразрешённые ссылки должны оставаться видимыми в вашей обработке. Архив также не гарантирует дат покрытия, постоянной доступности и расписания обновлений. Его историческое назначение не обещает появления новых материалов через определённый интервал.

Проверьте вторую страницу до обновления прогресса

Используйте GET https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2. subreddit=datasets ограничивает сообщество, limit=3 запрашивает не более трёх публикаций, page=2 — вторую страницу с этими параметрами. Это не получение двух страниц сразу и не обещание следующих трёх публикаций по времени. Записи datasets могут отсутствовать или быть неполными. На сервере передавайте X-API-Key: <ключ> либо Authorization: Bearer <ключ>; оба варианта поддерживаются.

Синтетический фрагмент ответа, только для демонстрации: {"data":[],"pagination":{"page":2,"limit":3,"total":null,"relation":"unknown"},"credits":{"cost":1,"balance":99}}. Реальный запрос не выполнялся, баланс вымышленный. Пустая вторая страница не устанавливает итог ноль или точный размер совпавшего набора. Такой успешный пустой ответ всё равно стоит один кредит; он отличается от сетевого сбоя или отклонённого ключа.

Сохраните полученный ответ вместе с фильтрами, limit и page до отметки об обработке страницы в своём задании. Проверьте data и доступные поля до записи преобразованных строк. Локальная контрольная точка — состояние вашего приложения, не выданный сервером токен возобновления. Повторная обработка сохранённой копии не вызывает API; новое получение второй страницы оплачивается при успехе отдельно и не гарантирует идентичного результата.

Ограничьте окна, запросы и расходы

Маршруты содержимого принимают limit и page от 1 до 100, по одной странице за запрос. from и to используют YYYY-MM-DD в UTC и применяются к created_utc, а не времени поступления в архив; последний день включён полностью. Окна дат организуют историческую работу, но не доказывают полного охвата. min_score задаёт числовой порог без сортировки. Локальное упорядочение и удаление дублей не восстанавливают неполученные записи.

Каждое успешное получение стоит один кредит, включая пустые страницы и успешные повторы: $1 за 1000 запросов. Некорректные запросы не списываются; сбой источника возвращает резерв. Тайм-аут или разрыв соединения может произойти после оплаченного успеха. Новый успешный повтор стоит ещё один кредит, а ошибка собственной базы данных не отменяет списания. Различайте 400, 401, 402 и 429 и ограничивайте число попыток.

Регистрация по электронной почте и паролю показывает ключ один раз сразу после создания аккаунта, до оплаты. Пароль занимает 12–72 байта UTF-8. Условные 100 пробных кредитов зависят от общесетевой защиты от злоупотреблений. Минимальное платное пополнение $50 даёт 50000 кредитов, без подписок и срока действия купленных кредитов. До оплаты задания прочитайте документацию, цены, страницу ключа и руководство. Бесплатный /v1/status подтверждает лишь статическое описание и HTTP-ответ, не работоспособность поиска, свежесть архива или баланс.