[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-bots\u002Fui":3,"docs-tabs-bots\u002Fui":6},{"content":4,"lastmod":5},"# Интерфейс\n\nСтавьте реакции на сообщения, показывайте индикатор набора текста и управляйте полем ввода в чате.\n\n**Скоуп:** `imbot` | **Базовый URL:** `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1` | **Авторизация:** `X-Api-Key`\n\n## Операции\n\n- [Добавить реакцию](.\u002Fui\u002Freaction-add.md) — `POST \u002Fv1\u002Fbots\u002F:botId\u002Fmessages\u002F:messageId\u002Freactions`\n- [Удалить реакцию](.\u002Fui\u002Freaction-delete.md) — `DELETE \u002Fv1\u002Fbots\u002F:botId\u002Fmessages\u002F:messageId\u002Freactions`\n- [Индикатор набора](.\u002Fui\u002Ftyping.md) — `POST \u002Fv1\u002Fbots\u002F:botId\u002Ftyping`\n- [Управление полем ввода](.\u002Fui\u002Ftext-field.md) — `POST \u002Fv1\u002Fbots\u002F:botId\u002Ftext-field`\n\n## Справочники\n\n- [Коды реакций](.\u002Fui\u002Freactions.md) — 48 доступных кодов\n","2026-06-23",{"ui\u002Freaction-add.md":7,"ui\u002Freaction-delete.md":8,"ui\u002Ftyping.md":9,"ui\u002Ftext-field.md":10},"\n## Добавить реакцию\n\n`POST \u002Fv1\u002Fbots\u002F:botId\u002Fmessages\u002F:messageId\u002Freactions`\n\nДобавляет реакцию бота на сообщение.\n\n## Поля запроса (body)\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `reaction` | string | да | Код реакции (см. [Коды реакций](\u002Fdocs\u002Fbots\u002Fui\u002Freactions)) |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"reaction\": \"like\" }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"reaction\": \"like\" }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ reaction: 'like' }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions', {\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({ reaction: 'like' }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `data.result` | boolean | `true` при успешном добавлении |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": true\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- [Коды реакций](\u002Fdocs\u002Fbots\u002Fui\u002Freactions)\n- [Удалить реакцию](\u002Fdocs\u002Fbots\u002Fui\u002Freaction-delete)\n- [Отправить сообщение](\u002Fdocs\u002Fbots\u002Fmessages\u002Fsend)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","\n## Удалить реакцию\n\n`DELETE \u002Fv1\u002Fbots\u002F:botId\u002Fmessages\u002F:messageId\u002Freactions`\n\nУдаляет реакцию бота с сообщения.\n\n## Поля запроса (body)\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `reaction` | string | да | Код реакции для удаления (см. [Коды реакций](\u002Fdocs\u002Fbots\u002Fui\u002Freactions)) |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X DELETE https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"reaction\": \"like\" }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X DELETE https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"reaction\": \"like\" }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ reaction: 'like' }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Fmessages\u002F1501\u002Freactions', {\n  method: 'DELETE',\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({ reaction: 'like' }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `data.result` | boolean | `true` при успешном удалении |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — бот принадлежит другому ключу:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BOT_ACCESS_DENIED\",\n    \"message\": \"This bot belongs to a different API key\"\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- [Коды реакций](\u002Fdocs\u002Fbots\u002Fui\u002Freactions)\n- [Добавить реакцию](\u002Fdocs\u002Fbots\u002Fui\u002Freaction-add)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","\n## Индикатор набора\n\n`POST \u002Fv1\u002Fbots\u002F:botId\u002Ftyping`\n\nПоказывает индикатор статуса в чате. Вызывайте перед отправкой ответа, чтобы пользователь видел, что бот работает.\n\n## Поля запроса (body)\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|---------|\n| `dialogId` | string | да | — | ID диалога: числовой ID пользователя для личных, `chatXXX` для групповых |\n| `statusMessageCode` | string | нет | — | Код статуса действия (см. [таблицу ниже](#коды-статуса)). Без параметра — стандартный индикатор «печатает» |\n| `duration` | number | нет | — | Длительность отображения в секундах (1-600) |\n\n## Коды статуса\n\n| Код | Описание |\n|-----|---------|\n| `IMBOT_AGENT_ACTION_THINKING` | Думает |\n| `IMBOT_AGENT_ACTION_SEARCHING` | Ищет |\n| `IMBOT_AGENT_ACTION_GENERATING` | Генерирует |\n| `IMBOT_AGENT_ACTION_ANALYZING` | Анализирует |\n| `IMBOT_AGENT_ACTION_PROCESSING` | Обрабатывает |\n| `IMBOT_AGENT_ACTION_TRANSLATING` | Переводит |\n| `IMBOT_AGENT_ACTION_CONNECTING` | Подключается |\n| `IMBOT_AGENT_ACTION_CHECKING` | Проверяет |\n| `IMBOT_AGENT_ACTION_CALCULATING` | Вычисляет |\n| `IMBOT_AGENT_ACTION_READING_DOCS` | Читает документацию |\n| `IMBOT_AGENT_ACTION_COMPOSING` | Составляет ответ |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftyping \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dialogId\": \"chat123\",\n    \"statusMessageCode\": \"IMBOT_AGENT_ACTION_THINKING\",\n    \"duration\": 30\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftyping \\\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    \"statusMessageCode\": \"IMBOT_AGENT_ACTION_THINKING\",\n    \"duration\": 30\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftyping', {\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    statusMessageCode: 'IMBOT_AGENT_ACTION_THINKING',\n    duration: 30,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftyping', {\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    statusMessageCode: 'IMBOT_AGENT_ACTION_THINKING',\n    duration: 30,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `data.result` | boolean | `true` при успешной отправке |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": true\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**AI-боты:** используйте `statusMessageCode` для информативного статуса. Например, `IMBOT_AGENT_ACTION_ANALYZING` при обработке запроса, затем `IMBOT_AGENT_ACTION_COMPOSING` перед отправкой ответа.\n\n**Автоматическое скрытие:** индикатор исчезает при отправке сообщения ботом или по истечении `duration`.\n\n## Смотрите также\n\n- [Управление полем ввода](\u002Fdocs\u002Fbots\u002Fui\u002Ftext-field)\n- [Отправить сообщение](\u002Fdocs\u002Fbots\u002Fmessages\u002Fsend)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","\n## Управление полем ввода\n\n`POST \u002Fv1\u002Fbots\u002F:botId\u002Ftext-field`\n\nВключает или отключает поле ввода текста в чате с ботом. Полезно, если бот принимает ввод только через клавиатуру (кнопки).\n\n## Поля запроса (body)\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `dialogId` | string | да | ID диалога: числовой ID пользователя для личных, `chatXXX` для групповых |\n| `enabled` | boolean | да | `true` — включить поле ввода, `false` — отключить |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftext-field \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"dialogId\": \"chat123\", \"enabled\": false }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftext-field \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"dialogId\": \"chat123\", \"enabled\": false }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftext-field', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ dialogId: 'chat123', enabled: false }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ftext-field', {\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({ dialogId: 'chat123', enabled: false }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `data.result` | boolean | `true` при успешном изменении |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": true\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- [Индикатор набора](\u002Fdocs\u002Fbots\u002Fui\u002Ftyping)\n- [Клавиатура](\u002Fdocs\u002Fbots\u002Fmessages\u002Fkeyboard)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n"]