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