Для AI-агентов: markdown этой страницы — /docs-content/cowork/applications-defaults.md индекс документации — /llms.txt
Параметры создания приложения
GET /v1/cowork/applications/defaults
Возвращает всё, что мастеру создания приложения нужно узнать до первого вопроса человеку: наборы прав на выбор, режим доступа будущего ключа, остаток квоты ключей и параметры сервера. Читающий эндпоинт без побочных эффектов — ни приложения, ни ключа он не создаёт, поэтому его можно звать при каждом открытии мастера и перед деплоем, чтобы подтвердить цену.
Скоуп: vibe:cowork (ключ Cowork/Code) | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key
Блок server описывает параметры, которые вы передадите в свой POST /v1/infra/servers. Значения из него идут туда дословно — преобразовывать их не нужно.
Примеры
Эндпоинт принимает только ключ Cowork/Code, поэтому примеров два: ключ без скоупа vibe:cowork получает 403 INSUFFICIENT_SCOPE.
curl — ключ Cowork/Code
curl https://vibecode.bitrix24.tech/v1/cowork/applications/defaults \
-H "X-Api-Key: YOUR_COWORK_KEY"
JavaScript — ключ Cowork/Code
const res = await fetch('https://vibecode.bitrix24.tech/v1/cowork/applications/defaults', {
headers: { 'X-Api-Key': 'YOUR_COWORK_KEY' },
})
const { data } = await res.json()
if (!data.available) {
// Создание приложений отключено — пункт мастера лучше скрыть заранее
return
}
// Наборы прав рисуем по стабильному id, подписи берём из своих словарей
const presets = data.scopePresets.map(p => ({ id: p.id, scopes: p.b24Scopes }))
// Цену показываем, только когда она пришла
const priceKnown = data.server.priceMonthly !== null
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | ОписаниеВсегда true при успехе |
Полеdata.available |
Типboolean | Описаниеfalse — создание приложений выключено на уровне платформы. Скройте пункт мастера: POST /v1/cowork/applications ответит 503 APP_CREATE_DISABLED. Остальные поля приходят полностью и при false |
Полеdata.scopePresets |
Типarray | ОписаниеНаборы прав для шага «какие данные портала нужны приложению» |
Полеdata.scopePresets[].id |
Типstring | ОписаниеСтабильный идентификатор набора — crm, tasks, people. По нему подставляйте свою подпись: платформа подписей не отдаёт |
Полеdata.scopePresets[].b24Scopes |
Типarray | ОписаниеПрава Битрикс24, которые запрашивает набор. Непустой всегда. Эти значения передаются в поле b24Scopes при создании приложения |
Полеdata.mode |
Типstring | ОписаниеРежим доступа, в котором создание приложения выдаст ключ, — READONLY или READWRITE. Это самый узкий из режима, который аккаунт назначает новым ключам, режима вызывающего ключа Cowork/Code и режима места Cowork/Code, если ключ принадлежит месту. Место — это пара «сотрудник и портал», его режим общий для всех устройств сотрудника. Исключение — вызывающий ключ в режиме «только чтение»: поле для него равно READONLY, но, пока включён запрет записи для таких ключей (по умолчанию он включён), создать приложение с таким ключом нельзя — создание отвечает 403 WRITE_BLOCKED_READONLY_KEY раньше остальных проверок и ключа не выдаёт. Режим вызывающего ключа — поле data.accessMode ответа GET /v1/me. В остальных случаях покажите значение: при READONLY приложение, пишущее в CRM, откажет уже после публикации |
Полеdata.keyExpiresInDays |
Типnumber | ОписаниеСрок жизни нового ключа в днях по политике аккаунта |
Полеdata.quota.keysUsed |
Типnumber | ОписаниеСколько мест квоты ключей занято сейчас |
Полеdata.quota.keysLimit |
Типnumber | ОписаниеПользовательская квота ключей, которую разрешил администратор аккаунта. Те же значения приходят в details отказа 409 KEY_LIMIT_REACHED, когда сработал лимит пользователя. Если при создании приложения приходит details.scope: "portal", отказ вызвал отдельный портальный потолок платформы, а не это поле |
Полеdata.server.placement |
Типstring | ОписаниеКуда встанет будущий сервер — galaxy, galaxy-preferred или standalone. Значения разобраны в «Известных особенностях» |
Полеdata.server.serverWillLink |
Типboolean | ОписаниеПривяжется ли созданный вами сервер к карточке этого приложения. Поле отдаётся отдельно, чтобы вам не выводить это из placement |
Полеdata.server.provider |
Типstring | null | ОписаниеИдентификатор провайдера для поля provider при создании сервера. Список: GET /v1/infra/providers |
Полеdata.server.plan |
Типstring | null | ОписаниеИдентификатор тарифа для поля plan. Список: GET /v1/infra/providers/:providerId/plans |
Полеdata.server.region |
Типstring | null | ОписаниеИдентификатор региона для поля region. Список: GET /v1/infra/providers/:providerId/regions |
Полеdata.server.priceMonthly |
Типnumber | null | ОписаниеСтоимость сервера за месяц в единицах currency. null означает «цена не прочитана», а не «бесплатно» |
Полеdata.server.currency |
Типstring | null | ОписаниеЕдиница измерения цены |
Полеdata.warningCodes |
Типarray | ОписаниеКоды предупреждений. Единственный код — SERVER_DEFAULTS_UNAVAILABLE: каталог провайдера прочитать не удалось, поэтому тариф и цена отсутствуют. Поля placement и serverWillLink остаются достоверными, они считаются из политики аккаунта |
Пример ответа
{
"success": true,
"data": {
"available": true,
"scopePresets": [
{ "id": "crm", "b24Scopes": ["crm"] },
{ "id": "tasks", "b24Scopes": ["task", "tasks"] },
{ "id": "people", "b24Scopes": ["user_brief", "department"] }
],
"mode": "READWRITE",
"keyExpiresInDays": 90,
"quota": { "keysUsed": 1, "keysLimit": 10 },
"server": {
"placement": "standalone",
"serverWillLink": true,
"provider": "bitrix-cloud",
"plan": "bc-micro",
"region": "ru-central1-b",
"priceMonthly": 600,
"currency": "Vibes"
},
"warningCodes": []
}
}
Пример ответа при ошибке
403 — нет активной подписки Cowork/Code:
{
"success": false,
"error": {
"code": "COWORK_NOT_ACTIVATED",
"message": "No active Cowork/Code subscription for this user+portal — an application cannot be created."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP401 | КодMISSING_API_KEY |
ОписаниеНе передан заголовок X-Api-Key |
| HTTP401 | КодINVALID_API_KEY |
ОписаниеКлюч не опознан: такой строки на платформе нет |
| HTTP401 | КодKEY_INACTIVE |
ОписаниеКлюч выключен |
| HTTP401 | КодKEY_EXPIRED |
ОписаниеСрок действия ключа истёк |
| HTTP402 | КодACCOUNT_FROZEN |
ОписаниеБаланс аккаунта исчерпан — пополните счёт. Отказ приходит и на этот читающий эндпоинт: из-под заморозки он не выведен |
| HTTP403 | КодINSUFFICIENT_SCOPE |
ОписаниеУ ключа нет скоупа vibe:cowork |
| HTTP403 | КодCOWORK_HARNESS_KEY_FORBIDDEN |
ОписаниеВызов сделан ключом стороннего агента, выписанным на подписку. Мастер создания приложений такому ключу недоступен — см. Свой агент на подписке |
| HTTP403 | КодCOWORK_NOT_ACTIVATED |
ОписаниеНет активной подписки Cowork/Code для пары сотрудник и аккаунт |
| HTTP429 | КодRATE_LIMITED |
ОписаниеСуммарный лимит платформы — 30 запросов в минуту. Действующее для вашего ключа значение приходит в заголовке x-ratelimit-limit |
| HTTP429 | КодQUOTA_EXCEEDED |
ОписаниеИсчерпана суточная бесплатная квота вызовов при нулевом балансе на предоплате |
| HTTP503 | КодCOWORK_FEATURE_DISABLED |
ОписаниеCowork/Code отключён на уровне платформы. Отключение самого мастера сюда НЕ попадает — оно приходит полем available: false со статусом 200 |
Полный список общих ошибок API — Ошибки.
Известные особенности
Три значения placement, а не два. standalone — сервер поднимается отдельной виртуальной машиной, она тарифицируется, и цена в блоке server относится именно к ней. galaxy — сервер обязан встать контейнером внутри общего хоста. galaxy-preferred — контейнер предпочтителен, но при невозможности деплой уходит на отдельную машину. На контейнерном размещении деплой даёт приложение, которое запускается только после первой публикации, поэтому текст после создания говорит «создано, теперь опубликуйте», а не «сервер запускается».
Пустая цена без предупреждения — нормальный ответ на контейнерном размещении. SERVER_DEFAULTS_UNAVAILABLE появляется только при placement: "standalone". При galaxy и galaxy-preferred поля plan, region, priceMonthly и currency могут прийти пустыми, а warningCodes останется пустым массивом: отдельная машина там не создаётся, и тарифицировать нечего. Поэтому решение «показывать цену» принимайте по самому priceMonthly, а не по наличию предупреждения.
Поля блока server пустеют не все сразу. provider определяется раньше, чем читается каталог тарифов, поэтому встречается ответ, где provider заполнен, а plan, region, priceMonthly и currency пусты. Проверяйте каждое поле, которое подставляете в создание сервера, а не одно из них как признак остальных.
Поле image в блоке server отсутствует намеренно — его не нужно передавать. При создании сервера платформа сама подбирает свежий образ операционной системы, если поле не задано. Отдельный запрос к каталогу образов ради этого не нужен, и проверка «каталог неполон» на стороне клиента здесь не требуется.
Значения блока server идут в создание сервера дословно. Преобразования между этим ответом и POST /v1/infra/servers нет: provider, plan и region принимаются в том же виде, в каком пришли.
Ключ десктопа Cowork/Code место в квоте не занимает. В quota.keysUsed идут личные ключи сотрудника и ключи приложений на этом аккаунте, а также ключи агентов и проектные ключи деплоя. Отозванный ключ место освобождает — удалять его не обязательно, достаточно отозвать.
Поля предупреждений у двух ручек разные, и это не опечатка. Здесь приходит только warningCodes, поля warnings в ответе нет вовсе, а у создания приложения есть оба. Один тип под оба ответа не подойдёт.
Состав наборов прав может пополняться. Рисуйте только те id, которые знаете, а незнакомые пропускайте: иначе новый набор появится в интерфейсе строкой без подписи. Состав b24Scopes внутри набора мы можем менять, а id — нет, он часть контракта.