Reddit App API
UK

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

Побудуйте перший запит навколо запитання читача

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

Перший запит

Надсилайте запит із сервера та зберігайте 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 і за потреби давайте людині самостійно обрати повтор. Робота з ключами й балансом належить оператору, а не мандрівникові.

Перетворіть відповідь на чесний екран читання

Екрануйте текст записів перед відображенням. Зберігайте ідентичність джерела й посилання, коли воно є, позначайте відсутні дати як невідомі та розрізняйте час створення запису й час його отримання застосунком. Батьківські ідентифікатори та ідентифікатори обговорення можуть допомогти локальному групуванню, але не відновлюють відсутніх предків.

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