Для AI-агентов: markdown этой страницы — /docs-content/openlines/sessions.md индекс документации — /llms.txt

Список сессий

⚠️ Метод выходит в обновлении imopenlines 26.700.0 и доступен пока не на всех порталах Битрикс24. Если обновление на ваш портал ещё не пришло, API вернёт 422 METHOD_NOT_YET_AVAILABLE — это признак того, что метод на портале ещё не выпущен, а не ошибка интеграции.

POST /v1/openlines/sessions/search

Список сессий Открытых линий с фильтрами и пагинацией — основной метод для детализированных отчётов и выгрузки в внешние системы аналитики. Пустое тело {} вернёт первую страницу всех видимых сессий.

Поля запроса (body)

Поле Тип Обяз. Описание
configId number нет Идентификатор линии. Источник: GET /v1/openline-configs
configIdList number[] нет Список линий
operatorId number нет Идентификатор оператора. Источник: GET /v1/users
operatorIdList number[] нет Список операторов
source string нет Код канала (connector id)
sourceList string[] нет Список кодов каналов
status string нет Статус сессии: new / answered / closed / spam / paused
closeReason string нет Причина закрытия: operator / auto / spam / client / replyLimit
dateCreateFrom string нет Начало периода создания, ISO 8601. Период dateCreateFrom..dateCreateTo — не больше 1 года
dateCreateTo string нет Конец периода создания, ISO 8601
dateCloseFrom string нет Начало периода закрытия, ISO 8601
dateCloseTo string нет Конец периода закрытия, ISO 8601
vote string нет Клиентская оценка: like / dislike / none / any
hasVoteHead boolean нет Есть ли оценка руководителя. Принимает true/false и Y/N
kpiFirstAnswer boolean нет Уложились ли в SLA первого ответа. Требует ограниченного периода (dateCreateFrom+dateCreateTo либо dateCloseFrom+dateCloseTo)
hasCrm boolean нет Есть ли привязка к CRM
waitAnswerFrom number нет Мин. время до первого ответа, секунды
waitAnswerTo number нет Макс. время до первого ответа, секунды
waitCloseFrom number нет Мин. время до закрытия, секунды
waitCloseTo number нет Макс. время до закрытия, секунды
order string нет Поле сортировки: dateCreate / dateClose / waitAnswer / waitClose (по умолчанию dateCreate)
orderDirection string нет Направление: asc / desc (по умолчанию desc)
limit number нет Размер страницы, 1..200 (по умолчанию 50)
offset number нет Смещение для пагинации (по умолчанию 0)

Фильтры status и closeReason взаимоисключающи: closeReason уже подразумевает закрытую сессию. Фильтр hasVoteHead применяется только к линиям, где у пользователя есть право на оценку руководителя.

Фильтра по типу CRM-сущности нет — по CRM доступен только булев hasCrm (есть привязка или нет). Если нужен отбор по конкретному типу, фильтруйте на своей стороне по полям crmEntityType / crmEntityId из ответа.

Примеры

curl — личный ключ

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/sessions/search" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "configId": 3,
    "status": "closed",
    "dateCreateFrom": "2026-06-01T00:00:00+03:00",
    "dateCreateTo": "2026-06-30T23:59:59+03:00",
    "limit": 50
  }'

curl — OAuth-приложение

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/sessions/search" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "configId": 3,
    "status": "closed",
    "dateCreateFrom": "2026-06-01T00:00:00+03:00",
    "dateCreateTo": "2026-06-30T23:59:59+03:00",
    "limit": 50
  }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/sessions/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    configId: 3,
    status: 'closed',
    dateCreateFrom: '2026-06-01T00:00:00+03:00',
    dateCreateTo: '2026-06-30T23:59:59+03:00',
    limit: 50,
  }),
})
const { data } = await res.json()

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/sessions/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    configId: 3,
    status: 'closed',
    dateCreateFrom: '2026-06-01T00:00:00+03:00',
    dateCreateTo: '2026-06-30T23:59:59+03:00',
    limit: 50,
  }),
})
const { data } = await res.json()

Поля ответа

Ответ — { "success": true, "data": { "sessions": [...], "hasNextPage": bool } }.

Ключ Описание
sessions[].id Идентификатор сессии
sessions[].configId Идентификатор линии
sessions[].source Код канала
sessions[].operatorId Идентификатор оператора, завершившего сессию
sessions[].userId / userCode Клиент: внутренний id и внешний код
sessions[].chatId Идентификатор IM-чата сессии
sessions[].dateCreate / dateClose Создание и закрытие сессии, ISO 8601
sessions[].dateFirstAnswer / dateOperatorAnswer Дата первого ответа и дата, когда оператор начал работу с сессией — это разные моменты, ISO 8601
sessions[].status / closeReason Статус и причина закрытия
sessions[].vote Клиентская оценка (like / dislike / none)
sessions[].voteHead / commentHead Оценка и комментарий руководителя (null, если нет права)
sessions[].crmEntityType / crmEntityId Привязка к CRM (null, если нет права чтения связанной сущности)
sessions[].queueTransfers Число переназначений в очереди
sessions[].waitAnswer / waitClose Время до первого ответа и до закрытия, секунды. Это самостоятельные хранимые метрики — не вычисляйте их из дат выше, значения могут не совпасть
sessions[].kpiFirstAnswer Уложились ли в SLA первого ответа
sessions[].messageCount Число сообщений в сессии
hasNextPage Есть ли следующая страница (поле конверта data, не элемента)

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

JSON
{
  "success": true,
  "data": {
    "sessions": [
      {
        "id": 1024,
        "configId": 3,
        "source": "livechat",
        "operatorId": 42,
        "userId": 501,
        "userCode": "site_visitor_88a1",
        "chatId": 2048,
        "dateCreate": "2026-06-15T14:30:00+03:00",
        "dateClose": "2026-06-15T14:52:10+03:00",
        "dateFirstAnswer": "2026-06-15T14:31:05+03:00",
        "dateOperatorAnswer": "2026-06-15T14:50:00+03:00",
        "status": "closed",
        "closeReason": "operator",
        "vote": "like",
        "voteHead": 5,
        "commentHead": "Отличная работа",
        "crmEntityType": "deal",
        "crmEntityId": 771,
        "queueTransfers": 1,
        "waitAnswer": 65,
        "waitClose": 1330,
        "kpiFirstAnswer": true,
        "messageCount": 14
      }
    ],
    "hasNextPage": false
  }
}

Пример ответа при ошибке

422 — период превышен:

JSON
{
  "success": false,
  "error": { "code": "BITRIX_ERROR", "message": "The requested period exceeds the maximum of 1 year", "b24Code": "PERIOD_TOO_LARGE" }
}

Ошибки

HTTP Код Когда
403 B24_TARIFF_RESTRICTION Тариф не включает статистику Открытых линий (report_open_lines)
400 INVALID_PARAMS Тело запроса не объект
422 BITRIX_ERROR (error.b24Code: PERIOD_TOO_LARGE) Период создания/закрытия превышает 1 год
422 BITRIX_ERROR (error.b24Code: OFFSET_TOO_LARGE) offset превышает максимум — сузьте период или фильтры
422 BITRIX_ERROR (error.b24Code: INVALID_FILTER) Недопустимое значение фильтра, одновременно переданы status и closeReason, либо kpiFirstAnswer без ограниченного периода
422 METHOD_NOT_YET_AVAILABLE Обновление imopenlines 26.700.0 ещё не приехало на портал

Пагинация без дрейфа страниц

Метод листается через offset/limit. При постраничной выгрузке фиксируйте верхнюю границу периода — dateCreateTo равным моменту старта выгрузки. Без фиксированной границы новые сессии, пришедшие во время листания, сдвигают страницы, и записи на стыках могут повториться или пропасть.

Полный список системных кодов — Ошибки API.

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