[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-bots\u002Fmessages\u002Fsend":3,"docs-tabs-bots\u002Fmessages\u002Fsend":6},{"content":4,"lastmod":5},"\n## Отправить сообщение\n\n`POST \u002Fv1\u002Fbots\u002F:botId\u002Fmessages`\n\nОтправляет сообщение от имени бота в указанный диалог. Текст поддерживает [BB-коды](\u002Fdocs\u002Fbots\u002Fmessages\u002Fformatting), к сообщению можно прикрепить [клавиатуру](\u002Fdocs\u002Fbots\u002Fmessages\u002Fkeyboard) и [ATTACH-блоки](\u002Fdocs\u002Fbots\u002Fmessages\u002Fattach).\n\n## Параметры\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|---------|\n| `botId` (path) | number | да | — | ID бота |\n| `dialogId` | string | да | — | ID диалога: числовой ID пользователя для личных сообщений, `chatXXX` для групповых |\n| `fields.message` | string | да | — | Текст сообщения (до 20 000 символов). Поддерживает [BB-коды](\u002Fdocs\u002Fbots\u002Fmessages\u002Fformatting) |\n| `fields.keyboard` | array | нет | — | Интерактивная [клавиатура](\u002Fdocs\u002Fbots\u002Fmessages\u002Fkeyboard) |\n| `fields.attach` | array\u002Fobject | нет | — | [ATTACH-блоки](\u002Fdocs\u002Fbots\u002Fmessages\u002Fattach) с оформленным содержимым |\n| `fields.replyId` | number | нет | — | ID сообщения для цитирования |\n| `fields.forwardIds` | object | нет | — | Сообщения для пересылки: `{uuid: messageId}`, где uuid — произвольная строка-ключ, messageId — ID исходного сообщения. Максимум 100. В ответе `uuidMap` вернёт `{uuid: newMessageId}` |\n| `fields.system` | boolean | нет | `false` | Системное сообщение (другой стиль, без аватара бота) |\n| `fields.urlPreview` | boolean | нет | `true` | Показывать превью ссылок в тексте |\n| `fields.templateId` | string | нет | — | UUID шаблона сообщения |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dialogId\": \"chat123\",\n    \"fields\": {\n      \"message\": \"[b]Задача #42[\u002Fb]\\nСтатус: выполнено\",\n      \"keyboard\": [\n        {\n          \"TEXT\": \"Открыть задачу\",\n          \"LINK\": \"https:\u002F\u002Fportal.bitrix24.ru\u002Ftasks\u002F42\u002F\",\n          \"BG_COLOR_TOKEN\": \"primary\"\n        }\n      ]\n    }\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dialogId\": \"chat123\",\n    \"fields\": {\n      \"message\": \"[b]Задача #42[\u002Fb]\\nСтатус: выполнено\",\n      \"keyboard\": [\n        {\n          \"TEXT\": \"Открыть задачу\",\n          \"LINK\": \"https:\u002F\u002Fportal.bitrix24.ru\u002Ftasks\u002F42\u002F\",\n          \"BG_COLOR_TOKEN\": \"primary\"\n        }\n      ]\n    }\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    dialogId: 'chat123',\n    fields: {\n      message: '[b]Задача #42[\u002Fb]\\nСтатус: выполнено',\n      keyboard: [\n        {\n          TEXT: 'Открыть задачу',\n          LINK: 'https:\u002F\u002Fportal.bitrix24.ru\u002Ftasks\u002F42\u002F',\n          BG_COLOR_TOKEN: 'primary',\n        },\n      ],\n    },\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Message ID:', data.id)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    dialogId: 'chat123',\n    fields: {\n      message: '[b]Задача #42[\u002Fb]\\nСтатус: выполнено',\n      keyboard: [\n        {\n          TEXT: 'Открыть задачу',\n          LINK: 'https:\u002F\u002Fportal.bitrix24.ru\u002Ftasks\u002F42\u002F',\n          BG_COLOR_TOKEN: 'primary',\n        },\n      ],\n    },\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `id` | number | ID созданного сообщения |\n| `uuidMap` | array | Маппинг UUID при пересылке (пустой массив если без `forwardIds`) |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 36357,\n    \"uuidMap\": []\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — бот не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BOT_NOT_FOUND\",\n    \"message\": \"Bot 999 not found. Register it first via POST \u002Fv1\u002Fbots.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_BOT_ID` | `botId` не является числом |\n| 404 | `BOT_NOT_FOUND` | Бот с таким ID не найден |\n| 403 | `BOT_ACCESS_DENIED` | Бот принадлежит другому API-ключу |\n| 502 | `BITRIX_ERROR` | Ошибка Битрикс24 при отправке (текст ошибки в `message`) |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imbot` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Два формата тела:** канонический формат — содержимое сообщения внутри `fields` (как в примерах выше). Для удобства принимается и «плоский» формат, когда `message`, `keyboard`, `attach`, `system`, `urlPreview`, `replyId`, `forwardIds`, `templateId` передаются на верхнем уровне рядом с `dialogId` — они автоматически оборачиваются в `fields`. Это та же симметрия, что и у [обновления сообщения](\u002Fdocs\u002Fbots\u002Fmessages\u002Fupdate). Если передан `fields`, плоские ключи не применяются (приоритет у `fields`).\n\n**Системные сообщения:** при `system: true` сообщение отображается без аватара бота и имеет `authorId = 0`. Такие сообщения нельзя обновить или удалить через бота.\n\n**Текст обрезается:** если сообщение длиннее 20 000 символов, Битрикс24 обрежет текст и добавит ` (...)`.\n\n**Пересылка (forwardIds):** формат — объект `{uuid: messageId}`, где uuid — произвольная строка, а messageId — ID исходного сообщения. Бот может пересылать только сообщения из чатов, где он является участником.\n\n## Смотрите также\n\n- [Обновить сообщение](\u002Fdocs\u002Fbots\u002Fmessages\u002Fupdate)\n- [Форматирование текста](\u002Fdocs\u002Fbots\u002Fmessages\u002Fformatting)\n- [Клавиатура](\u002Fdocs\u002Fbots\u002Fmessages\u002Fkeyboard)\n- [ATTACH-блоки](\u002Fdocs\u002Fbots\u002Fmessages\u002Fattach)\n- [События](\u002Fdocs\u002Fbots\u002Fevents)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","2026-06-16",{}]