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

Отправить сообщение

POST /v1/chats/:dialogId/messages

Отправляет текстовое сообщение в указанный диалог. Текст поддерживает BB-коды для форматирования, к сообщению можно прикрепить клавиатуру и вложения.

Параметры

Параметр Тип Обяз. Описание
dialogId (path) string да Идентификатор диалога. Числовой ID пользователя для личных сообщений, список — GET /v1/users. chatXXX — для групповых чатов. Принимает значение me — см. ниже
format (query) string нет v2 включает режим v2 — см. «Режим v2» ниже. Любое другое значение игнорируется, ответ прежний. Повтор format не отклоняется: из format=v1&format=v2 берётся последнее значение, то есть режим v2, а format=v2&format=v1 даёт прежний ответ. Форма format[]=v2 включает режим v2, если все её значения — v2

Алиас me. Вместо числового ID пользователя можно передать строку me: диалог откроется с текущим владельцем ключа. Подробнее — Чаты и сообщения.

Режим v2. format=v2 отправляет сообщение. Тело остаётся плоским — теми же полями, что ниже, — а в data вместо числа приходит объект { id, uuidMap, failureMap }. Режим принимает только поля из таблицы ниже, в том числе отмеченные «только режим v2». Любое другое поле тела, формы в верхнем регистре (MESSAGE, REPLY_ID) и параметры строки запроса кроме format отклоняются с 400 INVALID_PARAMS, поле называется по имени, значение не повторяется. message в режиме v2 — только строка. Сообщение должно что-то содержать: непустой текст. Текст из одних пробелов — только вместе с непустым attach. Без message — непустой attach, stickerParams или block. Иначе — 400 MESSAGE_REQUIRED до обращения к порталу. Пересылка идёт через POST /v1/chats/:dialogId/forward: поле forwardIds в режиме v2 отклоняется с этим адресом, botId — с адресом отправки от бота.

Поля запроса (body)

Поле Тип Обяз. Описание
message string нет Текст сообщения (до 20 000 символов). Поддерживает BB-коды. Можно не передавать, если передан непустой attach, keyboard или menu, в режиме v2 — непустой attach, stickerParams или block
attach array нет Вложения: карточки, таблицы, изображения, файлы, разделители
keyboard array нет Интерактивные кнопки под сообщением
menu array нет Пункты контекстного меню сообщения
replyId number нет ID цитируемого сообщения
system boolean нет При true — системный стиль (без аватара, authorId = 0)
urlPreview boolean нет При false отключает предпросмотр ссылок в тексте
skipConnector boolean нет Только режим v2: не передавать сообщение в коннектор открытой линии. true/false или "Y"/"N"
silentConnector boolean нет Только режим v2: передать в коннектор открытой линии без уведомления клиента. true/false или "Y"/"N"
templateId string нет Только режим v2: ваш идентификатор сообщения, от 1 до 255 символов. Длиннее — 400, а не обрезка
stickerParams object нет Только режим v2: стикер. Без любого из трёх полей ниже портал отклоняет отправку с 422 BITRIX_ERROR, b24Code — STICKER_SENDING_ERROR
stickerParams.id number да ID стикера — поле data.stickers[].id списка наборов стикеров. Обязательно, если передан stickerParams
stickerParams.packId number да ID набора стикера — поле data.stickers[].packId списка наборов стикеров. Обязательно, если передан stickerParams
stickerParams.packType string да Вид набора: vendor — встроенный, custom — набор пользователя. Поле data.stickers[].packType списка наборов стикеров. Обязательно, если передан stickerParams
block object|array нет Только режим v2: блоки сообщения в формате Битрикс24. Портал проверяет их и строит из них текст
copilot object нет Только режим v2: параметры BitrixGPT для сообщения, передаются как есть
aiAssistant object нет Только режим v2: параметры AI-ассистента для сообщения, передаются как есть

Оформление сообщения

Примеры

В примерах dialogId равен 42 — числовой ID сотрудника-получателя.

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/chats/42/messages \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Счёт выставлен. Ожидайте подтверждения."
  }'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/chats/42/messages \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Счёт выставлен. Ожидайте подтверждения."
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/42/messages', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    message: 'Счёт выставлен. Ожидайте подтверждения.',
  }),
})

const { success, data } = await res.json()
console.log('ID сообщения:', data)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/42/messages', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    message: 'Счёт выставлен. Ожидайте подтверждения.',
  }),
})

const { success, data } = await res.json()
console.log('ID сообщения:', data)

curl — режим v2

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/chats/42/messages?format=v2" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Счёт выставлен. Ожидайте подтверждения.",
    "urlPreview": false
  }'

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data number ID созданного сообщения
data.id number Режим v2: ID созданного сообщения
data.uuidMap array|object Режим v2: соответствие идентификаторов пересылки и сообщений. При обычной отправке пустое
data.failureMap array|object Режим v2: неудачи пересылки. При обычной отправке пустое

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

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

JSON
{
  "success": true,
  "data": 36889
}

Режим v2 — format=v2:

JSON
{
  "success": true,
  "data": {
    "id": 36889,
    "uuidMap": [],
    "failureMap": []
  }
}

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

400 — не передан текст сообщения:

JSON
{
  "success": false,
  "error": {
    "code": "MESSAGE_REQUIRED",
    "message": "Message is empty. Put the message text in the \"message\" field (or send an \"attach\" block)."
  }
}

Ошибки

HTTP Код Описание
400 MESSAGE_REQUIRED Поле message пустое и нет непустого attach, keyboard или menu. Одна из причин — текст передан под неизвестным именем поля, например text. message перечисляет нераспознанные поля. В режиме v2 — по правилу из абзаца «Режим v2»
400 INVALID_PARAMS Только режим v2: поле тела вне списка, параметр строки запроса кроме format или некорректное значение. Проверяется до обращения к Битрикс24
403 WRITE_BLOCKED_READONLY_KEY Ключ только для чтения — см. права доступа
404 ENTITY_NOT_FOUND Битрикс24 вернул «не найдено». Код портала в error.b24Code — только в режиме v2
422 BITRIX_ERROR Битрикс24 вернул ошибку — диалог не найден или недоступен (подробности в message). Код портала — в error.b24Code
502 ME_ALIAS_RESOLUTION_FAILED dialogId=me — не удалось определить ID текущего пользователя
403 BITRIX_ACCESS_DENIED Только режим v2: у пользователя нет доступа к чату — Битрикс24 отказал с кодом ACCESS_DENIED
403 SCOPE_DENIED Ключ не имеет скоупа im
401 TOKEN_MISSING Ключ не имеет настроенных токенов

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

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

Обрезка длинного текста. Текст длиннее 20 000 символов обрезается до 20 000, в конец добавляется (...).

Код отказа портала. Код отказа Битрикс24 приходит в error.b24Code. В ответе 404 ENTITY_NOT_FOUND это поле есть только в режиме v2.

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