Розділяйте отримання даних і вхід до панелі
Захищені запити даних використовують GET на https://api.redditapigateway.com. Підтримуються X-API-Key: <ключ> та Authorization: Bearer <ключ> як альтернативи. Використовуйте ключ архіву цього домену, а не облікові дані Reddit OAuth. Зберігайте секрет у захищеній конфігурації сервера, виключайте його з відкритого коду, URL-адрес і діагностичних журналів. Ключ архіву не містить ролей і бюджетів користувачів вашого продукту.
Панель облікового запису на сторінці ключа використовує вхід за електронною поштою та паролем із сесійною cookie Secure HttpOnly. Це окремо від заголовка ключа для запитів застосунку. Віджет зберігає ідентифікатори рахунку та користувача в localStorage для кожного хоста, щоб відновлювати рахунок, але не справжній API-ключ. HttpOnly стосується cookie, а не localStorage. Вхід до панелі не автентифікує окремого клієнта даних.
/v1/status публічний, не оплачується та не потребує ключа. Він повертає статичний опис історичного сервісу й підтверджує відповідь HTTP-застосунку. Пошуковий рушій, наявність записів, витрати кредитів і баланс не перевіряються. Не перетворюйте таку відповідь на перевірку продуктової квоти чи гарантію готовності пошуку. Отримані дані та баланс у панелі потрібно оцінювати за відповідними джерелами, а не за публічним статусом.
Використовуйте параметри конкретного маршруту
/v1/search шукає дописи й коментарі. /v1/posts додає обмеження дописами, /v1/comments — коментарями. Усі три приймають q, subreddit, author, kind, from, to, min_score, limit і page, але не id. kind приймає post та comment; для обох типів через search не задавайте його. q — текстовий пошук, а не довільна мова запитів, визначення тональності чи власна серверна аналітика.
/v1/item?id=... потребує лише id та шукає один архівний запис, який може бути відсутній. Батьківські записи й відповіді автоматично не завантажуються. /v1/subreddits приймає лише prefix і limit для пошуку назв спільнот, без посторінкового обходу та гарантії глобально точних лічильників. prefix не є фільтром маршрутів вмісту. Жоден маршрут не приймає довільної URL-адреси Reddit для завантаження чи запиту повної розмови.
from і to потребують дат YYYY-MM-DD в UTC та фільтрують created_utc, а не час надходження до архіву; останній день to включений повністю. min_score — числовий поріг оцінки без сортування та визначення якості. Документи вмісту плоскі, поля можуть різнитися. Наявні parent_id та link_id допускають локальне групування, але не є фільтрами запиту й не підтверджують повного ланцюжка батьківських записів.
Застосовуйте межі сторінок і правила оплати
Пошук вмісту приймає limit і page від 1 до 100, по одній сторінці за запит. Результати дотримуються внутрішнього порядку _doc, не часу вставлення, хронології, релевантності чи оцінки. Локальне сортування змінює лише отриману вибірку. Поділ періодів, обхід сторінок і усунення дублікатів не доводять повного охоплення чи унікальності. Фіксована схема, незмінна відповідь і постійна доступність записів не гарантовані.
Відповідь містить data, pagination і credits. Читайте pagination.total разом із relation: eq — точний підсумок запиту, gte — нижня межа, unknown — відсутність надійного підсумку, можливо null. Точна кількість не доводить, що всі збіги завантажені або вся історія Reddit представлена. Зберігайте has_more та window_exhausted як ознаки меж. Повернений баланс не є квотою користувача чи резервом на майбутні запити.
Кожне успішне отримання коштує один кредит, навіть порожнє. Додаткові сторінки та успішні повтори оплачуються окремо. Некоректні запити не списуються; збій джерела повертає резерв. Розрив з’єднання може статися після оплаченого успіху, локальний збій обробки не повертає цього кредиту. HTTP 400 стосується параметрів, 401 — ключа, 402 — балансу, 429 — частоти. Враховуйте повтори окремо й зберігайте відповідь до просування завдання.