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

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

POST /v1/openlines/crm/messages

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

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

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

Поле Тип Обяз. Описание
ПолеcrmEntityType Типstring Обяз.да ОписаниеТип карточки CRM: lead, deal, company или contact. Регистр не важен
ПолеcrmEntityId Типnumber Обяз.да ОписаниеID карточки CRM. Списки: GET /v1/leads, GET /v1/deals, GET /v1/companies, GET /v1/contacts
ПолеuserId Типnumber Обяз.да ОписаниеID сотрудника или бота, от имени которого отправляется сообщение. Сотрудники: GET /v1/users, боты: поле data.bots[].id в ответе GET /v1/bots
ПолеchatId Типnumber Обяз.да ОписаниеИдентификатор чата открытой линии этой карточки — положительное целое без префикса chat. Список: GET /v1/openlines/crm/chats с activeOnly=false
Полеmessage Типstring Обяз.да ОписаниеТекст сообщения. Строка из одних пробелов не принимается

Числовые поля принимают и строку из цифр.

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/openlines/crm/messages \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "crmEntityType": "deal",
    "crmEntityId": 42,
    "userId": 7,
    "chatId": 123,
    "message": "Здравствуйте! Ваш заказ готов к выдаче."
  }'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/openlines/crm/messages \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "crmEntityType": "deal",
    "crmEntityId": 42,
    "userId": 7,
    "chatId": 123,
    "message": "Здравствуйте! Ваш заказ готов к выдаче."
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/crm/messages', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    crmEntityType: 'deal',
    crmEntityId: 42,
    userId: 7,
    chatId: 123,
    message: 'Здравствуйте! Ваш заказ готов к выдаче.',
  }),
})

const { success, data, error } = await res.json()
if (!success) throw new Error(`${error.code}: ${error.message}`)
console.log('ID сообщения:', data.messageId)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/crm/messages', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    crmEntityType: 'deal',
    crmEntityId: 42,
    userId: 7,
    chatId: 123,
    message: 'Здравствуйте! Ваш заказ готов к выдаче.',
  }),
})

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

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean Описаниеtrue, когда сообщение отправлено
Полеdata.chatId Типnumber ОписаниеИдентификатор чата из запроса
Полеdata.messageId Типnumber ОписаниеID отправленного сообщения в чате

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

JSON
{
  "success": true,
  "data": {
    "chatId": 123,
    "messageId": 456
  }
}

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

404 — чат не относится к указанной карточке CRM:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "CRM chat not found"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодINVALID_PARAMS ОписаниеcrmEntityType не передан или вне списка, crmEntityId или userId не передан или не положительное целое, либо тело запроса не JSON-объект
HTTP400 КодINVALID_JSON_BODY ОписаниеТело запроса не разбирается как JSON
HTTP400 КодINVALID_CHAT_ID ОписаниеchatId не положительное целое, в том числе форма chat123
HTTP400 КодMISSING_REQUIRED_FIELDS ОписаниеНе передан chatId, или message не передан, не строка, пустой либо состоит из одних пробелов
HTTP404 КодENTITY_NOT_FOUND ОписаниеСообщение CRM chat not found: у карточки CRM нет чата с таким chatId, включая завершённые. Проверка идёт до отправки, сообщение не отправлено
HTTP404 КодENTITY_NOT_FOUND ОписаниеСообщение Record not found: Битрикс24 не нашёл чат при отправке
HTTP403 КодBITRIX_ACCESS_DENIED ОписаниеУ сотрудника, от имени которого идёт вызов, нет прав на карточку CRM или на отправку сообщения
HTTP422 КодBITRIX_ERROR ОписаниеБитрикс24 отказал в отправке, его код приходит в error.b24Code
HTTP502 КодOPENLINE_OPERATOR_FAILED ОписаниеБитрикс24 не вернул ID сообщения. Сообщение при этом могло быть отправлено
HTTP502 КодOPENLINE_OPERATOR_FAILED ОписаниеСписок чатов карточки пришёл в неожиданной форме. Проверка идёт до отправки, сообщение не отправлено
HTTP403 КодSCOPE_DENIED ОписаниеУ ключа нет скоупа imopenlines
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч работает только на чтение
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан
HTTP401 КодTOKEN_MISSING ОписаниеУ личного ключа нет доступа к порталу Битрикс24, у ключа приложения не передан токен сессии в Authorization
HTTP429 КодRATE_LIMITED ОписаниеПревышен лимит 120 запросов в минуту на портал. Лимит делится между репликами платформы, поэтому код может прийти раньше 120-го запроса. Действующее значение для ключа — в заголовке x-ratelimit-limit, остаток — в x-ratelimit-remaining
HTTP429 КодRATE_LIMITED ОписаниеБитрикс24 отклонил вызов по лимиту частоты запросов к порталу. В ответе приходит заголовок Retry-After
HTTP502 КодBITRIX_UNAVAILABLE ОписаниеБитрикс24 недоступен или соединение с ним оборвалось до полного ответа
HTTP503 КодBITRIX_TIMEOUT ОписаниеБитрикс24 принял вызов, но не ответил за отведённое время. Сообщение при этом могло быть отправлено

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

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

  • Чат проверяется до отправки. Перед отправкой Вайбкод сверяет chatId со всеми чатами карточки, включая завершённые диалоги.
  • Повтор после сбоя. После 502 OPENLINE_OPERATOR_FAILED или 503 BITRIX_TIMEOUT сообщение могло дойти до клиента. Повторный вызов отправит его ещё раз, поэтому перед повтором проверьте переписку диалога.

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