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

CoPilot

Работайте с ИИ-ассистентом Битрикс24 в чатах: откройте черновой чат CoPilot, смените модель и роль ассистента, попросите переписать ответ и оцените его.

Скоуп: im | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key

Черновой чат CoPilot

POST /v1/chats/copilot/draft

Открывает черновой чат CoPilot текущего пользователя. Ответ устроен как загрузка чата: карточка чата, первая страница сообщений, закреплённые сообщения, участники, файлы и блок copilot. Если чернового чата ещё нет, первый вызов его создаёт.

Параметры

Параметров в пути и в строке запроса нет. Любой параметр строки запроса отклоняется с 400 INVALID_PARAMS.

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

Тело необязательно.

Поле Тип Обяз. По умолч. Описание
messageLimit number нет — Сколько сообщений взять на первую страницу. От 1 до 200: значение вне диапазона срезается, переданное и применённое значения — в meta.requestedMessageLimit и meta.appliedMessageLimit
pinLimit number нет — Сколько закреплённых сообщений вернуть. От 1 до 200, переданное и применённое значения — в meta.requestedPinLimit и meta.appliedPinLimit

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

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/chats/copilot/draft \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messageLimit": 20}'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/chats/copilot/draft \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messageLimit": 20}'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/copilot/draft', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ messageLimit: 20 }),
})

const { data } = await res.json()
console.log('Черновой чат:', data.chat.dialogId)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/copilot/draft', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ messageLimit: 20 }),
})

const { data } = await res.json()
console.log('Черновой чат:', data.chat.dialogId)

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.chat object Карточка чернового чата: id, dialogId, name, type, owner, role и другие поля
data.messages array Первая страница сообщений
data.pins array Закреплённые сообщения
data.users array Участники, упомянутые на странице
data.files array Файлы сообщений страницы
data.reactions array Реакции на сообщения страницы
data.copilot object Блок CoPilot
data.copilot.chats array Чаты CoPilot страницы: dialogId, role — код роли, engine — код модели, titleIsCustom
data.copilot.messages array|null Роли CoPilot у сообщений страницы. null, если таких сообщений нет
data.copilot.engines array|null Модели чатов страницы: code, name, supportsReasoning
data.copilot.roles object|null Роли по коду роли: code, name, desc, avatar, default, prompts
data.copilot.aiProvider string Название модели по умолчанию
data.hasPrevPage boolean Есть сообщения старше первой страницы
data.hasNextPage boolean Есть сообщения новее первой страницы
meta.requestedMessageLimit number Переданный messageLimit, когда он вышел за диапазон от 1 до 200
meta.appliedMessageLimit number Применённое значение messageLimit — только если он был приведён к границе
meta.requestedPinLimit number Переданный pinLimit, когда он вышел за диапазон от 1 до 200
meta.appliedPinLimit number Применённое значение pinLimit — только если он был приведён к границе

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

JSON
{
  "success": true,
  "data": {
    "chat": {
      "id": 2001,
      "dialogId": "chat2001",
      "name": "CoPilot",
      "type": "copilot",
      "owner": 5,
      "role": "owner"
    },
    "messages": [
      {
        "id": 9001,
        "chatId": 2001,
        "authorId": 0,
        "date": "2026-09-25T10:00:00+03:00",
        "text": "Здравствуйте! Чем помочь?",
        "params": {}
      }
    ],
    "pins": [],
    "users": [],
    "files": [],
    "reactions": [],
    "copilot": {
      "chats": [
        { "dialogId": "chat2001", "role": "copilot_assistant", "engine": "b24ai", "titleIsCustom": false }
      ],
      "messages": null,
      "engines": [
        { "code": "b24ai", "name": "BitrixGPT 5.5", "supportsReasoning": true }
      ],
      "roles": {
        "copilot_assistant": {
          "code": "copilot_assistant",
          "name": "BitrixGPT",
          "desc": "Готов отвечать на все вопросы в общем формате",
          "avatar": { "small": "", "medium": "", "large": "" },
          "default": true,
          "prompts": []
        }
      },
      "aiProvider": "BitrixGPT 5.5"
    },
    "hasPrevPage": false,
    "hasNextPage": false
  }
}

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

422 — черновой чат CoPilot на портале недоступен:

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

Ошибки

HTTP Код Описание
400 INVALID_PARAMS messageLimit или pinLimit не целое число, передано другое поле тела или параметр строки запроса. Проверяется до обращения к Битрикс24
422 BITRIX_ERROR Битрикс24 отказал. Код портала — в error.b24Code. DRAFT_CHAT_NOT_AVAILABLE — черновой чат на портале выключен
403 BITRIX_ACCESS_DENIED Пользователю нельзя создавать чаты CoPilot — Битрикс24 отказал с кодом ACCESS_DENIED
403 SCOPE_DENIED API-ключ не имеет скоупа im
403 WRITE_BLOCKED_READONLY_KEY Ключ только для чтения — первый вызов создаёт чат
401 TOKEN_MISSING API-ключ не имеет настроенных токенов Битрикс24

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

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

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

Дальше — лента. Более старые сообщения читайте лентой в режиме v2 по data.chat.dialogId.

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