Тема
Are you an LLM? You can read better optimized documentation at /api\stats.md for this page in Markdown format
REST API → Статистика
GET /api/v1/bots/{id}/stats
Сводная статистика бота на текущий момент.
Scope: read
bash
curl "https://capybara.maxbotstat.ru/api/v1/bots/<botId>/stats" \
-H "X-API-Key: $MBS_KEY"Ответ
json
{
"contacts_total": 412,
"contacts_active_24h": 31,
"messages_total": 8234,
"messages_in": 4117,
"messages_out": 4117,
"messages_24h": 87,
"new_users_7d": 18,
"active_users_7d": 92
}| Поле | Описание |
|---|---|
contacts_total | всего контактов в БД |
contacts_active_24h | у скольких есть last_seen_at ≤ 24 часов назад |
messages_total | всего сообщений в обе стороны |
messages_in | входящих от пользователей |
messages_out | исходящих от бота (через прокси и API) |
messages_24h | сообщений (in+out) за последние 24 часа |
new_users_7d | контактов, у которых первое сообщение в последние 7 дней |
active_users_7d | контактов, активных в последние 7 дней, но первый раз писали раньше |
GET /api/v1/bots/{id}/stats/timeline
Помесячно/подневно — сообщения и новые контакты.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
days | int | 30 | 1–365 |
Запрос
bash
curl "https://capybara.maxbotstat.ru/api/v1/bots/<botId>/stats/timeline?days=30" \
-H "X-API-Key: $MBS_KEY"Ответ
json
{
"data": [
{ "date": "2026-04-01", "messages_in": 45, "messages_out": 50, "new_contacts": 3 },
{ "date": "2026-04-02", "messages_in": 67, "messages_out": 72, "new_contacts": 5 },
{ "date": "2026-04-03", "messages_in": 23, "messages_out": 25, "new_contacts": 1 }
],
"days": 30
}Каждый элемент data — один день. Дни с нулём активности тоже включены (0/0/0), чтобы график не «прыгал».
Использование в дэшборде
Пример: построить SVG-график «новые контакты за месяц» прямо из браузера.
html
<canvas id="chart"></canvas>
<script>
const r = await fetch('https://capybara.maxbotstat.ru/api/v1/bots/<botId>/stats/timeline?days=30', {
headers: { 'X-API-Key': 'mbs_...' },
})
const { data } = await r.json()
const labels = data.map(d => d.date)
const values = data.map(d => d.new_contacts)
// ... передайте в Chart.js / Recharts / любую другую библиотеку
</script>Не светите ключ во фронтенд
В этом примере ключ виден в браузере — это только для прототипа. В продакшне ходите за статистикой со своего бэкенда, а ключ держите в секретах сервера.
Кеш
Эндпоинт stats возвращает свежие данные без кеширования. Для тяжёлых интеграций (BigQuery, ClickHouse, BI) делайте экспорт раз в час и кешируйте результат у себя.
Пример: построить дэшборд по нескольким ботам
js
const bots = await fetch('https://capybara.maxbotstat.ru/api/v1/bots', {
headers: { 'X-API-Key': process.env.MBS_KEY },
}).then(r => r.json())
const stats = await Promise.all(
bots.data.map(b =>
fetch(`https://capybara.maxbotstat.ru/api/v1/bots/${b.id}/stats`, {
headers: { 'X-API-Key': process.env.MBS_KEY },
}).then(r => r.json()).then(s => ({ name: b.name, ...s }))
)
)
console.table(stats)