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

Загрузка чата

GET /v1/chats/:dialogId/load

Открывает чат одним запросом: карточка чата, первая страница сообщений, закреплённые сообщения, участники и файлы. Первая страница строится вокруг последнего прочитанного сообщения, а если чат помечен непрочитанным — вокруг метки.

Параметры

Параметр Тип Обяз. По умолч. Описание
ПараметрdialogId (path) Типstring Обяз.да По умолч.— ОписаниеID диалога: числовой ID пользователя для личных сообщений, chatXXX для групповых, me — личный диалог текущего пользователя. Берётся из поля dialogId строки последних диалогов, ID пользователя — из списка пользователей
ПараметрmessageLimit (query) Типnumber Обяз.нет По умолч.50 ОписаниеСколько сообщений взять по каждую сторону от опорного: страница — до messageLimit сообщений до него, само сообщение и до messageLimit после. От 1 до 200: значение вне диапазона срезается, переданное и применённое значения — в meta.requestedMessageLimit и meta.appliedMessageLimit
ПараметрpinLimit (query) Типnumber Обяз.нет По умолч.50 ОписаниеСколько закреплённых сообщений вернуть. От 1 до 200, переданное и применённое значения — в meta.requestedPinLimit и meta.appliedPinLimit
ПараметрignoreMark (query) Типboolean Обяз.нет По умолч.false Описаниеtrue — строить первую страницу от последнего прочитанного сообщения, не учитывая метку «непрочитанное»
Параметрshallow (query) Типboolean Обяз.нет По умолч.false Описаниеtrue — облегчённая загрузка, см. ниже. С true другие параметры не принимаются. Значение кроме true и false отклоняется

Другие параметры и повторы отклоняются с 400 INVALID_PARAMS.

Облегчённая загрузка. shallow=true открывает чат: в data приходят карточка чата, его участники и контекст чата — recentConfig, parentChat, copilot, messagesAutoDeleteConfigs, callInfo, — но нет страницы сообщений, закреплённых сообщений, файлов и флагов hasPrevPage / hasNextPage. Это вызов для шапки чата или экрана настроек. Облегчённая загрузка тоже может сделать вас участником. Для обычного личного ключа сотрудника это разрешённое именованное чтение существующего чата. shallow=false — полная загрузка. Запрос без shallow получает тот же ответ полной загрузки и те же отказы.

Ключ только чтения. В режиме READONLY этот запрос читает существующий чат: передайте его chatN либо числовой ID собеседника, подтверждённый в последних диалогах того же сотрудника. Для me проверяется уже существующий личный диалог. Проверка просматривает не больше 4000 исходных строк последних диалогов. Если привязка не подтверждена, ответ — 403 WRITE_BLOCKED_READONLY_KEY, без обращения к методу, который мог бы создать чат. Границы проверки и разрешённых эффектов чтения — в правах доступа.

Исключение для этих именованных чтений действует только для обычного личного ключа сотрудника — как с вебхуком, так и с ранее настроенными OAuth-токенами. Ключ приложения с пользовательской Bearer-сессией, менеджмент-ключ и ключ с неподтверждённым видом владельца в режиме READONLY получают 403 WRITE_BLOCKED_READONLY_KEY до проверки привязки существующего чата и вызова именованного метода мессенджера. Обычные чтения без этих эффектов остаются доступны ключам приложений. Режим с записью не меняется.

Примеры

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/chat42/load?messageLimit=30" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/chat42/load?messageLimit=30" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat42/load?messageLimit=30', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
console.log('Чат:', data.chat.name)
console.log('Сообщения:', data.messages.length, 'ещё раньше:', data.hasPrevPage)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat42/load?messageLimit=30', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Чат:', data.chat.name)
console.log('Сообщения:', data.messages.length, 'ещё раньше:', data.hasPrevPage)

curl — облегчённая загрузка

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/chat42/load?shallow=true" \
  -H "X-Api-Key: YOUR_API_KEY"

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata.chat Типobject ОписаниеКарточка чата: id, dialogId, name, type, owner, role, entityType, entityId, permissions и другие поля
Полеdata.messages Типarray ОписаниеПервая страница сообщений
Полеdata.messages[].id Типnumber ОписаниеID сообщения — курсор lastId следующей страницы и messageId для сообщений вокруг сообщения
Полеdata.messages[].chatId Типnumber ОписаниеID чата — совпадает с data.chat.id
Полеdata.messages[].authorId Типnumber ОписаниеID автора — профиль в data.users этого же ответа или по ID пользователя. 0 — системное сообщение
Полеdata.messages[].date Типstring ОписаниеДата отправки (ISO 8601)
Полеdata.messages[].text Типstring ОписаниеТекст сообщения
Полеdata.messages[].params Типobject ОписаниеДополнительные параметры сообщения, ключи в camelCase
Полеdata.pins Типarray ОписаниеЗакреплённые сообщения
Полеdata.users Типarray ОписаниеУчастники, упомянутые на странице
Полеdata.files Типarray ОписаниеФайлы сообщений страницы
Полеdata.reactions Типarray ОписаниеРеакции на сообщения страницы
Полеdata.hasPrevPage Типboolean ОписаниеЕсть сообщения старше первой страницы
Полеdata.hasNextPage Типboolean ОписаниеЕсть сообщения новее первой страницы
Полеdata.recentConfig Типobject ОписаниеКонтекст чата: в каких разделах списка чатов виден чат
Полеdata.parentChat Типobject|null ОписаниеКонтекст чата: краткая карточка родительского чата или null
Полеdata.copilot Типobject|null ОписаниеКонтекст чата: роли CoPilot. null вне чатов CoPilot
Полеdata.messagesAutoDeleteConfigs Типarray ОписаниеКонтекст чата: настройки автоудаления сообщений
Полеdata.callInfo Типobject ОписаниеКонтекст чата: chatId и token — звонковый токен текущего пользователя. Эндпоинт передаёт его без изменений. Не пишите его в журналы
Полеmeta.requestedMessageLimit Типnumber ОписаниеПереданный messageLimit, когда он вышел за диапазон от 1 до 200
Полеmeta.appliedMessageLimit Типnumber ОписаниеПрименённое значение messageLimit — только если он был приведён к границе
Полеmeta.requestedPinLimit Типnumber ОписаниеПереданный pinLimit, когда он вышел за диапазон от 1 до 200
Полеmeta.appliedPinLimit Типnumber ОписаниеПрименённое значение pinLimit — только если он был приведён к границе

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

JSON
{
  "success": true,
  "data": {
    "chat": {
      "id": 42,
      "dialogId": "chat42",
      "name": "Проект",
      "type": "chat",
      "owner": 5,
      "role": "member"
    },
    "messages": [
      {
        "id": 1002,
        "chatId": 42,
        "authorId": 7,
        "date": "2026-09-20T10:01:00+03:00",
        "text": "Всё готово",
        "params": {}
      }
    ],
    "pins": [],
    "users": [],
    "files": [],
    "reactions": [],
    "hasPrevPage": true,
    "hasNextPage": false
  }
}

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

422 — чата нет на портале:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Указанный чат не существует",
    "hint": "dialogId must be a userId (number as string) for DMs or \"chat{N}\" for group chats. Examples: \"1\" for user 1, \"chat123\" for group chat 123. Create a group chat first via POST /v1/bots/:botId/chats if needed.",
    "b24Code": "CHAT_NOT_FOUND"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодINVALID_PARAMS ОписаниеПараметр вне messageLimit, pinLimit, ignoreMark, shallow, повтор параметра или некорректное значение. С shallow=true — любой другой параметр. shallow не true и не false. Проверяется до обращения к Битрикс24
HTTP404 КодENTITY_NOT_FOUND ОписаниеБитрикс24 вернул «не найдено». Код портала — в error.b24Code
HTTP422 КодBITRIX_ERROR ОписаниеБитрикс24 вернул ошибку. Код портала — в error.b24Code. Сюда же приходит отсутствующий чат — с CHAT_NOT_FOUND и текстом «Указанный чат не существует», а не с 404
HTTP502 КодME_ALIAS_RESOLUTION_FAILED ОписаниеНе удалось определить пользователя при использовании алиаса me
HTTP403 КодBITRIX_ACCESS_DENIED ОписаниеУ пользователя нет доступа к чату — Битрикс24 отказал с кодом ACCESS_DENIED
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеРежим только чтения: существующий чат не подтверждён в ограниченном окне последних диалогов либо передан создающий или неоднозначный алиас. Вызывающий создание метод не отправляется на портал
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеИменованное чтение в режиме READONLY недоступно ключу приложения, менеджмент-ключу или ключу с неподтверждённым видом владельца
HTTP403 КодSCOPE_DENIED ОписаниеAPI-ключ не имеет скоупа im
HTTP401 КодTOKEN_MISSING ОписаниеAPI-ключ не имеет настроенных токенов Битрикс24

Полный список общих ошибок API — Ошибки.

Известные особенности

Открытие чата может сделать вас участником. Если чат разрешает автовступление — например, чаты комментариев, коллабы, чаты задач, — вызов добавляет текущего пользователя в участники, как открытие чата в интерфейсе Битрикс24. Это поведение портала, эндпоинт его не скрывает. Ключу READONLY эта операция чтения разрешена как точечное исключение. Права пользователя и скоуп im всё ещё проверяются. Открытие само не отмечает сообщения прочитанными. Другие эффекты загрузки чата — обновление присутствия, быстрый доступ к файлам после проверки прав, подписка на обновления чата и фоновое событие внешнего чата — перечислены в правах доступа. Для коллаба или рабочей группы это фоновое событие может запустить отложенное преобразование проекта. То же исключение для автовступления относится к ленте в режиме v2 и к сообщениям вокруг сообщения.

Ключи ответа. Ключи-имена полей приводятся к camelCase: параметр сообщения FILE_ID приходит как fileId. Ключи-данные остаются как есть: ключи словаря data.copilot.roles — коды ролей, и copilot_assistant приходит как copilot_assistant — тем же значением, что role у чата и сообщения в data.copilot, поэтому роль находится прямым обращением roles[role]. Поля внутри роли приводятся к camelCase.

Дальше — лента. Более старые сообщения читайте лентой в режиме v2 с lastId, равным наименьшему id страницы.

Облегчённая загрузка — без сообщений. После shallow=true страницу сообщений дочитывайте лентой в режиме v2, а чтобы открыть чат на конкретном сообщении, используйте загрузку вокруг сообщения.

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