Reddit App API
RU

ГлавнаяДокументация

Постройте первый запрос вокруг вопроса читателя

Используйте серверный ключ, документированные фильтры и ограниченную пагинацию, чтобы добавить чтение исторических обсуждений без раскрытия учётных данных и преувеличения результатов.

Первый запрос

Отправляйте запрос с сервера и храните API-ключ в секрете.

cURL · Ваш сервер
: "${REDDITAPP_API_KEY:?Set REDDITAPP_API_KEY on your server}"
curl --get --fail-with-body 'https://api.redditapp.com/v1/search' \
  -H "Authorization: Bearer ${REDDITAPP_API_KEY}" \
  --data-urlencode 'q=offline maps' \
  --data-urlencode 'subreddit=hiking' \
  --data-urlencode 'limit=3'

Справочник API

↔ Прокрутите таблицу по горизонтали

Маршруты API

МетодМаршрутПараметры
GET/v1/searchq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/postsq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/commentsq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/itemid
GET/v1/subredditsprefix, limit
GET/v1/status—
Дополнительные замечания
API
GET/v1/search · /v1/posts · /v1/comments · /v1/item · /v1/subreddits · /v1/status
q · subreddit · author · kindkind: post | comment
from · toYYYY-MM-DD
min_scorescore ≥ min_score
limit · page1…100 · 1…100
/v1/itemid
/v1/subredditsprefix · limit
_doc≠ date · ≠ relevance · ≠ score
pagination.relationeq · gte · unknown
paginationhas_more · window_exhausted · truncated
1 credit$0.001
$11000 credits
$5050000 credits
400 · 401 · 402 · 429 · 502HTTP

Поместите свой бэкенд между приложением и архивом

В иллюстративном туристическом приложении мобильный или веб-клиент отправляет фразу offline maps вашему бэкенду. Бэкенд проверяет запрос, применяет ограничения приложения и обращается к архиву с сохранённым ключом сервиса. Возвращайте только поля, нужные экрану чтения. Пример — отправная точка проектирования, а не утверждение, что этот аккаунт уже получил записи о походах.

Используйте GET https://api.redditapp.com/v1/search?q=offline%20maps&subreddit=hiking&limit=3&page=1. Передавайте с бэкенда заголовок X-API-Key: YOUR_SAVED_KEY либо Authorization: Bearer YOUR_SAVED_KEY. Не помещайте учётные данные в URL, клиентские сборки или публичные журналы. Сессионная cookie страницы аккаунта не заменяет аутентификацию запросов данных.

Выбирайте фильтры, которые сервис действительно принимает

Поиск принимает q, subreddit, author, kind, from, to, min_score, limit и page. q использует сопоставление AND по title и text; это не обещание поиска точной фразы или семантического совпадения. kind принимает post или comment. Subreddit и author — точные фильтры полей. min_score отбирает записи, но не сортирует их.

Задавайте from и to датами YYYY-MM-DD в UTC. Дата to включает весь соответствующий день UTC. Например, from=2025-01-01 и to=2025-12-31 определяют диапазон дат, не запрашивая сортировку по времени. Не передавайте строки ISO с датой и временем, произвольный DSL запросов, параметр sort или фильтры parent_id/link_id. Неподдерживаемые параметры отклоняются.

Выберите эндпоинт под задачу

GET /v1/posts и GET /v1/comments ограничивают вид записи и принимают поисковые фильтры; id им не требуется. GET /v1/item?id=RECORD_ID ищет доступную запись по её идентификатору. GET /v1/subreddits?prefix=hik&limit=3 возвращает ограниченную агрегацию сабреддитов; её счётчики не гарантируют глобально точных значений.

GET /v1/status открыт без ключа и не тарифицируется. Он возвращает статическое пояснение об историческом архиве и показывает, что HTTP-обработчик отвечает. Он не обращается к поисковому бэкенду, не устанавливает охват содержимого и не измеряет работоспособность архива. Ни один из этих эндпоинтов не предоставляет публикацию, голосование, сообщения, закладки аккаунта или полное дерево беседы.

Разберитесь в полях пагинации перед добавлением «Показать ещё»

Ответы на запросы данных содержат data, pagination и credits. Записи в data — плоские объекты исходного источника; выбранные title, author, дата или permalink могут отсутствовать. Архив использует порядок _doc, а не хронологическую сортировку, релевантность или оценку. Локальная сортировка меняет порядок загруженного подмножества, но не делает его глобально самым новым или высокооценённым.

Увеличивая pagination.page, сохраняйте те же фильтры и limit. pagination.has_more использует дополнительную запись для проверки продолжения, когда она доступна. Если значение false, не предлагайте автоматический следующий запрос. pagination.window_exhausted обозначает последнюю страницу ограниченного окна; достижение этой границы не доказывает, что получен весь подходящий материал архива.

Допускаются 1–100 записей и страницы 1–100. Читайте pagination.total вместе с pagination.relation: eq означает точное значение в рамках правил подсчёта ответа, gte — нижнюю границу, unknown — отсутствие надёжного общего количества, которое может быть null. Пустая страница после первой не доказывает общий итог. На полной странице 100 при limit=100 нет места для дополнительной проверочной записи, поэтому итог — нижняя граница; на границе страниц has_more равен false. Для агрегации сабреддитов общее количество неизвестно, а pagination.truncated отмечает пропущенные группы агрегации.

Явно обрабатывайте оплату и неудачные запросы

Успешный запрос данных стоит один кредит, в том числе при пустом массиве data. Проверяйте ввод до отправки и не загружайте страницы только ради анимации индикатора. HTTP 400 означает неверный ввод; 401 — отсутствующий или недействительный ключ сервиса; 402 — недостаток кредитов; 429 — ограничение частоты. Такие отклонённые запросы не резервируют кредит на получение данных.

Неудачный запрос к вышестоящему сервису возвращает HTTP 502 и освобождает зарезервированный кредит либо сообщает об ожидающей сверке возврата. Если ответ потерян на границе вашего приложения, исход остаётся неизвестным; не считайте запрос бесплатным. Сохраняйте состояние поиска, соблюдайте Retry-After и при необходимости давайте пользователю самому выбрать повтор. Работа с ключами и балансом принадлежит оператору, а не туристу.

Превратите ответ в честный экран чтения

Экранируйте текст записей перед выводом. Сохраняйте идентичность источника и ссылку, если она есть, обозначайте отсутствующую дату как неизвестную и различайте время создания записи и время её получения приложением. Идентификаторы родителя и обсуждения могут поддержать локальную группировку, если присутствуют, но не восполняют отсутствующих предков.

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