#Статистика звонков
GET /v1/calls/statistics
Возвращает список записей о прошедших звонках с поддержкой фильтрации по полям, сортировки и пагинации.
#Параметры
| Параметр | Тип | По умолч. | Описание |
|---|---|---|---|
filter (query) |
object | — | Фильтрация по полям записи (UPPER_SNAKE_CASE). Поддерживаются операторы >, >=, <, <=, ! в виде префикса к имени поля. Пример: ?filter[CALL_TYPE]=1, ?filter[>CALL_START_DATE]=2026-01-01T00:00:00 |
sort (query) |
string | — | Поле для сортировки в UPPER_SNAKE_CASE. Пример: CALL_START_DATE |
order (query) |
string | — | Направление сортировки: ASC или DESC |
limit (query) |
number | 50 |
Максимальное количество записей в ответе (до 500) |
offset (query) |
number | 0 |
Смещение для пагинации |
Диапазон дат задаётся двумя операторами одновременно. Пример: filter[>CALL_START_DATE]=2026-04-01T00:00:00&filter[<CALL_START_DATE]=2026-04-30T23:59:59.
#Примеры
#curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/calls/statistics?limit=10&sort=CALL_START_DATE&order=DESC&filter[CALL_TYPE]=1" \
-H "X-Api-Key: YOUR_API_KEY"
#curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/calls/statistics?limit=10&sort=CALL_START_DATE&order=DESC&filter[CALL_TYPE]=1" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
#JavaScript — личный ключ
const params = new URLSearchParams({
limit: '10',
sort: 'CALL_START_DATE',
order: 'DESC',
'filter[CALL_TYPE]': '1',
})
const res = await fetch(`https://vibecode.bitrix24.tech/v1/calls/statistics?${params}`, {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data, total } = await res.json()
console.log(`Найдено звонков: ${total}`)
#JavaScript — OAuth-приложение
const params = new URLSearchParams({
limit: '10',
sort: 'CALL_START_DATE',
order: 'DESC',
'filter[CALL_TYPE]': '1',
})
const res = await fetch(`https://vibecode.bitrix24.tech/v1/calls/statistics?${params}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, total } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив записей о звонках |
data[].ID |
string | Внутренний идентификатор записи |
data[].PORTAL_USER_ID |
string | ID оператора. Список: `GET /v1/users` |
data[].PORTAL_NUMBER |
string | Идентификатор линии: reg<id> — арендованная линия Voximplant, sip<id> — SIP-линия, REST_APP:<id> — линия через REST-приложение |
data[].PHONE_NUMBER |
string | Номер телефона клиента |
data[].CALL_ID |
string | Идентификатор звонка. Префиксы: externalCall. — от `register`, callback. — от обратного звонка, infocall. — от автозвонка |
data[].EXTERNAL_CALL_ID |
string | null | Внешний идентификатор, переданный при регистрации |
data[].CALL_CATEGORY |
string | Категория: external для звонков через REST API |
data[].CALL_LOG |
string | null | URL детального лога Voximplant. null для звонков через REST-приложение |
data[].CALL_DURATION |
string | Длительность звонка в секундах (строка) |
data[].CALL_START_DATE |
string | Дата начала звонка, ISO 8601 с тайм-зоной портала |
data[].CALL_RECORD_URL |
string | URL аудиозаписи звонка |
data[].CALL_VOTE |
string | null | Оценка звонка от 1 до 5 |
data[].COST |
string | Стоимость звонка (десятичная строка) |
data[].COST_CURRENCY |
string | Код валюты (RUR и др.) |
data[].CALL_FAILED_CODE |
string | Код результата: 200 — успех, 603-S — отменён, 304 — пропущен, 500 — ошибка сценария, 402 — недостаточно средств, 403 — запрещено |
data[].CALL_FAILED_REASON |
string | Текстовая причина результата |
data[].CRM_ENTITY_TYPE |
string | Тип привязанной CRM-сущности: LEAD, CONTACT или пустая строка. Источник: лиды, контакты |
data[].CRM_ENTITY_ID |
string | ID привязанной CRM-сущности |
data[].CRM_ACTIVITY_ID |
string | ID CRM-активности. "0" — активность не создана |
data[].REST_APP_ID |
string | null | ID приложения-инициатора звонка |
data[].REST_APP_NAME |
string | null | Название приложения-инициатора звонка |
data[].TRANSCRIPT_ID |
string | null | ID прикреплённой транскрипции. Прикрепить: `POST /v1/calls/:callId/transcription` |
data[].TRANSCRIPT_PENDING |
string | Y — транскрипция в обработке, N — транскрипция готова или отсутствует |
data[].SESSION_ID |
string | Идентификатор сессии Voximplant |
data[].REDIAL_ATTEMPT |
string | null | Номер попытки перенабора |
data[].COMMENT |
string | null | Комментарий оператора |
data[].RECORD_DURATION |
string | null | Длительность записи разговора в секундах |
data[].RECORD_FILE_ID |
string | null | ID файла записи на Диске |
data[].CALL_TYPE |
string | Тип звонка: "1" — исходящий, "2" — входящий, "3" — входящий с перенаправлением, "4" — обратный звонок, "5" — информационный (автозвонок) |
total |
number | Общее количество записей, соответствующих фильтру |
#Пример ответа
{
"success": true,
"data": [
{
"ID": "1",
"PORTAL_USER_ID": "1",
"PORTAL_NUMBER": "reg133788",
"PHONE_NUMBER": "+79638835976",
"CALL_ID": "11018129443EB80D.1754478520.11438214",
"EXTERNAL_CALL_ID": null,
"CALL_CATEGORY": "external",
"CALL_LOG": "https://storage-gw-ru-02.voximplant.com/voximplant-logs/2025/08/06/...",
"CALL_DURATION": "0",
"CALL_START_DATE": "2025-08-06T14:08:40+03:00",
"CALL_RECORD_URL": "",
"CALL_VOTE": null,
"COST": "0.0000",
"COST_CURRENCY": "RUR",
"CALL_FAILED_CODE": "603-S",
"CALL_FAILED_REASON": "Decline self",
"CRM_ENTITY_TYPE": "CONTACT",
"CRM_ENTITY_ID": "275",
"CRM_ACTIVITY_ID": "7739",
"REST_APP_ID": null,
"REST_APP_NAME": null,
"TRANSCRIPT_ID": null,
"TRANSCRIPT_PENDING": "N",
"SESSION_ID": "3841557776",
"REDIAL_ATTEMPT": null,
"COMMENT": null,
"RECORD_DURATION": null,
"RECORD_FILE_ID": null,
"CALL_TYPE": "1"
}
],
"total": 30
}
#Пример ответа при ошибке
403 — нет скоупа telephony:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'telephony' scope"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Неверный API-ключ |
| 401 | TOKEN_MISSING |
Ключ не имеет настроенных токенов Битрикс24 |
| 403 | SCOPE_DENIED |
Ключу не хватает скоупа telephony |
| 422 | BITRIX_ERROR |
Битрикс24 вернул ошибку (текст в error.message) |
| 429 | RATE_LIMITED |
Превышен лимит запросов |
| 502 | BITRIX_UNAVAILABLE |
Битрикс24 недоступен |
Полный список общих ошибок API — Ошибки.
#Известные особенности
total находится в корне ответа. В отличие от других list-эндпоинтов Вайбкод, поле total расположено непосредственно в корне ответа, а не в meta.total.
Фильтр по несуществующему полю не возвращает ошибку — некорректное имя поля молча игнорируется и возвращаются все записи.
#Смотрите также
- Зарегистрировать звонок — возвращает
CALL_ID, который появляется в статистике - Обратный звонок
- Автозвонок с синтезом речи
- Автозвонок с аудиофайлом
- Справочник голосов — доступные голоса для автозвонка
- Лиды, Контакты — сущности из полей
CRM_ENTITY_TYPE/CRM_ENTITY_ID - Телефония — обзор