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

Сообщения вокруг сообщения

GET /v1/chats/messages/:messageId/context

Возвращает сообщение и соседние с ним. Нужен, чтобы открыть чат на конкретном сообщении: по ссылке, из поиска или из ответа на сообщение. Чат определяется по сообщению, dialogId не нужен.

Параметры

Параметр Тип Обяз. По умолч. Описание
ПараметрmessageId (path) Типnumber Обяз.да По умолч.— ОписаниеID сообщения, положительное целое — поле id сообщения из ленты или загрузки чата
Параметрrange (query) Типnumber Обяз.нет По умолч.50 ОписаниеСколько сообщений взять по каждую сторону: до range сообщений до указанного, само сообщение и до range после. От 1 до 200: значение вне диапазона срезается, эхо — meta.requestedRange и meta.appliedRange

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

Ключ только чтения. В режиме READONLY этот запрос читает существующий чат по messageId: чат определяется сообщением, dialogId не передаётся. Эффекты чтения — автовступление и обновление присутствия — описаны ниже, в «Открытие контекста может сделать вас участником».

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

Примеры

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/messages/1002/context?range=10" \
  -H "X-Api-Key: YOUR_API_KEY"

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

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

const { data } = await res.json()
console.log('Сообщения:', data.messages.map((m) => m.id))

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

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

const { data } = await res.json()
console.log('Сообщения:', data.messages.map((m) => m.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.messages[].block Типobject | null ОписаниеБлоки сообщения-конструктора, массив elements. null у обычного сообщения
Полеdata.messages[].block.elements[].id Типstring ОписаниеID блока — blockId для замены и удаления блока
Полеdata.users Типarray ОписаниеАвторы сообщений страницы
Полеdata.files Типarray ОписаниеФайлы сообщений страницы
Полеdata.reactions Типarray ОписаниеРеакции на сообщения страницы
Полеdata.hasPrevPage Типboolean ОписаниеЕсть сообщения старше страницы
Полеdata.hasNextPage Типboolean ОписаниеЕсть сообщения новее страницы
Полеmeta.requestedRange Типnumber ОписаниеПереданный range до срезания. Приходит вместе с meta.appliedRange, только когда переданное значение вышло за диапазон от 1 до 200
Полеmeta.appliedRange Типnumber ОписаниеПрименённое значение range — только если он был приведён к границе

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

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

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

422 — сообщения нет на портале:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "MESSAGE_NOT_FOUND",
    "b24Code": "MESSAGE_NOT_FOUND"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодINVALID_PARAMS ОписаниеmessageId не положительное целое, параметр кроме range, повтор параметра или некорректное значение. Проверяется до обращения к Битрикс24
HTTP404 КодENTITY_NOT_FOUND ОписаниеБитрикс24 вернул «не найдено». Код портала — в error.b24Code
HTTP422 КодBITRIX_ERROR ОписаниеБитрикс24 вернул ошибку. Код портала — в error.b24Code. Сюда же приходит отсутствующее сообщение: портал присылает MESSAGE_NOT_FOUND без текста, и в message повторяется код, поэтому это не 404
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеВ режиме только чтения именованный метод недоступен ключу приложения, менеджмент-ключу или ключу с неподтверждённым видом владельца; допускается обычный личный ключ сотрудника
HTTP403 КодBITRIX_ACCESS_DENIED ОписаниеУ пользователя нет доступа к чату — Битрикс24 отказал с кодом ACCESS_DENIED
HTTP403 КодSCOPE_DENIED ОписаниеAPI-ключ не имеет скоупа im
HTTP401 КодTOKEN_MISSING ОписаниеAPI-ключ не имеет настроенных токенов Битрикс24

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

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

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

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

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

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