Возвращает статистику по дням: новые диалоги и сообщения по каждому каналу, число ответов и скорость ответа по каждому сотруднику.
GET /public/analytics/chats
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
from |
строка | да | Первый день, YYYY-MM-DD |
to |
строка | да | Последний день включительно, YYYY-MM-DD. Не раньше from, период не больше 62 дней |
tz |
строка | нет | Часовой пояс IANA, по которому считаются дни и часы. По умолчанию Asia/Almaty |
dayStartHour |
число | нет | Час начала суток, 0–23. По умолчанию 0. При 6 день длится с 06:00 до 06:00 следующего дня |
channelIds |
строка | нет | Только эти каналы: ?channelIds=a&channelIds=b или ?channelIds=a,b. Если не передать, вернутся все каналы компании |
Почасовые массивы всегда идут по часам на часах, 0–23, даже если задан dayStartHour.
Ответ
200 OK.
{
"tz": "Asia/Almaty",
"dayStartHour": 0,
"generatedAt": "2026-10-17T09:30:00.000Z",
"days": [
{
"date": "2026-10-16",
"channels": [
{
"channelId": "cmf1a2b3c0000xy12ab34cd56",
"type": "WHATSAPP",
"name": "Отдел продаж",
"newContacts": 12,
"newContactsByHour": [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0],
"inbound": 148,
"outboundHuman": 131,
"outboundOther": 9,
"unansweredNew": 1,
"newContactsBought": 3,
"newContactsBoughtByHour": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}
],
"operators": [
{
"userId": "cmf8k2l3m0000xy12ab34cd56",
"name": "Иван Петров",
"answers": 42,
"medianMin": 3.5,
"avgMinUpTo2h": 7.2,
"p90Min": 28.4,
"pctWithin5Min": 61.9,
"messagesByHour": [0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 15, 9, 6, 11, 14, 10, 9, 7, 0, 0, 0, 0, 0]
}
]
}
]
}
В days есть каждый день периода, даже без данных. В каждом дне есть все каналы компании или все каналы из channelIds.
Канал за день
| Поле | Описание |
|---|---|
channelId, type, name |
Канал. type принимает значения WHATSAPP, INSTAGRAM или TELEGRAM |
newContacts |
Сколько диалогов создано в канале за день |
newContactsByHour |
То же по часам, 24 числа |
inbound |
Входящие сообщения |
outboundHuman |
Исходящие от сотрудников |
outboundOther |
Исходящие без сотрудника: workflow, автоответы, сообщения через API |
unansweredNew |
Сколько новых диалогов дня на момент запроса не получили ни одного исходящего, в том числе автоматического |
newContactsBought |
У скольких контактов из новых диалогов дня сейчас стоит тег Купил из категории Статус |
newContactsBoughtByHour |
То же по часу создания диалога |
Удалённые и системные сообщения не считаются.
Сотрудник за день
| Поле | Описание |
|---|---|
userId, name |
Сотрудник |
answers |
Сколько раз сотрудник ответил клиенту |
medianMin |
Медиана времени ответа, минуты |
avgMinUpTo2h |
Среднее время ответа без ответов дольше 2 часов, минуты |
p90Min |
90-й перцентиль времени ответа, минуты |
pctWithin5Min |
Доля ответов за 5 минут и быстрее, % |
messagesByHour |
Исходящие сообщения сотрудника по часам, 24 числа |
Дробные числа округлены до десятых. Если ответов не было, в полях времени приходит null. Сотрудники отсортированы по убыванию answers.
Как считается ответ
Обращением считается входящее сообщение, перед которым в диалоге было исходящее или не было ничего. Несколько входящих подряд считаются одним обращением, и время отсчитывается от первого. Ответом считается первое исходящее сообщение сотрудника после обращения. Сообщения workflow и автоответы ответом не считаются.
Ответ засчитывается сотруднику, который ответил, и дню, когда написал клиент. Если клиент написал вчера, а сотрудник ответил сегодня, ответ попадёт во вчерашний день. Обращения без ответа в статистику сотрудников не входят.
Ошибки
| Код | Когда |
|---|---|
| 400 | Неверный формат даты, неизвестный часовой пояс, dayStartHour вне 0–23, to раньше from, период длиннее 62 дней |
| 401 | Ключ доступа не передан или неверный |
Особенности
- Одинаковый запрос в течение 30 секунд отдаётся из памяти, поэтому данные могут отставать на это время.
- Чужие и несуществующие ID в
channelIdsпропускаются без ошибки.
Пример
curl "https://api.polygram.chat/api/public/analytics/chats?from=2026-10-01&to=2026-10-16&tz=Asia/Almaty&dayStartHour=6" \
-H "X-Api-Key: ak_..."