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

Сообщения

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

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

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

GET /v1/chats/:dialogId/messages

Возвращает сообщения диалога с поддержкой постраничной загрузки через курсор.

Параметры

Параметр Тип Обяз. По умолч. Описание
ПараметрdialogId (path) Типstring Обяз.да По умолч.— ОписаниеID диалога: числовой ID пользователя для личных сообщений, chatXXX для групповых — поле dialogId строки последних диалогов, ID пользователя — из списка пользователей. Специальный алиас me — личный диалог текущего пользователя
Параметрlimit (query) Типnumber Обяз.нет По умолч.20, в режиме v2 — 50 ОписаниеКоличество сообщений на странице, принимается до 200. В обычном режиме на облачном портале за вызов приходит не больше 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 читает ленту. В data приходит объект v2 — messages, users, files, reactions и другие коллекции — и hasNextPage, ключи в camelCase. Реакции приходят на той же странице. Режим принимает только format, limit (от 1 до 200: значение вне диапазона срезается, переданное и применённое значения — в meta), 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 может сделать вас участником: если чат разрешает автовступление — например, чат комментариев, коллаб или чат задачи, — вызов добавляет текущего пользователя в участники, как загрузка чата. Ключу READONLY режим v2 разрешён как точечное исключение. Права пользователя и скоуп im всё ещё проверяются. Чтение обновляет присутствие сотрудника. Лента сама не отмечает сообщения прочитанными. Точные методы и границы этих эффектов перечислены в правах доступа.

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

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

Примеры

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 пользователей, поставивших реакцию, по коду реакции. Перечислены не все, а первые несколько. Профиль — по ID пользователя
Полеdata.reactions[].ownReactions Типarray ОписаниеКоды реакций текущего пользователя
Полеdata.hasNextPage Типboolean Описаниеfalse — страниц в выбранном направлении больше нет
Полеmeta.requestedLimit Типnumber ОписаниеПереданный limit до срезания. Присутствует вместе с appliedLimit, только когда переданное значение вышло за диапазон от 1 до 200
Полеmeta.appliedLimit Типnumber ОписаниеПрименённое значение limit — только если он был приведён к границе

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

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

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

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": "You do not have access to the specified dialog",
    "b24Code": "ACCESS_ERROR"
  }
}

Ошибки

HTTP Код Описание
HTTP422 КодBITRIX_ERROR ОписаниеБитрикс24 вернул ошибку (текст в поле message). В обычном режиме так приходят и «диалог не найден», и «нет доступа». Код портала — в error.b24Code
HTTP403 КодBITRIX_ACCESS_DENIED ОписаниеРежим v2: у пользователя нет доступа к чату — Битрикс24 отказал с кодом ACCESS_DENIED
HTTP404 КодENTITY_NOT_FOUND ОписаниеБитрикс24 вернул ошибку NOT_FOUND. В режиме v2 код портала приходит в error.b24Code
HTTP400 КодINVALID_PARAMS ОписаниеРежим v2: firstId, параметр вне format, limit, lastId, order, повтор параметра, кроме format, или нечисловое значение. Проверяется до обращения к Битрикс24
HTTP502 КодBITRIX_UNAVAILABLE ОписаниеБитрикс24 недоступен или вернул ошибку сервера
HTTP502 КодME_ALIAS_RESOLUTION_FAILED ОписаниеНе удалось определить пользователя при использовании алиаса me
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеРежим только чтения: существующий чат не подтверждён в ограниченном окне последних диалогов либо передан создающий или неоднозначный алиас. Вызывающий создание метод не отправляется на портал
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеРежим v2: именованное чтение в режиме READONLY недоступно ключу приложения, менеджмент-ключу или ключу с неподтверждённым видом владельца
HTTP403 КодSCOPE_DENIED ОписаниеКлючу не хватает скоупа im
HTTP401 КодTOKEN_MISSING ОписаниеAPI-ключ не имеет настроенных токенов Битрикс24

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

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

Потолок страницы в обычном режиме — 50 сообщений за вызов. Параметр limit принимает значения до 200, но в обычном режиме на облачном портале за вызов приходит не больше 50 записей независимо от переданного значения. Коробочные порталы могут отдавать больше. Историю глубже 50 сообщений читайте курсором lastId — страница за страницей. В режиме v2 этого потолка нет: за вызов приходит столько сообщений, сколько передано в 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.

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