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