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

Создать API-ключ

POST /v1/keys

Создаёт личный API-ключ на указанном портале от имени владельца менеджмент-ключа. Поля передаются плоско в корне JSON.

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

Поле Тип Обяз. Описание
ПолеportalId Типstring Обяз.да ОписаниеИдентификатор портала. Список: GET /v1/portals. Владелец менеджмент-ключа должен состоять в этом портале
Полеname Типstring Обяз.да ОписаниеНазвание ключа, до 255 символов. Строка только из пробелов не принимается
Полеscopes Типarray Обяз.да ОписаниеСкоупы нового ключа, хотя бы один. Без exactScopes: true к ним добавляются четыре платформенных права — см. ниже
ПолеexactScopes Типboolean Обяз.нет Описаниеtrue — сохранить ровно перечисленные права, без четырёх платформенных. По умолчанию false
Полеmode Типstring Обяз.нет ОписаниеРежим доступа ключа: READWRITE или READONLY. Без поля действует режим новых ключей, заданный на портале
ПолеipWhitelist Типarray Обяз.нет ОписаниеРазрешённые IP-адреса. Без поля или с пустым массивом — без ограничения
ПолеexpiresAt Типstring | null Обяз.нет ОписаниеДата окончания срока действия (ISO 8601). Без поля или null — бессрочный
ПолеrateLimit Типnumber | null Обяз.нет ОписаниеПринимается только null. Число от 1 до 100 000 отклоняется с 403 RATE_LIMIT_ADMIN_ONLY, число вне этого диапазона — с 400 VALIDATION_ERROR
Полеbilling Типstring Обяз.нет ОписаниеПринимается только wallet, оно же значение по умолчанию. Ключи, оплачиваемые подпиской Cowork/Code, выдаются в кабинете платформы Вайбкод — см. Свой агент на подписке

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

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

Нужен ключ ровно с перечисленными правами — передайте exactScopes: true. Тело {"portalId": "…", "name": "Только хранилище", "scopes": ["crm", "vibe:storage"], "exactScopes": true} выпустит ключ только с crm и vibe:storage, и на POST /v1/infra/servers и вызовы AI он ответит 403. Права такого ключа окончательные: платформа не расширяет их во время запросов, поэтому GET /v1/me вернёт ровно то, что сохранено при выпуске.

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

Примеры

Запрос принимает только менеджмент-ключ — см. Ограничения.

curl — менеджмент-ключ

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/keys" \
  -H "X-Api-Key: YOUR_MANAGEMENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "portalId": "0d9f7744-f853-47c7-b06e-6f61f9dd1b7f",
    "name": "Выгрузка сделок",
    "scopes": ["crm", "task"]
  }'

JavaScript — менеджмент-ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/keys', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_MANAGEMENT_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    portalId: '0d9f7744-f853-47c7-b06e-6f61f9dd1b7f',
    name: 'Выгрузка сделок',
    scopes: ['crm', 'task'],
  }),
})

const { success, data } = await res.json()
// Значение ключа приходит один раз — сохраните его в хранилище секретов
const apiKey = data.rawKey
console.log('Создан ключ:', data.id, data.scopes)

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata.id Типstring ОписаниеИдентификатор записи ключа. Его принимают GET /v1/keys/:id, PATCH /v1/keys/:id, DELETE /v1/keys/:id и POST /v1/keys/:id/rotate
Полеdata.name Тип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.expiresAt Типstring | null ОписаниеДата окончания срока действия (ISO 8601), null — бессрочный
Полеdata.rateLimit Типnumber | null ОписаниеИндивидуальный лимит запросов к AI-эндпоинтам, null — общий лимит платформы
Полеdata.status Типstring ОписаниеСтатус ключа, у нового ключа ACTIVE
Полеdata.lastUsedAt Типstring | null ОписаниеДата последнего запроса этим ключом (ISO 8601), у нового ключа null
Полеdata.createdAt Типstring ОписаниеДата создания (ISO 8601)
Полеdata.updatedAt Типstring ОписаниеДата последнего изменения (ISO 8601)
Полеdata.accessMode Типstring ОписаниеREADWRITE или READONLY
Полеdata.totalDefault Типboolean | null ОписаниеПриходит ли meta.total в списках, запрошенных этим ключом. null — действует настройка платформы
Полеdata.issuedVia Типstring | null ОписаниеКанал, которым выписан вебхук ключа: per-portal и cloud-shared — модуль-коннектор на портале, dev_key — ключ разработчика владельца, legacy — регистрация через Битрикс24 Network, none — вебхук не заводился, у ключа только права vibe:*
Полеdata.rawKey Типstring ОписаниеПолное значение ключа. Приходит только в этом ответе — сохраните его сразу

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

JSON
{
  "success": true,
  "data": {
    "id": "3c1f6a52-8e4b-4d07-9a1e-5b2d7f0c6e91",
    "name": "Выгрузка сделок",
    "type": "APP",
    "userId": "fafa9780-eed7-4d29-b040-2448d924f452",
    "portalId": "0d9f7744-f853-47c7-b06e-6f61f9dd1b7f",
    "clientId": null,
    "scopes": ["crm", "task", "vibe:infra", "vibe:ai", "vibe:search", "vibe:storage"],
    "ipWhitelist": [],
    "expiresAt": null,
    "rateLimit": null,
    "status": "ACTIVE",
    "lastUsedAt": null,
    "createdAt": "2026-10-29T12:23:14.701Z",
    "updatedAt": "2026-10-29T12:23:14.701Z",
    "accessMode": "READWRITE",
    "totalDefault": null,
    "issuedVia": "cloud-shared",
    "rawKey": "vibe_api_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  }
}

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

400 — не передан portalId:

JSON
{
  "success": false,
  "error": {
    "code": "MISSING_PORTAL_ID",
    "message": "Field portalId is required"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодMISSING_PORTAL_ID ОписаниеВ теле запроса не указан portalId
HTTP400 КодVALIDATION_ERROR ОписаниеТело не прошло проверку: нет name или scopes, пустой scopes, неизвестное право, некорректный IP-адрес или дата. Поле и причина — в error.message
HTTP400 КодINVALID_JSON_BODY ОписаниеТело запроса — некорректный JSON
HTTP400 КодBILLING_MODE_NOT_SUPPORTED ОписаниеВ теле передано billing: "subscription"
HTTP400 КодPERSONAL_KEY_WEBHOOK_SCOPES_INVALID ОписаниеВ scopes нет ни одного права на данные. Личный ключ выписывается входящим вебхуком Битрикс24, а права placement, entity и userfieldtype требуют контекста приложения и личному ключу недоступны. Добавьте хотя бы одно право на данные, например crm или user_brief, либо заведите OAuth-приложение для возможностей приложения
HTTP400 КодINVALID_SCOPES ОписаниеЧасть запрошенных прав недоступна на аккаунте Битрикс24
HTTP400 КодPORTAL_NOT_LINKED ОписаниеПортал не подключён к Битрикс24 Network — создать ключ невозможно
HTTP400 КодBOX_NO_DEVELOPER_KEY ОписаниеПортал коробочный, у владельца не настроен ключ разработчика, а в scopes есть права Битрикс24
HTTP402 КодMARKETPLACE_REQUIRED ОписаниеНа портале нет активной подписки BitrixGPT + Маркетплейс. Приходит только там, где доступ к платформе открывает подписка. Условия и ссылка на оформление — в error.details и error.userMessage
HTTP402 КодBY_PAID_ONLY ОписаниеДоступ открывает платный или демо-тариф Битрикс24. Открывает его и платная подписка Битрикс24 Маркет Плюс — в Беларуси она продаётся
HTTP402 КодKZ_PAID_ONLY ОписаниеРегион портала открывает доступ по тарифу: платный или демо-тариф Битрикс24, подписка в регионе не продаётся
HTTP402 КодUZ_PAID_ONLY ОписаниеТо же для региона UZ: платный или демо-тариф Битрикс24, подписка в регионе не продаётся
HTTP402 КодINT_TARIFF_REQUIRED ОписаниеПортал международного сегмента на бесплатном тарифе Битрикс24
HTTP402 КодSELFHOSTED_NOT_AVAILABLE ОписаниеПортал коробочный, а коробочный Битрикс24 на этой установке пока не обслуживается. Покупка тарифа отказ не снимает, обращаться — в поддержку
HTTP402 КодB24_PAID_TARIFF_REQUIRED ОписаниеТариф Битрикс24 на портале бесплатный, а на таком тарифе Битрикс24 закрывает REST при любом состоянии подписки BitrixGPT + Маркетплейс. Поле error.userMessage называет условие доступа. Помогает только переход портала на платный тариф Битрикс24, ссылки на покупку — в error.details.upgradeUrl и error.details.secondaryUpgradeUrl, когда портал их отдаёт. Тариф «Демо» не затронут
HTTP402 КодACCOUNT_FROZEN ОписаниеПлатёжный аккаунт портала заморожен за отрицательный баланс
HTTP403 КодNOT_PORTAL_MEMBER ОписаниеВладелец менеджмент-ключа не состоит в портале с указанным portalId
HTTP403 КодPORTAL_ACCESS_BLOCKED ОписаниеДоступ владельца к порталу отключён: его участие в портале неактивно или запрещено политикой доступа портала
HTTP403 КодPORTAL_TARIFF_UNREADABLE ОписаниеСостояние тарифа аккаунта сейчас подтвердить не удалось. Причина может быть временной (занята очередь проверок, недавняя попытка, истёк отведённый на проверку срок) или в правах ключа. Повторите проверку в кабинете платформы Вайбкод: менеджмент-ключ не привязан к порталу, поэтому /v1/me?refresh=tariff с ним проверку не запускает (запрос с уже существующим ключом нужного аккаунта запускает). Поле error.details.requiredTariffs пустое, покупка не предлагается. Переподключение под главным администратором аккаунта и обращение в поддержку нужны, только если повторная проверка стабильно не помогает
HTTP403 КодPORTAL_SUBSCRIPTION_UNREADABLE ОписаниеСостояние подписки аккаунта сейчас подтвердить не удалось. Причина может быть временной (занята очередь проверок, недавняя попытка, истёк отведённый на проверку срок) или в правах ключа. Повторите проверку в кабинете платформы Вайбкод: менеджмент-ключ не привязан к порталу, поэтому /v1/me?refresh=tariff с ним проверку не запускает (запрос с уже существующим ключом нужного аккаунта запускает). Поле error.details.requiredTariffs пустое, покупка не предлагается. Переподключение под главным администратором аккаунта и обращение в поддержку нужны, только если повторная проверка стабильно не помогает
HTTP403 КодKEY_CREATION_RESTRICTED ОписаниеПолитика портала не разрешает владельцу создавать ключи. Право выдаёт администратор портала — см. Права на создание
HTTP403 КодKEY_POLICY_READONLY_REQUIRED ОписаниеПолитика портала разрешает создавать только ключи с режимом READONLY, а в mode запрошен READWRITE
HTTP403 КодRATE_LIMIT_ADMIN_ONLY ОписаниеВ rateLimit передано число. Индивидуальный лимит через этот эндпоинт не задаётся
HTTP403 КодINFRA_DISABLED_FOR_PORTAL ОписаниеВ scopes явно запрошено право vibe:infra, а администратор портала выключил работу с серверами. Ключ не создаётся. Запрос без этого права проходит и на закрытом портале
HTTP403 КодSCOPE_NOT_AVAILABLE_ON_PORTAL ОписаниеВ scopes есть право, которое на этом портале не включено. Список таких прав — в error.message
HTTP403 КодONEC_ACCESS_REQUIRED ОписаниеВ scopes запрошено право vibe:onec, а у владельца ключа нет доступа к 1С. Доступ к 1С выдаёт администратор портала. Ключ не создаётся. Если проверить доступ не удалось, право выдаётся
HTTP403 КодKEY_STORAGE_SCOPE_REQUIRES_PERSONAL_KEY ОписаниеВ scopes явно запрошено право vibe:storage, а менеджмент-ключ не подтверждён как личный ключ владельца. Отказ приходит и с exactScopes: true. Менеджмент-ключ, созданный в личном кабинете, этот отказ не получает
HTTP403 КодB24_MARKET_SUBSCRIPTION_REQUIRED ОписаниеНа аккаунте нет действующей подписки маркетплейса, и вебхук не выписывается. Ссылка на оформление — в error.details.upgradeUrl. На облачном аккаунте с прочитанным бесплатным тарифом Битрикс24 этот код не приходит: там отвечает B24_PAID_TARIFF_REQUIRED. Коробочный аккаунт эта замена не затрагивает
HTTP403 КодB24_MARKET_TRIAL_USED ОписаниеПробный период подписки маркетплейса израсходован — нужна платная подписка. Ссылка на оформление — в error.details.upgradeUrl. На облачном аккаунте с прочитанным бесплатным тарифом Битрикс24 этот код не приходит: там отвечает B24_PAID_TARIFF_REQUIRED. Коробочный аккаунт эта замена не затрагивает
HTTP403 КодINT_TARIFF_REQUIRED ОписаниеТот же отказ по подписке в регионе, где доступ определяется платным тарифом Битрикс24. Ссылки на оформление нет: подписка там не продаётся
HTTP403 КодB24_INSUFFICIENT_SCOPE ОписаниеКлючу разработчика владельца не хватает прав на аккаунте. Переподключите аккаунт, чтобы ключ разработчика выписался заново
HTTP403 КодB24_ACCESS_DENIED ОписаниеБитрикс24 не выдал вебхук по правам сотрудника
HTTP403 КодCONNECTOR_KEY_ISSUE_FORBIDDEN ОписаниеАккаунт запрещает этому сотруднику выписывать ключи. Право выдаёт администратор аккаунта — см. Права на создание
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеМенеджмент-ключ в режиме «только чтение»
HTTP403 КодMANAGEMENT_SCOPE_REQUIRED ОписаниеУ менеджмент-ключа нет скоупа vibe:mgmt:keys
HTTP409 КодCONNECTOR_MODULE_NOT_INSTALLED ОписаниеМодуль-коннектор на аккаунте не установлен, выписать ключ через него нельзя. Повтор без установки модуля не поможет
HTTP410 КодSTALE_DEVELOPER_KEY ОписаниеКлюч разработчика владельца недействителен и автоматически не перевыпускается. Переподключите аккаунт
HTTP502 КодCONNECTOR_PLAN_REQUIRED ОписаниеТариф аккаунта Битрикс24 не включает Вайбкод, и предлагать нечего — коробочный аккаунт, аккаунт уже на платном тарифе, нераспознанный регион. Текст причины для человека — в error.userMessage. Повтор не поможет, пока тариф не сменён
HTTP502 КодCONNECTOR_REST_UNAVAILABLE ОписаниеБитрикс24 отказал в выписке, а управляемого решения нет: подписка или пробный период аккаунта по данным платформы действуют. Исходная причина — в error.details.reason, error.details.retryable: true говорит, что состояние временное. Предложения оформить подписку в ответе нет: оформлять нечего. Свежее чтение подписки перед ответом платформа не гарантирует
HTTP502 КодCONNECTOR_KEY_ISSUE_FAILED ОписаниеДругой отказ модуля-коннектора или недоступность его транспорта. Исходная причина — в error.details.reason
HTTP502 КодCONNECTOR_KEY_ISSUE_RESPONSE_LOST ОписаниеОтвет модуля-коннектора потерян, и вебхук на портале мог уже появиться. Не повторяйте выписку сразу
HTTP502 КодRECOVERY_FAILED ОписаниеПеревыпуск ключа разработчика не удался, состояние временное — повторите запрос
HTTP502 КодDEVKEY_MINT_FAILED ОписаниеДругой отказ выписки через ключ разработчика. Диагностика — в error.details.b24Code и error.details.b24Status
HTTP502 КодBITRIX_UNAVAILABLE ОписаниеБитрикс24 не зарегистрировал входящий вебхук: не ответил или отказал без названной причины. Во втором случае ответ несёт error.details.incidentCode — шестисимвольный код обращения, по которому поддержка находит запись в журнале
HTTP503 КодNETWORK_DEVKEY_REQUIRED ОписаниеКлюч разработчика владельца ещё не выдан, а выписка на этом портале идёт только через него. Текст для человека — в error.userMessage
HTTP503 КодCONNECTOR_KEY_ISSUE_TIMEOUT ОписаниеМодуль-коннектор не ответил вовремя, и вебхук на портале мог уже появиться. Не повторяйте выписку сразу
HTTP401 КодWRONG_KEY_TYPE ОписаниеЗапрос отправлен ключом портала — личным vibe_api_ или ключом авторизации vibe_app_. Эндпоинт принимает только менеджмент-ключ
HTTP401 КодKEY_INACTIVE ОписаниеМенеджмент-ключ отозван или заблокирован
HTTP401 КодKEY_EXPIRED ОписаниеСрок действия менеджмент-ключа закончился
HTTP401 КодINVALID_API_KEY ОписаниеКлюч с переданным значением не найден
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key

Отказы OWNER_DELETED, OWNER_BLOCKED, ACCOUNT_PENDING_ERASURE и B24_USER_DELETED зависят от аккаунта владельца ключа — см. Состояние аккаунта владельца.

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

Вторая проверка идёт позже, и область у неё шире: сам Битрикс24 отказывает в выписке, потому что тариф аккаунта не включает Вайбкод. Она срабатывает на всём, что выписывает ключ, — на создании, на перевыпуске, на автоматическом восстановлении ключа и на передаче владения. Там, где доступ продаётся, ответ — 402 с кодом BY_PAID_ONLY, KZ_PAID_ONLY или UZ_PAID_ONLY. Где предлагать нечего — 502 CONNECTOR_PLAN_REQUIRED. Повтор запроса с любым из этих кодов не поможет, пока тариф Битрикс24 не сменён.

Отказы, общие с перевыпуском. Отказы самой выписки приходят и на перевыпуске — какие именно, перечислено в Перевыпустить API-ключ. Тело отказа выписки может нести поле error.reason с точной причиной во внутренней классификации платформы, тогда как error.code остаётся прежним. Разбирайте отказ по error.code, а не по тексту message.

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

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