Сумісність заголовків і результати HTTP
Для захищеного читання використовуйте GET на https://api.redditapiproxy.com. Підтримуються X-API-Key: <ключ> та Authorization: Bearer <ключ> як альтернативи. Облікові дані належать цьому домену архіву, а не Reddit OAuth. Зберігайте секрет на сервері та перевіряйте побудову запиту, не розкриваючи його значення. Панель облікового запису використовує окрему cookie Secure HttpOnly; вхід до неї не автентифікує GET-запит вашого застосунку.
HTTP 400 означає неправильні або непідтримувані параметри. Перевірте маршрут і рядок запиту замість надсилання тіла JSON. HTTP 401 означає відсутній або недійсний ключ, зокрема старий, вимкнений повторним створенням. Спочатку перевірте домен і заголовок. HTTP 402 вказує на нестачу кредитів. HTTP 429 — обмеження частоти; використовуйте затримку та обмежену кількість спроб замість негайного циклу.
/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 для пошуку назв спільнот, без обходу сторінок. Лічильники не гарантовані як глобально точні. Префікс не є фільтром маршрутів вмісту, невідомий підсумок каталогу не дорівнює точному перепису всіх спільнот 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. Точна кількість не доводить завантаження всіх збігів або наявності всієї історії в архіві. Зберігайте ознаки has_more та window_exhausted для опису меж; це не курсори необмеженого експорту.
Успішне отримання коштує один кредит, включно з порожніми результатами та успішними повторами. Некоректні запити не списуються; збій джерела повертає резерв. Розрив з’єднання клієнтом може статися після оплаченого успіху, тому відсутність відповіді залишає результат невизначеним. Помилка власного обробника чи бази даних не доводить відмови джерела. Збережіть відповідь до просування локального прогресу та враховуйте успішні повтори окремо.