#Статистика звонков

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 — личный ключ

Terminal
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-приложение

Terminal
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 — личный ключ

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-приложение

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_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 Общее количество записей, соответствующих фильтру

#Пример ответа

JSON
{
  "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:

JSON
{
  "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.

Фильтр по несуществующему полю не возвращает ошибку — некорректное имя поля молча игнорируется и возвращаются все записи.

#Смотрите также