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

Менеджмент-ключи

Менеджмент-ключи (vibe_live_) не привязаны к одному порталу и предназначены для автоматизации администрирования: управления API-ключами, просмотра порталов и работы с обратной связью.

Отличие от ключей портала

Возможность API-ключ (vibe_api_) Ключ авторизации (vibe_app_) Менеджмент-ключ (vibe_live_)
Привязка к порталу Да (один портал) Да (один портал) Нет (все порталы пользователя)
Доступ к сущностям Битрикс24 (deals, tasks и др.) Да Да Нет
Управление API-ключами Нет Нет Да
Просмотр списка порталов Нет Нет Да
Работа с обратной связью Только свои тикеты Только свои тикеты Все тикеты платформы
Справочник API (/v1/guide) Отфильтрован по скоупам Отфильтрован по скоупам Полный (все сущности)

Скоупы менеджмент-ключа

Каждый менеджмент-ключ создаётся с одним или несколькими скоупами. Без нужного скоупа конкретный эндпоинт возвращает 403 MANAGEMENT_SCOPE_REQUIRED — даже если эндпоинт в принципе доступен менеджмент-ключам.

Скоуп Открывает
vibe:mgmt:keys /v1/keys (список, создание, изменение, удаление, перевыпуск)
vibe:mgmt:portals /v1/portals
vibe:mgmt:feedback /v1/feedback (список тикетов, чтение, обновление, комментарии)

Эндпоинты /v1/me, /v1/guide и /v1/openapi.json доступны любому менеджмент-ключу без отдельного скоупа.

При создании ключа выбирайте только нужные скоупы — если ключ предназначен только для управления API-ключами, скоуп vibe:mgmt:feedback ему не нужен.

Состояние аккаунта владельца

Менеджмент-ключ действует от лица своего владельца, поэтому состояние его аккаунта проверяется на каждом эндпоинте контура — и на чтении, и на записи. Проверка идёт раньше проверки скоупа, поэтому эти коды приходят даже там, где нужного скоупа у ключа нет.

HTTP Код Когда возвращается
403 OWNER_DELETED Аккаунт владельца ключа удалён
403 OWNER_BLOCKED Владелец ключа заблокирован или больше не активен на портале
503 ACCOUNT_PENDING_ERASURE Владелец запросил удаление своих данных — до конца срока отмены ключ заморожен. В ответе заголовок Retry-After: 3600. Отмена запроса возвращает ключу работу, перевыпуск не нужен
409 B24_USER_DELETED Владелец ключа больше не активный сотрудник целевого аккаунта Битрикс24 — выписать ключ на него нельзя. Проверяется на выпуске (POST /v1/keys) и перевыпуске (POST /v1/keys/:id/rotate), то есть там, где у нового ключа появляется владелец. Отличается от NOT_PORTAL_MEMBER: тот приходит, когда владельца в аккаунте нет вовсе, а этот — когда запись есть, но сотрудник удалён или деактивирован

Заморозка распространяется на все операции контура, включая выпуск, перевыпуск и удаление API-ключей.

Доступные эндпоинты

При обращении к эндпоинтам сущностей Битрикс24 возвращается 403 MANAGEMENT_KEY_NO_ENTITY_ACCESS.

`GET /v1/me` — самоописание ключа

Возвращает тип ключа, список порталов с ролями и количеством ключей, перечень доступных эндпоинтов и быстрый старт.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/me

Ответ:

JSON
{
  "success": true,
  "data": {
    "type": "management",
    "keyPrefix": "vibe_live_abc123",
    "keySuffix": "f9d2",
    "expiresAt": null,
    "scopes": [],
    "capabilities": [
      "GET https://vibecode.bitrix24.tech/v1/me — this endpoint (management key self-description)",
      "GET https://vibecode.bitrix24.tech/v1/guide — full API reference (portal-agnostic)",
      "GET https://vibecode.bitrix24.tech/v1/keys — list APP keys for a portal (requires portalId query param)",
      "POST https://vibecode.bitrix24.tech/v1/keys — create APP key (requires portalId in body)",
      "GET https://vibecode.bitrix24.tech/v1/portals — list your portals",
      "GET https://vibecode.bitrix24.tech/v1/feedback — list ALL platform feedback (management key sees everything)",
      "GET https://vibecode.bitrix24.tech/v1/feedback/:id — feedback details including comment thread",
      "PATCH https://vibecode.bitrix24.tech/v1/feedback/:id — update status/resolution (legacy, prefer /comments)",
      "POST https://vibecode.bitrix24.tech/v1/feedback/:id/comments — post a team comment, changes status"
    ],
    "portals": [
      {
        "id": "portal-uuid",
        "domain": "mycompany.bitrix24.ru",
        "status": "ACTIVE",
        "role": "ADMIN",
        "appKeyCount": 3
      }
    ],
    "totalAppKeys": 3,
    "quickstart": {
      "step1": "GET https://vibecode.bitrix24.tech/v1/portals — list available portals",
      "step2": "GET https://vibecode.bitrix24.tech/v1/keys?portalId=<id> — list APP keys for a portal",
      "step3": "POST https://vibecode.bitrix24.tech/v1/keys { portalId, name, scopes } — create an APP key",
      "step4": "Use the APP key for entity API calls (deals, tasks, etc.)"
    },
    "docs": "https://vibecode.bitrix24.tech/docs/management-keys"
  }
}

В ответе также присутствует объект feedback со справочником эндпоинтов, статусов и фильтров для работы с тикетами обратной связи — он используется AI-моделями для автоматической обработки тикетов.

`GET /v1/guide` — справочник API

Возвращает полный справочник API со всеми сущностями (без фильтрации по скоупам). Используется для подбора нужных эндпоинтов перед созданием API-ключей.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/guide

`GET /v1/openapi.json` — OpenAPI-спецификация

Возвращает машинно-читаемую OpenAPI 3.1 спецификацию платформы Вайбкод.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/openapi.json

`GET /v1/portals` — список порталов

Возвращает порталы, к которым пользователь имеет доступ, с ролью на каждом портале.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/portals

`GET /v1/keys` — список API-ключей портала

Параметр portalId обязателен. Возвращаются ключи владельца менеджмент-ключа на указанном портале — и личные vibe_api_, и ключи авторизации vibe_app_. Значения ключей не возвращаются: свой ключ узнаётся в списке по полям prefix и suffix.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  "https://vibecode.bitrix24.tech/v1/keys?portalId=portal-uuid"
Поле Тип Описание
data[].id string Идентификатор записи ключа. Его принимают эндпоинты, которым нужен ключ как ресурс — например targetApiKeyId в переносе владения ботом
data[].name string Название ключа, заданное при создании
data[].prefix string Начало значения ключа
data[].suffix string Последние символы значения ключа
data[].type string Тип ключа. У ключей портала — APP
data[].userId string Идентификатор владельца ключа
data[].portalId string Идентификатор портала
data[].clientId string | null Идентификатор OAuth-приложения у ключа авторизации, null у личного ключа
data[].scopes array Скоупы ключа
data[].ipWhitelist array Разрешённые IP-адреса, пустой массив — без ограничения
data[].rateLimit number | null Индивидуальный лимит запросов, null — общий лимит платформы
data[].status string ACTIVE, REVOKED или BLOCKED
data[].accessMode string READWRITE или READONLY
data[].issuedVia string | null Канал, которым выписан вебхук ключа: per-portal и cloud-shared — модуль-коннектор на аккаунте, dev_key — ключ разработчика владельца, legacy — регистрация через Битрикс24 Network, none — вебхук не заводился, у ключа только права vibe:*. null у ключей, выпущенных до появления поля
data[].expiresAt string | null Дата окончания срока действия, null — бессрочный
data[].lastUsedAt string | null Дата последнего запроса этим ключом
data[].createdAt string Дата создания
data[].updatedAt string Дата последнего изменения
JSON
{
  "success": true,
  "data": [
    {
      "id": "3f9a1c20-5e6b-4d18-9a77-0c2b8e4f1d33",
      "name": "Бот техподдержки",
      "prefix": "vibe_api_XXXXXXXXX",
      "suffix": "XXXX",
      "type": "APP",
      "userId": "a02e7b64-91c3-4f5a-8d20-7e1b3c95a4dc",
      "portalId": "d41f0b93-6c85-42e7-9a13-58bd0e7c2f46",
      "clientId": null,
      "scopes": ["imbot"],
      "ipWhitelist": [],
      "rateLimit": null,
      "status": "ACTIVE",
      "accessMode": "READWRITE",
      "issuedVia": "legacy",
      "expiresAt": null,
      "lastUsedAt": "2026-07-29T09:12:44.301Z",
      "createdAt": "2026-07-14T08:03:17.118Z",
      "updatedAt": "2026-07-14T08:03:17.118Z"
    }
  ]
}

Отказы этого запроса:

HTTP Код Когда возвращается
400 MISSING_PORTAL_ID Не передан обязательный параметр portalId
401 WRONG_KEY_TYPE Запрос отправлен ключом портала — список ключей отдаётся только менеджмент-ключу
403 NOT_PORTAL_MEMBER Владелец ключа не состоит в портале с указанным portalId
403 PORTAL_ACCESS_BLOCKED Доступ владельца ключа к этому порталу заблокирован
401 KEY_INACTIVE Менеджмент-ключ отозван или заблокирован
401 KEY_EXPIRED Срок действия менеджмент-ключа закончился
403 MANAGEMENT_SCOPE_REQUIRED У ключа нет скоупа vibe:mgmt:keys

`POST /v1/keys` — создание API-ключа

Создаёт новый API-ключ (vibe_api_) для указанного портала. В теле передаётся portalId, имя и список скоупов. Полный ключ возвращается в поле rawKey один раз — сохраните его сразу.

Terminal
curl -X POST \
  -H "X-Api-Key: vibe_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"portalId": "portal-uuid", "name": "My Key", "scopes": ["crm", "task"]}' \
  https://vibecode.bitrix24.tech/v1/keys

По умолчанию к запрошенным правам добавляются четыре платформенных: vibe:infra, vibe:ai, vibe:search, vibe:storage. Ключ из примера выше получит crm, task и эти четыре.

На портале, где администратор выключил работу с серверами, vibe:infra из этого умолчания снимается молча — ключ выпускается с остальными тремя. Отказ 403 INFRA_DISABLED_FOR_PORTAL приходит только на явно запрошенное право.

Нужен ключ ровно с перечисленным — передайте exactScopes: true:

Terminal
curl -X POST \
  -H "X-Api-Key: vibe_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"portalId": "portal-uuid", "name": "Storage only", "scopes": ["crm", "vibe:storage"], "exactScopes": true}' \
  https://vibecode.bitrix24.tech/v1/keys

Такой ключ получит только crm и vibe:storage, а на POST /v1/infra/servers и вызовы AI ответит 403. Права такого ключа считаются окончательными: платформа не расширяет их на лету, поэтому GET /v1/me вернёт ровно то, что было сохранено при выпуске.

Поле Тип Описание
exactScopes boolean Необязательное, по умолчанию false. true — сохранить ровно перечисленные права, без четырёх платформенных

Дополнительные коды ошибок:

Код HTTP Когда возвращается
MISSING_PORTAL_ID 400 В теле запроса не указан portalId
BILLING_MODE_NOT_SUPPORTED 400 В теле передано billing: "subscription". Ключи, оплачиваемые подпиской Cowork/Code, выдаются только из кабинета платформы Вайбкод — см. Свой агент на подписке
NOT_PORTAL_MEMBER 403 Владелец ключа не состоит в указанном портале
PORTAL_NOT_LINKED 400 Портал не подключён к Битрикс24 Network — создать ключ невозможно
PERSONAL_KEY_WEBHOOK_SCOPES_INVALID 400 В scopes не осталось ни одного права на данные. Ключ портала выписывается входящим вебхуком Битрикс24, а права placement, entity и userfieldtype требуют контекста приложения и персональному ключу недоступны. Добавьте хотя бы одно право на данные, например crm или user_brief, либо заведите OAuth-приложение для возможностей приложения
INVALID_SCOPES 400 Часть запрошенных прав недоступна на аккаунте Битрикс24
INFRA_DISABLED_FOR_PORTAL 403 В scopes явно запрошено право vibe:infra, а администратор портала выключил работу с серверами. Ключ не создаётся. Запрос без этого права проходит и на закрытом портале
ONEC_ACCESS_REQUIRED 403 В scopes запрошено право vibe:onec, а у владельца ключа нет доступа к 1С. Доступ к 1С выдаёт администратор портала. Ключ не создаётся. Если проверить доступ не удалось, право выдаётся
MARKETPLACE_REQUIRED 402 На портале нет активной подписки BitrixGPT + Маркетплейс. Приходит только там, где доступ к платформе открывает подписка
BY_PAID_ONLY 402 Доступ открывает платный или демо-тариф Битрикс24. Открывает его и платная подписка Битрикс24 Маркет Плюс — в Беларуси она продаётся
KZ_PAID_ONLY 402 Регион портала открывает доступ по тарифу: платный или демо-тариф Битрикс24, подписка в регионе не продаётся
UZ_PAID_ONLY 402 То же для региона UZ: платный или демо-тариф Битрикс24, подписка в регионе не продаётся
INT_TARIFF_REQUIRED 402 Портал международного сегмента на бесплатном тарифе Битрикс24
B24_PAID_TARIFF_REQUIRED 402 Тариф Битрикс24 на портале бесплатный, а на таком тарифе Битрикс24 закрывает REST при любом состоянии подписки BitrixGPT + Маркетплейс. Поле userMessage называет условие доступа. Ссылки на оформление в ответе нет — помогает только переход портала на любой платный тариф Битрикс24. Тариф «Демо» не затронут
REST_REGISTRATION_FAILED 400 Битрикс24 отказал в регистрации входящего вебхука и причину не назвал. Ответ несёт error.details.incidentCode — шестисимвольный код обращения, по которому поддержка находит запись в журнале
B24_MARKET_SUBSCRIPTION_REQUIRED 403 На аккаунте нет действующей подписки маркетплейса, и вебхук не выписывается. Ссылка на оформление — в error.details.upgradeUrl. На облачном аккаунте с прочитанным бесплатным тарифом Битрикс24 этот код не приходит: там отвечает B24_PAID_TARIFF_REQUIRED. Коробочный аккаунт подмена не затрагивает
B24_MARKET_TRIAL_USED 403 Пробный период подписки маркетплейса израсходован — нужна платная подписка. Ссылка на оформление — в error.details.upgradeUrl. На облачном аккаунте с прочитанным бесплатным тарифом Битрикс24 этот код не приходит: там отвечает B24_PAID_TARIFF_REQUIRED. Коробочный аккаунт подмена не затрагивает
INT_TARIFF_REQUIRED 403 Тот же отказ по подписке в регионе, где доступ определяется платным тарифом Битрикс24. Ссылки на оформление нет: подписка там не продаётся
PORTAL_TARIFF_UNREADABLE 403 Тариф аккаунта прочитать не удалось, и какого тарифа не хватает, ответ не называет: поле error.details.requiredTariffs пустое, а кнопка ведёт в поддержку. Покупка тарифа отказ не снимает
PORTAL_SUBSCRIPTION_UNREADABLE 403 Состояние подписки аккаунта прочитать не удалось — ключу разработчика не хватает прав на чтение лицензии. Поле error.details.requiredTariffs пустое, покупка отказ не снимает: приложение нужно переподключить под главным администратором аккаунта, чтобы ключ получил нужные права
B24_INSUFFICIENT_SCOPE 403 Ключу разработчика владельца не хватает прав на аккаунте. Переподключите аккаунт, чтобы ключ разработчика выписался заново
B24_ACCESS_DENIED 403 Битрикс24 не выдал вебхук по правам сотрудника
CONNECTOR_KEY_ISSUE_FORBIDDEN 403 Аккаунт запрещает этому сотруднику выписывать ключи. Право выдаёт администратор аккаунта. Подробнее — Права на создание
CONNECTOR_MODULE_NOT_INSTALLED 409 Модуль-коннектор на аккаунте не установлен, выписать ключ через него нельзя. Состояние постоянное — повтор без установки модуля не поможет
B24_USER_DELETED 409 Владелец ключа удалён из аккаунта Битрикс24 — ключ не создаётся
STALE_DEVELOPER_KEY 410 Ключ разработчика владельца недействителен и автоматически не перевыпускается. Переподключите аккаунт
RECOVERY_FAILED 502 Перевыпуск ключа разработчика не удался, состояние временное — повторите запрос
CONNECTOR_REST_UNAVAILABLE 502 Подписка или пробный период действуют, но Битрикс24 отказал в выписке. Исходная причина — в error.details.reason, состояние временное
CONNECTOR_PLAN_REQUIRED 502 Тариф аккаунта Битрикс24 не включает Вайбкод, и предлагать нечего — коробочный аккаунт, аккаунт уже на платном тарифе, нераспознанный регион. Текст причины для человека — в error.userMessage. Состояние постоянное: повтор не поможет, пока тариф не сменён
CONNECTOR_KEY_ISSUE_FAILED 502 Другой отказ модуля-коннектора или недоступность его транспорта. Исходная причина — в error.details.reason
DEVKEY_MINT_FAILED 502 Другой отказ выписки через ключ разработчика. Диагностика — в error.details.b24Code и error.details.b24Status
BITRIX_UNAVAILABLE 502 Битрикс24 не ответил на регистрацию входящего вебхука

Отказы выписки со статусом 403, 409, 410 и 502 из таблицы выше приходят и на перевыпуске POST /v1/keys/:id/rotate — оба метода выписывают ключ одним и тем же путём. Исключения — 403 PORTAL_TARIFF_UNREADABLE и 403 PORTAL_SUBSCRIPTION_UNREADABLE: это исходы проверки доступа портала, а она к перевыпуску не применяется. Со статусом 402 до перевыпуска доходят только отказы самой выписки, описанные ниже вторым абзацем. Проверка доступа портала на перевыпуск не распространяется. Тело такого отказа несёт необязательное поле error.reason с точной причиной в таксономии платформы, тогда как error.code остаётся прежним. Разбирайте отказ по error.code, а не по тексту message.

Пять отказов со статусом 402 приходят от проверки доступа портала. Какой именно придёт, решает не регион лицензии сам по себе, а то, чем платформа открывает доступ на этом портале: где его открывает подписка — MARKETPLACE_REQUIRED, где тариф Битрикс24 — BY_PAID_ONLY, KZ_PAID_ONLY, UZ_PAID_ONLY или INT_TARIFF_REQUIRED. Ещё два исхода той же проверки идут со статусом 403, и оба означают, что платформе нечего назвать: PORTAL_TARIFF_UNREADABLE — тариф аккаунта прочитать не удалось, PORTAL_SUBSCRIPTION_UNREADABLE — не удалось прочитать состояние подписки. Подписочный MARKETPLACE_REQUIRED приходит только тогда, когда подписка прочитана и её нет. Эта проверка касается только выписки нового ключа: перевыпуск POST /v1/keys/:id/rotate, автоматическое восстановление ключа и передача владения ей не подчиняются, а уже выданные ключи продолжают работать.

Вторая проверка идёт позже и область у неё ШИРЕ: сам Битрикс24 отказывает в выписке, потому что тариф аккаунта не включает Вайбкод. Она срабатывает на всём, что реально выписывает ключ, — на создании, на перевыпуске POST /v1/keys/:id/rotate, на автоматическом восстановлении ключа и на передаче владения. Там, где доступ продаётся, ответ — 402 с кодом тарифного пейвола (BY_PAID_ONLY, KZ_PAID_ONLY или UZ_PAID_ONLY); где предлагать нечего — 502 CONNECTOR_PLAN_REQUIRED из таблицы выше. Любой из этих кодов терминален: повтор не поможет, пока тариф Битрикс24 не сменён.

Права placement, entity и userfieldtype не сохраняются и на успешном пути: у созданного персонального ключа они не вернутся в scopes ответа, даже если были в запросе рядом с правами на данные. userfieldconfig остаётся доступным.

`GET /v1/keys/:id` — данные одного ключа

Возвращает одну запись ключа без его значения. Состав полей тот же, что у GET /v1/keys выше.

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/keys/key-uuid

`PATCH /v1/keys/:id` — обновление ключа

Можно изменить любое из полей ниже (все необязательны, передавайте только то, что меняете):

Поле Тип Описание
name string Имя ключа в личном кабинете
scopes string[] Список скоупов — см. Скоупы
status "ACTIVE" | "REVOKED" Активация или отзыв ключа
mode "READWRITE" | "READONLY" Режим доступа ключа — см. Режим доступа. У ключей Cowork/Code смена режима ограничена — см. таблицу ниже
ipWhitelist string[] Список разрешённых IP-адресов
rateLimit number | null Индивидуальный лимит запросов в секунду
expiresAt ISO-8601 | null Срок действия ключа (null — бессрочный)

Новый список scopes проходит ту же проверку, что и при создании: если после отбрасывания placement, entity и userfieldtype не осталось ни одного права на данные, приходит 400 PERSONAL_KEY_WEBHOOK_SCOPES_INVALID.

Если коробочный портал переехал на новый адрес, а вебхук ключа остался выписан на прежний, правка прав отклоняется: приходит 409 PORTAL_ADDRESS_CHANGED. Запрос к порталу не отправляется, права ключа не меняются ни на платформе Вайбкод, ни в Битрикс24. Переподключите ключ и повторите правку — порядок описан в статье Авторизация, ключи и права.

Ключи, выданные платформой на её собственных эндпоинтах, возвращаются в работу по особым правилам. Ключ, оплачиваемый подпиской, снова становится активным значением status и продлевается полем expiresAt только при открытых проверках выдачи: закрытая проверка отвечает 403 со своим кодом — те же коды проверок выдачи, что и на перевыпуске, их таблица в разделе POST /v1/keys/:id/rotate ниже. Остальные такие ключи — настольного приложения Cowork/Code, агента, проектный ключ для деплоя — здесь не возвращаются в работу вовсе: они выдаются заново там, где выдавались.

Режим ключей Cowork/Code живёт на месте — паре сотрудника и портала, общей для всех его устройств. Поэтому смена mode у ключа настольного приложения здесь не проходит вовсе, а у ключа стороннего агента на подписке ограничена режимом места. Запрос с тем же mode, который шлют ради переименования, изменением не считается и проходит.

Код HTTP Когда возвращается
SYSTEM_KEY_REACTIVATE_FORBIDDEN 403 Запрос переводит в ACTIVE или продлевает срок ключа, который выдаёт платформа на своём эндпоинте: настольного приложения Cowork/Code, агента, проектного ключа для деплоя. В тексте ответа сказано, где именно этот ключ выдаётся заново
INFRA_DISABLED_FOR_PORTAL 403 Новый список scopes добавляет право vibe:infra, которого у ключа не было, а администратор портала выключил работу с серверами. Права ключа не меняются. Проверка считает добавление, а не присутствие права в теле: правка ключа, который это право уже несёт, проходит и на закрытом портале, снятие права разрешено всегда
COWORK_SEAT_KEY_MODE_CABINET_ONLY 403 Запрос меняет mode ключа настольного приложения Cowork/Code. Это режим всего места, и меняется он в кабинете, где видно, что сузится вместе с ним
COWORK_KEY_MODE_ABOVE_SEAT 403 Запрос поднимает mode ключа стороннего агента на подписке Cowork/Code выше режима места. Сначала расширяют место, в его пределах правка проходит
ONEC_ACCESS_REQUIRED 403 Новый список scopes добавляет право vibe:onec, которого у ключа не было, а у владельца ключа нет доступа к 1С. Проверяется доступ владельца, а не того, кто отправил запрос. Ключ без портала это право не получает. Права ключа не меняются. Правка ключа, который это право уже несёт, проходит без проверки

Сужение срока, отзыв и правка остальных полей работают как раньше — это способ остановить ключ, а не выдать его. Обычных ключей кабинета эти проверки не касаются.

Отдельное ограничение для ключа авторизации (vibe_app_): запрос, который меняет mode, status или expiresAt, не выполняется одновременно с другой операцией над ключом того же приложения.

Коды ниже относятся к любому ключу при соответствующей операции; только REISSUE_IN_PROGRESS ограничен ключом авторизации приложения. В частности, отзыв обычного vibe_api_ тоже может вернуть KEY_MANAGES_FOREIGN_SERVER или KEY_OPERATION_IN_PROGRESS.

Код HTTP Когда возвращается
REISSUE_IN_PROGRESS 409 С ключом этого приложения уже идёт другая операция — перевыпуск, изменение или удаление. Ключ не меняется, повторите запрос после её завершения
KEY_NOT_ACTIVE 409 Ключ уже не действует или изменился после начала запроса — например, его отозвали или удалили. Смена mode у отозванного или заблокированного ключа авторизации тоже отвечает этим кодом. Ключ не меняется. Перечитайте его через GET /v1/keys/:id
KEY_MANAGES_FOREIGN_SERVER 409 Ключ управляет живым сервером другого владельца, сервером без владельца или сервером того же владельца на другом портале. Установите владельца и нужный портал сервера, затем перепривяжите его к ключу этого владельца в том же портале и повторите отзыв
KEY_OPERATION_IN_PROGRESS 409 Перенос или отзыв этого ключа ещё выполняется. Повторите запрос после завершения операции
Terminal
curl -X PATCH \
  -H "X-Api-Key: vibe_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"status": "REVOKED"}' \
  https://vibecode.bitrix24.tech/v1/keys/key-uuid

`DELETE /v1/keys/:id` — удаление ключа

Удаляет ключ. Если на ключе есть активные серверы, возвращается 409 KEY_HAS_ACTIVE_SERVERS — серверы нужно удалить первыми. Если ключом управляется агент, управляемый бот или обычный чат-бот, включая отключённую строку Bot Platform, удаление возвращает 409 KEY_HAS_LINKED_AGENT с полями details.linkedAgentCount, details.linkedBotCount (управляемые + обычные чат-боты), списком details.agents и details.bots (до 10 обычных чат-ботов). Для DELETE /v1/bots/:botId берите числовой bitrixBotId из соответствующего элемента details.bots ответа 409.

Ключ, замена которого не завершена, не удаляется: ответ 409 KEY_ROTATION_RECOVERY_REQUIRED. Исключение — новый ключ из ответа 500 на перевыпуске без поля strandedSlots, порядок описан в разделе POST /v1/keys/:id/rotate ниже. Удаление ключа авторизации (vibe_app_) не выполняется одновременно с другой операцией над ключом того же приложения: ответ 409 REISSUE_IN_PROGRESS. Если ключ уже не действует или изменился после начала запроса, ответ 409 KEY_NOT_ACTIVE.

Terminal
curl -X DELETE \
  -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/keys/key-uuid

`POST /v1/keys/:id/rotate` — перевыпуск ключа

Создаёт новый ключ с теми же настройками и оставляет старому переходный период 24 часа. После перевыпуска старый ключ автоматически становится недействительным. Права переносятся с прежнего ключа как есть, новый набор здесь не передаётся.

Заблокированный ключ (status: BLOCKED) тоже перевыпускается — это единственный способ его заменить, разблокировки нет. Блокировка остаётся, переходного периода старый ключ не получает, а его живые токены доступа гасятся, а не переезжают на новый ключ.

Перевыпуск может закончиться ответом 500 — тогда замена отменена, значения нового ключа в ответе нет, но сам новый ключ уже создан. Так бывает в трёх случаях:

  • KEY_ROTATE_REVOKE_FAILED — у заблокированного ключа не подтверждено, что его токены доступа погашены.
  • KEY_ROTATION_REPOINT_FAILED — не подтверждён перенос привязок на новый ключ.
  • KEY_ROTATION_FINALIZE_FAILED — не подтверждено завершение замены.

Идентификатор нового ключа приходит в error.details.orphanKeyId. Поле error.details.strandedSlots появляется, если при отмене что-то не удалось вернуть старому ключу, и перечисляет, что именно. Если поля нет или в списке нет значения previousKeyGrace, старый ключ после отмены сохраняет прежний срок действия. Дальнейшие шаги зависят от поля strandedSlots:

  • Поле strandedSlots есть — обратитесь в поддержку. Не удаляйте новый ключ, пока на него что-то ссылается.
  • Поля strandedSlots нет — удалите новый ключ запросом DELETE /v1/keys/:id с идентификатором из orphanKeyId. После ответа 204 ещё раз перевыпустите старый ключ. Если удаление ответило 409 KEY_ROTATION_RECOVERY_REQUIRED, обратитесь в поддержку.

Пока замена не завершена, перевыпуск и удаление старого и нового ключа отвечают 409 KEY_ROTATION_RECOVERY_REQUIRED, поэтому повтор перевыпуска без этих шагов не пройдёт. Исключение — удаление нового ключа по второму пункту выше.

Если привязка исходного ключа изменилась во время выписки, ответ — 409 KEY_ROTATION_SOURCE_CHANGED. Если ключ удалён, ответ — 404 KEY_NOT_FOUND. Новый ключ в этих двух случаях не создаётся. Перечитайте актуальную карточку и состояние ключа перед новой операцией.

Отказы перевыпуска при незавершённой замене и одновременных операциях:

Код HTTP Когда возвращается
KEY_ROTATION_RECOVERY_REQUIRED 409 Замена этого ключа не завершена: предыдущий перевыпуск закончился ответом 500 или ещё не закончился другой перевыпуск этого же ключа. Отказ относится и к старому, и к новому ключу такой замены. Новый ключ не создаётся. Если ответа 500 не было, а отказ приходит и через несколько минут, обратитесь в поддержку
KEY_ROTATE_REVOKE_FAILED 500 Замена отменена: у заблокированного ключа не подтверждено, что его токены доступа погашены. Порядок действий — выше
KEY_ROTATION_REPOINT_FAILED 500 Замена отменена: не подтверждён перенос привязок на новый ключ. Порядок действий — выше
KEY_ROTATION_FINALIZE_FAILED 500 Замена отменена: не подтверждено завершение замены. Порядок действий — выше
REISSUE_IN_PROGRESS 409 Только ключ авторизации (vibe_app_): с ключом этого приложения уже идёт другая операция — перевыпуск, изменение или удаление. Повторите запрос после её завершения
KEY_NOT_ACTIVE 409 Ключ уже не действует — например, его отозвали. У ключа авторизации (vibe_app_) этот код приходит и тогда, когда ключ удалили или изменили после начала запроса. Новый ключ не создаётся. Перечитайте ключ через GET /v1/keys/:id

Если у прежнего ключа портала остались только права контекста приложения — placement, entity, userfieldtype, — перевыпуск не пройдёт. Набор прав проверяется до обращения к порталу, поэтому на любом аккаунте приходит один и тот же отказ 400 PERSONAL_KEY_WEBHOOK_SCOPES_INVALID. Сначала добавьте прежнему ключу право на данные через PATCH /v1/keys/:id.

Перевыпуск подчиняется требованию подписки маркетплейса наравне с созданием ключа: без действующей подписки приходит 403 B24_MARKET_SUBSCRIPTION_REQUIRED, а в регионах, где доступ определяется платным тарифом Битрикс24, — 403 INT_TARIFF_REQUIRED. Остальные отказы выписки у перевыпуска те же, что у создания, — таблица кодов в разделе POST /v1/keys выше. Не относятся к перевыпуску только четыре отказа со статусом 402: платформенная проверка доступа касается выписки нового ключа. Уже выданные ключи продолжают работать, а перевыпуск возобновляется сразу после активации подписки.

Terminal
curl -X POST \
  -H "X-Api-Key: vibe_live_abc123..." \
  https://vibecode.bitrix24.tech/v1/keys/key-uuid/rotate

Ключи, выданные платформой на её собственных эндпоинтах, перевыпускаются по особым правилам. У ключа, оплачиваемого подпиской, перенос прав не безусловен: перед перевыпуском проходят те же проверки, что и при выдаче такого ключа, и закрытая проверка отвечает 403 со своим кодом. Остальные такие ключи — настольного приложения Cowork/Code, агента, проектный ключ для деплоя — не перевыпускаются здесь вовсе: они выдаются заново там, где выдавались. Прежний ключ во всех этих случаях продолжает работать.

Код HTTP Когда возвращается
SYSTEM_KEY_ROTATE_FORBIDDEN 403 Перевыпускается ключ, который выдаёт платформа на своём эндпоинте: настольного приложения Cowork/Code, агента, проектный ключ для деплоя. В тексте ответа сказано, где именно этот ключ выдаётся заново
COWORK_PLATFORM_DISABLED 403 Cowork/Code отключён на уровне платформы
COWORK_ACCESS_REQUIRED 403 Владельцу ключа доступ к Cowork/Code не открыт
COWORK_EXTERNAL_CLIENTS_DISABLED 403 Администратор портала запретил сторонние клиенты
COWORK_SUBSCRIPTION_INACTIVE 403 Подписка Cowork/Code приостановлена или отменена

Обычных ключей кабинета эти проверки не касаются — они перевыпускаются как раньше. Что умеет ключ подписки и как его выписать — Свой агент на подписке.

`GET /v1/feedback` — список тикетов обратной связи

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

Terminal
curl -H "X-Api-Key: vibe_live_abc123..." \
  "https://vibecode.bitrix24.tech/v1/feedback?status=NEW&page=1&limit=50"

`GET /v1/feedback/:id` — карточка тикета

Возвращает тикет со всей цепочкой комментариев.

`PATCH /v1/feedback/:id` — обновление тикета

Меняет статус и резолюцию тикета.

`POST /v1/feedback/:id/comments` — комментарий к тикету

Добавляет комментарий команды в цепочку и одновременно меняет статус. Используется AI-моделями для ответа пользователю.

Статусы тикетов

Статус Когда применяется
NEW Пользователь только что отправил тикет, никто его ещё не смотрел
REVIEWING Команда взяла тикет в работу, пользователь пока не получает обновлений
AWAITING_USER Команда задала пользователю уточняющий вопрос — ждём ответа (пользователь получает письмо)
NEEDS_REVIEW Пользователь ответил на уточнение — команда читает новый комментарий и решает следующий шаг
RESOLVED Исправление опубликовано в продуктовой среде, пользователь получил уведомление
ARCHIVED Закрыт без правки кода (дубликат, вне темы, не воспроизводится)
WITHDRAWN Автор отозвал тикет сам, разбор не требуется

Ответ пользователя переводит тикет из AWAITING_USER в NEEDS_REVIEW. Решённый тикет (RESOLVED) ответ автора возвращает в работу — статус тоже становится NEEDS_REVIEW, а отметка о закрытии (resolvedAt, resolvedBy) снимается, текст решения при этом сохраняется. На NEW, REVIEWING и NEEDS_REVIEW статус сохраняется, потому что мяч и без того на стороне команды. Поле updatedAt при этом обновляется всегда, поэтому очередь, отсортированная по нему, показывает новые ответы независимо от статуса.

Категории тикетов

BUG, SUGGESTION, DOCS, CHAT, BOTS, OTHER.

Фильтры списка

?status=NEW&category=BUG&portalId=<uuid>&page=1&limit=50. Параметр limit ограничен значением 100.

Быстрый старт

  1. Создайте менеджмент-ключ в личном кабинете (раздел «Менеджмент-ключи»)
  2. Получите список порталов: GET /v1/portals
  3. Посмотрите существующие ключи на нужном портале: GET /v1/keys?portalId=<id>
  4. Создайте API-ключ с нужными скоупами: POST /v1/keys { portalId, name, scopes }
  5. Используйте полученный API-ключ (vibe_api_…) для работы с данными Битрикс24

Ограничения

  • Менеджмент-ключи не могут обращаться к эндпоинтам сущностей Битрикс24 (/v1/deals, /v1/tasks и другим)
  • Для работы с данными используйте API-ключ (vibe_api_) или ключ авторизации (vibe_app_)
  • При попытке обратиться к неподдерживаемому эндпоинту возвращается 403 MANAGEMENT_KEY_NO_ENTITY_ACCESS

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