Skip to main content
В интеграции проверяйте два уровня: HTTP-статус запроса и состояние отчёта в JSON. Они отвечают на разные вопросы: удалось ли выполнить запрос и есть ли пригодные данные за выбранный период.

HTTP-ошибки приложения

Ошибки приложения возвращаются в JSON с полем error:
Ошибки периода относятся к /api/discord-statistics. Для /api/discord-icons используются ошибки выбора сервера и общие HTTP-ошибки.

Успешный запрос без готового отчёта

Следующие состояния передаются внутри ответа 200, а не как HTTP-ошибка:
error в корне HTTP-ошибки и server.error в отчёте имеют разный смысл. Первое описывает ошибку запроса, второе — состояние сбора или чтения данных конкретного сервера.
Полные правила обработки null, устаревших счётчиков и общих итогов — в разделе «Данные и статусы».

Ответы прокси

Прокси может вернуть 429 при превышении лимита запросов или 5xx при недоступности сервиса. Тело такого ответа не обязательно будет JSON: возможен, например, HTML или обычный текст. Для надёжной обработки:
  • Сохраняйте HTTP-статус даже тогда, когда JSON разобрать не удалось.
  • Не повторяйте неизменённые запросы с ошибками параметров 400 или отсутствующим сервером 404.
  • При сетевых сбоях, 429 и 5xx используйте ограниченное число повторов с увеличением задержки; учитывайте Retry-After, если сервер его передал.
  • Переиспользуйте результаты на своём сервере и не создавайте отдельный внешний запрос для каждого посетителя страницы.
Это рекомендации для клиента. Фиксированная квота запросов и обязательное наличие Retry-After публичной документацией сервиса не заданы.

CORS и браузер

Междоменные браузерные запросы не включены. Вызов fetch со страницы на другом домене браузер может заблокировать, хотя тот же URL успешно открывается напрямую или работает из cURL.
Выполняйте внешний запрос на своём сервере и отдавайте браузеру подготовленный результат. mode: 'no-cors' не решает задачу: содержимое ответа будет недоступно JavaScript.

Частота обновления

API возвращает сохранённые отчёты. Повторный запрос не ускоряет сбор и не гарантирует новые данные. Ориентируйтесь на refreshMinutes, generatedAt и status, избегая частого опроса без необходимости. Календарные правила и доступность архивных отчётов описаны в разделе «Периоды и даты».