Захищене читання та публічний статус
Захищене читання використовує GET на https://api.redditcollector.com з X-API-Key: <ключ> або Authorization: Bearer <ключ>. Обидва формати передають ключ архіву цього домену, не токен Reddit OAuth. Зберігайте його на сервері, не у відкритих файлах набору. Cookie Secure HttpOnly кабінету стосується окремої сесії. Реєстрація показує ключ один раз одразу, до оплати; поповнення не потрібне для його видачі.
/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 для пошуку назв спільнот, без посторінкового обходу та гарантії глобально точних лічильників. /v1/status публічний і безоплатний: статичний опис підтверджує відповідь HTTP-застосунку, не перевіряючи доступності пошуку, свіжості записів, чинності ключа чи балансу.
Часові межі та фактично доступні поля
from і to приймають YYYY-MM-DD в UTC та фільтрують created_utc, а не мить потрапляння запису до архіву. Останній день to включений повністю. Це фільтри днів, а не значення курсора з точністю до часу доби. Під час поділу роботи за датами зберігайте фактичні межі й розрізняйте час обробки завдання та створення запису. Поділ не доводить повноти отримання чи розкладу оновлення архіву.
min_score задає числовий поріг оцінки без сортування, перевірки експертності чи видалення спаму. Внутрішній порядок _doc не є хронологією, релевантністю, оцінкою чи випадковим відбором. Вищий поріг змінює отриману групу, а не підтверджує якість. Відокремлюйте власні мітки й обчислювані ознаки від вихідних полів та описуйте вилучення, які спричиняють ці рішення. Не приписуйте архіву власних висновків про придатність тексту.
Сервер повертає плоскі записи, а не зібрані сервером дерева обговорень. Клієнт може групувати записи за наявними полями parent_id та link_id локально, але це не гарантує повноти розмов. Ці поля не є фільтрами запитів і можуть указувати на недоступні записи. Відповідь містить data, pagination і credits; поля вмісту можуть бути відсутніми. Відокремлюйте власні дослідницькі коди від вихідного тексту та не заповнюйте відсутнього контексту вигаданими значеннями.
Межі сторінок, підсумки та обробка збоїв
Маршрути вмісту приймають limit і page від 1 до 100, по одній сторінці за запит. Серія звернень не гарантує 10000 різних записів або повного набору. Параметрів масового завантаження й випадкового відбору немає. Поділ дат і локальне усунення дублікатів організують роботу без доведення повного охоплення чи унікальності. Зберігайте відповіді, використані для аналізу: повторні запити не гарантують того самого входу.
Читайте pagination.total разом із relation: eq — точний підсумок запиту, gte — нижня межа, unknown — відсутність надійного підсумку, можливо null. Порожня сторінка після першої може повернути unknown, а не число нуль. Точний підсумок не доводить завантаження всіх збігів або наявності всієї історії в архіві. Зберігайте has_more та window_exhausted як ознаки меж, не токени необмеженого експорту.
HTTP 400 стосується неправильних параметрів, 401 — відсутнього або недійсного ключа, 402 — нестачі кредитів, 429 — обмеження частоти. Некоректні запити не списуються; збій джерела повертає резерв. Успішне отримання коштує один кредит, навіть порожнє й повторне. Втрата відповіді може приховувати оплачений успіх; локальна помилка не повертає його вартості. Збережіть відповідь до оновлення прогресу та враховуйте успішні повтори окремо.