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

Сообщения

Читайте, отправляйте, редактируйте и удаляйте сообщения, отмечайте их прочитанными, открывайте чат одним запросом или на конкретном сообщении и загружайте переписку из нескольких диалогов одним запросом.

Скоуп: im | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key

Чтение сообщений

GET /v1/chats/:dialogId/messages

Возвращает сообщения диалога с поддержкой постраничной загрузки через курсор. Алиас me в качестве dialogId адресует личный диалог текущего пользователя — подробнее в Обзоре чатов.

Параметры

Параметр Тип Обяз. По умолч. Описание
dialogId (path) string да — ID диалога: числовой ID пользователя для личных сообщений, chatXXX для групповых — поле dialogId строки последних диалогов, ID пользователя — из списка пользователей. Специальный алиас me — личный диалог текущего пользователя
limit (query) number нет 50 Количество сообщений на странице, принимается до 200. В обычном режиме облачный Битрикс24 возвращает не больше 50 записей за вызов, в режиме v2 — до 200 — см. «Известные особенности»
lastId (query) number нет — Курсор для загрузки более старых сообщений: вернуть сообщения с ID меньше указанного
firstId (query) number нет — Курсор для загрузки более новых сообщений: вернуть сообщения с ID больше указанного. В режиме v2 отклоняется
format (query) string нет — v2 включает режим v2 — см. «Режим v2» ниже. Любое другое значение игнорируется, ответ прежний. Повтор format не отклоняется: из format=v1&format=v2 берётся последнее значение, то есть режим v2, а format=v2&format=v1 даёт прежний ответ. Форма format[]=v2 включает режим v2, если все её значения — v2
order (query) string нет desc Только режим v2: desc — сообщения старше lastId, asc — новее lastId

Режим v2. format=v2 читает ленту методом im.v2.Chat.Message.tail. В data приходит объект v2 — messages, users, files, reactions и другие коллекции — и hasNextPage, ключи в camelCase; реакции едут в той же странице. Режим принимает только format, limit (от 1 до 200, со срезанием и эхом), lastId и order; firstId отклоняется с 400 INVALID_PARAMS — вперёд листайте через order=asc и lastId. Граница lastId исключающая: страница после 52523 начинается с 52522. Конец ленты — hasNextPage: false. Запрос режима отличается от примеров ниже только строкой запроса: GET /v1/chats/chat42/messages?format=v2&limit=50&lastId=1002 — 50 сообщений старше 1002; заголовки авторизации те же. Режим v2 может сделать вас участником: если чат разрешает автовступление — например, чат комментариев, коллаб или чат задачи, — вызов добавляет текущего пользователя в участники, как загрузка чата. Поэтому в режиме v2 вызов считается изменяющим, и ключ только для чтения получает 403 WRITE_BLOCKED_READONLY_KEY; обычный режим остаётся чтением.

Примеры

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/chat42/messages?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/chat42/messages?limit=20" \
  -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/messages?limit=20',
  {
    headers: {
      'X-Api-Key': 'YOUR_API_KEY',
    },
  }
)

const { success, data } = await res.json()
console.log('Сообщения:', data.messages)
console.log('Участники:', data.users)

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

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

const { success, data } = await res.json()

Поля ответа

Обычный режим — без format=v2:

Поле Тип Описание
success boolean Всегда true при успехе
data.chatId number ID чата
data.messages array Массив сообщений
data.messages[].id number ID сообщения
data.messages[].chatId number ID чата, которому принадлежит сообщение
data.messages[].authorId number ID автора сообщения. 0 — системное сообщение
data.messages[].date string Дата отправки (ISO 8601)
data.messages[].text string Текст сообщения
data.messages[].unread boolean Не прочитано текущим пользователем
data.messages[].uuid string|null Уникальный идентификатор сообщения (задаётся отправителем)
data.messages[].replaces array Список ID замещённых сообщений
data.messages[].params array|object Дополнительные параметры сообщения (форматирование, системные метки)
data.messages[].disappearingDate string|null Дата автоудаления сообщения (ISO 8601) или null
data.users array Участники диалога с профилями
data.users[].id number ID пользователя
data.users[].name string Отображаемое имя
data.users[].active boolean Активен ли пользователь на портале
data.files array Файлы, прикреплённые к сообщениям
meta.requestedLimit number Переданный limit до срезания. Присутствует вместе с appliedLimit, только когда переданное значение вышло за диапазон от 1 до 200
meta.appliedLimit number Применённое после срезания значение limit

Режим v2 — format=v2. Поля data.chatId в этом режиме нет: ID чата несёт каждое сообщение.

Поле Тип Описание
success boolean Всегда true при успехе
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.users array Авторы сообщений страницы
data.files array Файлы сообщений страницы
data.reactions array Реакции на сообщения страницы — по элементу на сообщение с реакциями
data.reactions[].messageId number ID сообщения из data.messages этого же ответа
data.reactions[].reactionCounters object Число реакций по коду реакции, например {"like": 2}
data.reactions[].reactionUsers object ID пользователей, поставивших реакцию, по коду реакции; Битрикс24 перечисляет не всех, а первых несколько. Профиль — по ID пользователя
data.reactions[].ownReactions array Коды реакций текущего пользователя
data.hasNextPage boolean false — страниц в выбранном направлении больше нет
meta.requestedLimit number Переданный limit до срезания. Присутствует вместе с appliedLimit, только когда переданное значение вышло за диапазон от 1 до 200
meta.appliedLimit number Применённое после срезания значение limit

Кроме перечисленных, объект v2 может нести другие коллекции мессенджера — например, additionalMessages с сообщениями, на которые отвечают сообщения страницы, и copilot; их состав определяет Битрикс24.

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

Обычный режим:

JSON
{
  "success": true,
  "data": {
    "chatId": 42,
    "messages": [
      {
        "id": 1001,
        "chatId": 42,
        "authorId": 5,
        "date": "2026-06-05T10:00:00+03:00",
        "text": "Добрый день! Как дела?",
        "unread": false,
        "uuid": null,
        "replaces": [],
        "params": [],
        "disappearingDate": null
      },
      {
        "id": 1002,
        "chatId": 42,
        "authorId": 7,
        "date": "2026-06-05T10:01:00+03:00",
        "text": "Всё хорошо, спасибо.",
        "unread": true,
        "uuid": null,
        "replaces": [],
        "params": [],
        "disappearingDate": null
      }
    ],
    "users": [
      {
        "id": 5,
        "active": true,
        "name": "Иван Петров",
        "firstName": "Иван",
        "lastName": "Петров",
        "workPosition": "Менеджер",
        "color": "#3bc8f5",
        "gender": "M",
        "bot": false,
        "type": "user"
      }
    ],
    "files": []
  }
}

Пример ответа — режим v2

JSON
{
  "success": true,
  "data": {
    "messages": [
      {
        "id": 1002,
        "chatId": 42,
        "authorId": 7,
        "date": "2026-09-20T10:01:00+03:00",
        "text": "Всё готово",
        "params": {}
      },
      {
        "id": 1001,
        "chatId": 42,
        "authorId": 5,
        "date": "2026-09-20T10:00:00+03:00",
        "text": "Посмотрите макет",
        "params": {}
      }
    ],
    "users": [],
    "files": [],
    "reactions": [
      {
        "messageId": 1001,
        "reactionCounters": { "like": 1 },
        "reactionUsers": { "like": [7] },
        "ownReactions": []
      }
    ],
    "hasNextPage": true
  }
}

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

422 — обычный режим, диалог не найден или нет доступа:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Access denied"
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Битрикс24 вернул ошибку (текст в поле message). В обычном режиме так приходят и «диалог не найден», и «нет доступа». В режиме v2 код портала приходит в error.b24Code
403 BITRIX_ACCESS_DENIED Режим v2: у пользователя нет доступа к чату — Битрикс24 отказал с кодом ACCESS_DENIED
404 ENTITY_NOT_FOUND Битрикс24 вернул ошибку NOT_FOUND. В режиме v2 код портала приходит в error.b24Code
400 INVALID_PARAMS Режим v2: firstId, параметр вне format, limit, lastId, order, повтор параметра, кроме format, или нечисловое значение. Проверяется до обращения к Битрикс24
502 BITRIX_UNAVAILABLE Битрикс24 недоступен или вернул ошибку сервера
502 ME_ALIAS_RESOLUTION_FAILED Не удалось определить пользователя при использовании алиаса me
403 SCOPE_DENIED Ключу не хватает скоупа im
403 WRITE_BLOCKED_READONLY_KEY Только режим v2: ключ только для чтения, а лента v2 может сделать владельца ключа участником чата — см. права доступа
401 TOKEN_MISSING Не передан X-Api-Key или не настроены токены

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

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

Пагинация через курсор. Эндпоинт использует курсорную пагинацию, а не смещение по номеру страницы. Для загрузки более старых сообщений передайте lastId равным наименьшему id из последнего ответа. Для загрузки более новых — передайте firstId равным наибольшему id.

Потолок страницы в обычном режиме — 50 сообщений за вызов. Параметр limit принимает значения до 200, но в обычном режиме облачный Битрикс24 возвращает не больше 50 записей за вызов независимо от переданного значения. Коробочные порталы могут отдавать больше. Историю глубже 50 сообщений читайте курсором lastId — страница за страницей. В режиме v2 этого потолка нет: метод im.v2.Chat.Message.tail отдаёт за вызов столько сообщений, сколько передано в limit, до 200.

Порядок сообщений. Сообщения возвращаются в порядке убывания — от новых к старым. В режиме v2 с order=asc порядок обратный: от старых к новым, начиная со следующего после lastId.

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

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