> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arzguard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Получить статистику

> Счётчики сообщений по серверам и каналам за месяц, день, семь дней или диапазон дат.

Получите сохранённый отчёт одного сервера или всего каталога. Метод публичный, авторизация не требуется. Тело запроса не используется.

```http theme={null}
GET https://stats.kalenich.sbs/api/discord-statistics
```

> [!NOTE]
>
> Метод читает готовые отчёты и не запускает сбор. Проверяйте состояние каждого отчёта по `status`, а полноту общей выборки — по `complete`.

## Параметры запроса

**period** `string` (default: month)

Режим выборки: `month`, `day`, `week` или `range`. Если параметр не передан, используется месяц.

**month** `string`

Месяц в формате `YYYY-MM` от `2015-01` до `2099-12`. Используется только с `period=month`. По умолчанию — текущий месяц по Москве. Корректный месяц не гарантирует наличие отчёта.

**date** `string`

Дата `YYYY-MM-DD` для `day` или последний день семидневного периода для `week`. По умолчанию — сегодня по Москве. Оба конца недели включены.

**from** `string`

Первый день диапазона, `YYYY-MM-DD`. Обязателен при `period=range`. Включается в результат.

**to** `string`

Последний день диапазона, `YYYY-MM-DD`. Обязателен при `period=range`. Включается в результат. Диапазон должен содержать от 1 до 31 календарного дня.

**server** `string`

Номер сервера из каталога (`2` или `02`) либо полный Discord ID. Допускаются от 1 до 20 цифр. Если параметр не указан, возвращаются все серверы. Переданное пустое значение считается ошибкой.

> [!WARNING]
>
> Передавайте только параметры выбранного периода: `month` для месяца, `date` для дня или недели, `from` и `to` для диапазона. Несовместимые сочетания возвращают `400 invalid_parameters`.

## Выбор периода

| Задача | Query string |
| - | - |
| Текущий месяц, все серверы | Без параметров |
| Октябрь 2026, сервер № 02 | `?server=02&month=2026-10` |
| Сегодня, сервер № 02 | `?server=02&period=day` |
| 17 октября 2026 | `?server=02&period=day&date=2026-10-17` |
| Семь дней, заканчивающихся 17 октября | `?server=02&period=week&date=2026-10-17` |
| С 16 по 17 октября включительно | `?server=02&period=range&from=2026-10-16&to=2026-10-17` |

Подробнее о московском времени, границах суток и доступности истории — в разделе [«Периоды и даты»](/kalenich-stats/periods).

## Ответ

При переданном `server` результат находится в объекте `server`. Без фильтра возвращаются массив `servers` и сводные поля.

| Поле | Тип | Значение |
| - | - | - |
| `month` | string | Выбранный месяц. Присутствует только в месячном ответе |
| `period` | string | `day`, `week` или `range`. Для месячного ответа отсутствует |
| `from`, `to` | string | Первая и последняя включённые даты для дневных периодов |
| `start`, `endExclusive` | string | Временные границы ISO 8601: начало включительно, конец исключительно; для дневных периодов |
| `timezone` | string | Часовой пояс расчёта: `Europe/Moscow` |
| `refreshMinutes` | number | Пауза между проходами сборщика в минутах |
| `server` | object | Отчёт выбранного сервера; только при фильтре `server` |
| `servers` | object\[] | Отчёты всех серверов по возрастанию номера; без фильтра `server` |
| `totalServers` | number | Число настроенных серверов; только в общем ответе |
| `readyServers` | number | Число серверов со статусом `ok`; только в общем ответе |
| `totalMessages` | number | Сумма сообщений только по серверам со статусом `ok`; только в общем ответе |
| `complete` | boolean | У всех ли серверов есть актуальный отчёт; только в общем ответе |

Полная схема объекта сервера, каналов и всех статусов приведена в разделе [«Данные и статусы»](/kalenich-stats/data-and-statuses).

> [!TIP]
>
> Чтобы получить номера, названия и Discord ID, запросите общий список и прочитайте `servers`. Не фиксируйте состав каталога в коде: он может меняться.

## HTTP-ответы

| Код | Когда возвращается |
| - | - |
| `200` | Запрос выполнен, в том числе если отдельный отчёт недоступен или устарел |
| `400` | Некорректный параметр или сочетание параметров |
| `404` | Сервер не найден |
| `405` | Использован метод, отличный от `GET` или `HEAD` |
| `500` | Внутренняя ошибка приложения |

Прокси может вернуть `429` или `5xx` с телом другого формата. Все коды приложения и рекомендации по обработке — в разделе [«Ошибки API»](/kalenich-stats/errors).

```bash cURL theme={null}
curl --get 'https://stats.kalenich.sbs/api/discord-statistics' \
  --data-urlencode 'server=02' \
  --data-urlencode 'month=2026-10'
```

```javascript JavaScript (Node.js) theme={null}
const url = new URL('https://stats.kalenich.sbs/api/discord-statistics');
url.search = new URLSearchParams({ server: '02', month: '2026-10' });
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
```

```json 200 — пример месячного отчёта theme={null}
{
  "month": "2026-10",
  "timezone": "Europe/Moscow",
  "refreshMinutes": 60,
  "server": {
    "number": 2,
    "name": "Tucson",
    "guildId": "599706379296440320",
    "iconUrl": "https://cdn.discordapp.com/icons/599706379296440320/12fa55816eb96d4e2b76f952c70f61e0.png?size=256",
    "bannerUrl": "https://cdn.discordapp.com/banners/599706379296440320/b0409e748a3df8b54685d01d5f9534c4.png?size=1024",
    "totalMessages": 31979,
    "channels": [
      {
        "id": "1438627340656836688",
        "name": "『🌄』общий-чат",
        "messages": 31979
      }
    ],
    "generatedAt": "2026-10-18T16:14:11.541Z",
    "status": "ok",
    "error": null
  }
}
```

```json 400 — несовместимые параметры theme={null}
{
  "error": "invalid_parameters"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.