Skip to main content
Kalenich Stats считает статистику по календарю Москвы — Europe/Moscow. Выберите период через period, а сервер — через независимый параметр server. Если server не указан, API вернёт все доступные серверы за тот же период.

Четыре режима

Если period не передан, используется month. Поэтому запрос с одним month=2026-10 остаётся корректным месячным запросом.

Месяц

Октябрь 2026 года начинается 1 октября в 00:00 по Москве включительно и заканчивается 1 ноября в 00:00 по Москве исключительно. Для текущего месяца счётчик отражает сохранённый отчёт на момент его формирования; итог месяца продолжает меняться. Параметр month принимает значения от 2015-01 до 2099-12 в формате YYYY-MM.
Допустимая дата означает, что запрос можно разобрать. Она не гарантирует наличие собранного отчёта за этот месяц.
В месячном ответе выбранный период передаётся в поле month:
Метаданные месячного ответа
Это фрагмент ответа. Значение refreshMinutes приведено как пример; используйте значение из полученного JSON.

День

Запрос выбирает весь день 17 октября по Москве: от 2026-10-17 00:00 включительно до 2026-10-18 00:00 исключительно. Без date API выберет сегодняшний день по Москве.

Последние семь дней

В этом запросе date — последний день периода включительно. Ответ охватывает 11–17 октября 2026 года. Без date период заканчивается сегодня по Москве.
week удобно использовать для семидневного среза на выбранную дату. Это не календарная неделя с понедельника по воскресенье.

Собственный диапазон

Обе даты входят в период. Запрос выше охватывает семь календарных дней — с 9 по 15 октября. Одинаковые from и to задают один день. Для range действуют три условия:
  • Указаны обе даты в формате YYYY-MM-DD, и каждая существует в календаре.
  • from не позже to.
  • Между датами не более 31 календарного дня с учётом обеих границ. Например, 1–31 октября — 31 день, а 1 октября – 1 ноября — 32 дня.
Нарушение этих условий возвращает HTTP 400 с error: "invalid_range".

Совместимость параметров

Несовместимые параметры возвращают HTTP 400 с error: "invalid_parameters". Например, не добавляйте month к дневному запросу: календарная дата уже полностью задаёт день.

Даты в ответе

Для day, week и range вместо поля month возвращаются следующие поля: Ниже — фрагмент ответа на недельный запрос с date=2026-10-17:
Метаданные семидневного периода
Суффикс Z обозначает UTC. В этом примере московская полночь соответствует 21:00 предыдущего дня в UTC. При фильтрации временных отметок используйте условие timestamp >= start && timestamp < endExclusive: оно сохраняет точные границы и не захватывает начало следующего дня.

Архив и доступность данных

Месячные и дневные отчёты хранятся отдельно. Дневная статистика, неделя и собственный диапазон собираются из дневных отчётов; месячной суммы недостаточно, чтобы восстановить отдельные дни.
Если для сервера отсутствует хотя бы один дневной отчёт внутри запрошенного периода, его totalMessages будет null. API не подменяет полный результат суммой только доступных дней.
Если все дневные отчёты есть, но хотя бы один устарел, сумма сохраняется со статусом stale. Для составного периода generatedAt содержит самое раннее время формирования входящих отчётов. Состояние данных описано на странице «Данные и статусы». Запрос API читает сохранённые отчёты и не запускает сбор. Поле refreshMinutes задаёт паузу между проходами сборщика, а сам проход также занимает время. Поэтому его значение не является гарантией, что все серверы обновляются одновременно или строго раз в указанное число минут.