> ## 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.

# Первый запрос

> Получите статистику сервера, проверьте состояние отчёта и подготовьте интеграцию.

Для работы с API нужен HTTP-клиент. Регистрация, API-ключ и заголовок `Authorization` не требуются.

```text Базовый адрес theme={null}
https://stats.kalenich.sbs
```

**1. Запросите статистику сервера**

Передайте номер сервера в `server`. Например, `02` и `2` выбирают один и тот же сервер.

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

Если убрать `month`, API вернёт текущий месяц по Москве. Если убрать `server`, ответ будет содержать весь доступный каталог в массиве `servers`.

**2. Проверьте отчёт**

Сначала убедитесь, что HTTP-запрос завершился успешно, затем проверьте `server.status`.

Сокращённый пример успешного ответа; значения зависят от момента сбора:

```json theme={null}
{
  "month": "2026-10",
  "timezone": "Europe/Moscow",
  "refreshMinutes": 60,
  "server": {
    "number": 2,
    "name": "Tucson",
    "guildId": "599706379296440320",
    "totalMessages": 31979,
    "generatedAt": "2026-10-18T16:14:11.541Z",
    "status": "ok",
    "error": null
  }
}
```

При `status: "ok"` доступен актуальный отчёт. При другом статусе покажите состояние данных пользователю. `totalMessages: null` нельзя заменять нулём.

**3. Выберите период**

Для отдельного дня передайте `period=day` и `date`. Для семи дней используйте `period=week`: `date` задаёт последний день периода включительно.

```bash Статистика за день theme={null}
curl --get 'https://stats.kalenich.sbs/api/discord-statistics' \
  --data-urlencode 'server=02' \
  --data-urlencode 'period=day' \
  --data-urlencode 'date=2026-10-17'
```

Месячные и дневные отчёты хранятся отдельно. Наличие месячного отчёта не гарантирует наличие данных за каждый день этого месяца.

## Пример на JavaScript

Запустите код в Node.js с поддержкой `fetch`. Для приложения на другом домене выполняйте его на сервере.

```javascript 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(`Kalenich Stats: HTTP ${response.status}`);
}

const { server } = await response.json();
if (server.status === 'ok' && server.totalMessages !== null) {
  console.log(`${server.name}: ${server.totalMessages} сообщений`);
} else {
  console.log(`${server.name}: отчёт ${server.status}`);
}
```

> [!WARNING]
>
> Ответ `200 OK` подтверждает успешное выполнение запроса. Сам отчёт при этом может быть ещё не собран, устареть или содержать ошибку сбора. Его состояние передаётся в `status`.

## Подготовьте интеграцию

* Храните `guildId` и ID каналов строками, чтобы не потерять точность в JavaScript.
* Учитывайте `complete`, если показываете общий итог или рейтинг.
* Переиспользуйте полученные данные между пользователями вашего приложения и не опрашивайте API без необходимости.
* Ориентируйтесь на `generatedAt` и `refreshMinutes`; пауза между проходами не является гарантией времени обновления каждого отчёта.

> **[Все параметры статистики](/kalenich-stats/statistics.md)**
>
> Фильтр сервера, четыре периода и варианты ответа.

> **[Готовые примеры кода](/kalenich-stats/examples.md)**
>
> Обработка ошибок, полный каталог и рейтинг актуальных отчётов.


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