Для AI-агентов: markdown этой страницы — /docs-content/openlines/history.md индекс документации — /llms.txt
История сессии
Эндпоинт включается платформой Вайбкод постепенно. Пока он не включён на платформе, вызов возвращает
403 OPENLINES_HISTORY_DISABLED— это признак того, что возможность ещё не активирована, а не ошибка интеграции.
POST /v1/openlines/sessions/history
Возвращает переписку последней сессии чата Открытой линии одним ответом. Подходит для разбора обращения клиента целиком: сообщения, их авторы и приложенные файлы приходят вместе.
Поля запроса (body)
Передайте одно из двух полей.
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
ПолеchatId |
Типnumber | string | Обяз.нет | ОписаниеИдентификатор чата Открытой линии: число 2043 или строка chat2043. Источник: sessions[].chatId в ответе POST /v1/openlines/sessions/search, chatId из GET /v1/openlines/crm/chats или из события бота |
ПолеdialogId |
Типstring | Обяз.нет | ОписаниеТот же чат, только в форме chat2043. Число в этом поле отклоняется с 400 MISSING_PARAMS |
Вход только по идентификатору чата. По нему платформа берёт последнюю сессию этого чата — то есть переписку текущего диалога. Идентификатор конкретной исторической сессии на вход не принимается.
Пагинации у метода нет: переписка возвращается целиком одним ответом. Для постраничного чтения сообщений чата используйте GET /v1/chats/:dialogId/messages.
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/sessions/history" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "chatId": 2043 }'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/sessions/history" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "chatId": 2043 }'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/sessions/history', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ chatId: 2043 }),
})
const { data } = await res.json()
for (const message of data.messages) {
console.log(message.date, message.senderId, message.text)
}
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/sessions/history', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ chatId: 2043 }),
})
const { data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | Описаниеtrue при успешном запросе |
Полеdata.sessionId |
Типnumber | ОписаниеИдентификатор сессии, к которой относится переписка. Метрики сессии — POST /v1/openlines/sessions/stats |
Полеdata.chatId |
Типnumber | ОписаниеИдентификатор чата |
Полеdata.messages |
Типobject[] | ОписаниеСообщения сессии по возрастанию id |
Полеdata.messages[].id |
Типnumber | ОписаниеИдентификатор сообщения |
Полеdata.messages[].chatId |
Типnumber | ОписаниеИдентификатор чата |
Полеdata.messages[].senderId |
Типnumber | ОписаниеАвтор сообщения, 0 у системного сообщения. Данные автора — элемент data.users[] с тем же id |
Полеdata.messages[].recipientId |
Типstring | ОписаниеПолучатель — чат в форме chat<N> |
Полеdata.messages[].date |
Типstring | ОписаниеДата отправки, ISO 8601 |
Полеdata.messages[].text |
Типstring | ОписаниеТекст сообщения с разметкой BB-кодами |
Полеdata.messages[].textLegacy |
Типstring | ОписаниеТот же текст с HTML-разметкой |
Полеdata.messages[].params |
Типobject | array | null | ОписаниеДополнительные параметры сообщения. Контейнер заполняет коннектор, и его содержимое передаётся как есть, без изменений. В нём могут оказаться контактные и CRM-данные обратившегося. Сообщение без параметров несёт пустой массив [] |
Полеdata.users |
Типobject[] | ОписаниеАвторы сообщений, кроме системных |
Полеdata.users[].id |
Типnumber | ОписаниеИдентификатор пользователя |
Полеdata.users[].name |
Типstring | ОписаниеОтображаемое имя |
Полеdata.users[].firstName |
Типstring | ОписаниеИмя |
Полеdata.users[].lastName |
Типstring | ОписаниеФамилия |
Полеdata.users[].workPosition |
Типstring | null | ОписаниеДолжность |
Полеdata.users[].avatar |
Типstring | ОписаниеАдрес изображения аватара |
Полеdata.users[].gender |
Типstring | ОписаниеПол: M или F |
Полеdata.users[].extranet |
Типboolean | ОписаниеПризнак внешнего пользователя |
Полеdata.users[].connector |
Типboolean | Описаниеtrue у клиента, пришедшего через коннектор |
Полеdata.users[].type |
Типstring | ОписаниеТип пользователя, например user у сотрудника и extranet у клиента |
Полеdata.files |
Типobject[] | ОписаниеФайлы, приложенные к сообщениям |
Полеdata.files[].id |
Типnumber | ОписаниеИдентификатор файла |
Полеdata.files[].chatId |
Типnumber | ОписаниеИдентификатор чата |
Полеdata.files[].date |
Типstring | ОписаниеДата загрузки, ISO 8601 |
Полеdata.files[].type |
Типstring | ОписаниеТип файла, например image |
Полеdata.files[].name |
Типstring | ОписаниеИмя файла |
Полеdata.files[].extension |
Типstring | ОписаниеРасширение файла |
Полеdata.files[].size |
Типnumber | ОписаниеРазмер, байты |
Полеdata.files[].status |
Типstring | ОписаниеСтатус загрузки, done у загруженного файла |
Полеdata.files[].authorId |
Типnumber | ОписаниеИдентификатор автора файла |
Полеdata.files[].authorName |
Типstring | ОписаниеИмя автора |
Полеdata.files[].isVoiceNote |
Типboolean | ОписаниеГолосовое сообщение |
Полеdata.files[].isVideoNote |
Типboolean | ОписаниеВидеосообщение |
Полеdata.files[].isTranscribable |
Типboolean | ОписаниеДоступна ли расшифровка |
Полеdata.files[].urlPreview |
Типstring | ОписаниеСсылка на уменьшенное изображение |
Полеdata.files[].urlShow |
Типstring | ОписаниеСсылка на просмотр |
Полеdata.files[].urlDownload |
Типstring | ОписаниеСсылка на скачивание |
Полеdata.chats |
Типobject[] | ОписаниеМетаданные чата |
Полеdata.chats[].id |
Типnumber | ОписаниеИдентификатор чата |
Полеdata.chats[].dialogId |
Типstring | ОписаниеИдентификатор диалога в форме chat<N> |
Полеdata.chats[].name |
Типstring | ОписаниеНазвание чата |
Полеdata.chats[].type |
Типstring | ОписаниеТип чата, у Открытой линии — lines |
Полеdata.chats[].entityType |
Типstring | ОписаниеТип сущности чата, у Открытой линии — LINES |
Полеdata.chats[].messageCount |
Типnumber | ОписаниеЧисло сообщений в чате за все сессии |
Полеdata.chats[].dateCreate |
Типstring | ОписаниеДата создания чата, ISO 8601 |
Полеdata.usersMessage |
Типobject | ОписаниеСоответствие: идентификатор диалога chat<N> → идентификаторы сообщений сессии строками |
Пример ответа
{
"success": true,
"data": {
"sessionId": 607,
"chatId": 2043,
"messages": [
{
"id": 88101,
"chatId": 2043,
"senderId": 0,
"recipientId": "chat2043",
"date": "2026-08-14T10:12:30+03:00",
"text": "Обращение направлено на всех участников очереди",
"textLegacy": "Обращение направлено на всех участников очереди",
"params": []
},
{
"id": 88103,
"chatId": 2043,
"senderId": 1211,
"recipientId": "chat2043",
"date": "2026-08-14T10:12:33+03:00",
"text": "Здравствуйте, не приходит счёт",
"textLegacy": "Здравствуйте, не приходит счёт",
"params": { "connectorMid": ["88099"] }
},
{
"id": 88107,
"chatId": 2043,
"senderId": 13,
"recipientId": "chat2043",
"date": "2026-08-14T10:13:05+03:00",
"text": "[b]Добрый день![/b] Проверяю счёт",
"textLegacy": "<b>Добрый день!</b> Проверяю счёт",
"params": { "connectorMid": ["88109"] }
}
],
"users": [
{
"id": 13,
"name": "Анна Соколова",
"firstName": "Анна",
"lastName": "Соколова",
"workPosition": "Оператор",
"avatar": "/bitrix/js/im/images/blank.gif",
"gender": "F",
"extranet": false,
"connector": false,
"type": "user"
},
{
"id": 1211,
"name": "Гость",
"firstName": "Гость",
"lastName": "",
"workPosition": null,
"avatar": "/bitrix/js/im/images/blank.gif",
"gender": "M",
"extranet": true,
"connector": true,
"type": "extranet"
}
],
"files": [],
"chats": [
{
"id": 2043,
"dialogId": "chat2043",
"name": "Гость - Открытая линия",
"type": "lines",
"entityType": "LINES",
"messageCount": 36,
"dateCreate": "2026-08-14T10:12:30+03:00"
}
],
"usersMessage": { "chat2043": ["88107", "88103", "88101"] }
}
}
Пример ответа при ошибке
422 — по чату нельзя определить сессию: чата нет или он не относится к Открытой линии:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Unable to determine session ID from provided parameters",
"b24Code": "INVALID_SESSION_ID"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | КодMISSING_PARAMS |
ОписаниеНе передан ни chatId, ни dialogId. Тело только с sessionId получает этот же ответ |
| HTTP400 | КодMISSING_PARAMS |
ОписаниеЗначение некорректно: chatId не целое положительное число и не строка chat<N>, dialogId не в форме chat<N> |
| HTTP400 | КодINVALID_PARAMS |
ОписаниеТело запроса не JSON-объект |
| HTTP400 | КодINVALID_JSON_BODY |
ОписаниеТело запроса не разобралось как JSON |
| HTTP401 | КодTOKEN_MISSING |
ОписаниеУ ключа нет настроенных токенов Битрикс24 |
| HTTP403 | КодOPENLINES_HISTORY_DISABLED |
ОписаниеВозможность ещё не включена на платформе Вайбкод |
| HTTP403 | КодSCOPE_DENIED |
ОписаниеУ ключа нет скоупа imopenlines |
| HTTP403 | КодBITRIX_ACCESS_DENIED |
ОписаниеУ пользователя ключа нет доступа к этому диалогу |
| HTTP404 | КодENTITY_NOT_FOUND |
ОписаниеБитрикс24 ответил пустым результатом вместо истории сессии |
| HTTP422 | КодBITRIX_ERROR |
Описаниеerror.b24Code равен INVALID_SESSION_ID: чата с таким идентификатором нет или он не относится к Открытой линии |
| HTTP429 | КодRATE_LIMITED |
ОписаниеПревышен собственный лимит метода: потолок платформы 120 запросов в минуту на портал, а не на ключ, делится на реплики. Действующее значение приходит в заголовке x-ratelimit-limit |
| HTTP502 | КодBITRIX_UNAVAILABLE |
ОписаниеБитрикс24 вернул ответ неожиданной формы |
Полный список общих ошибок API — Ошибки.