Для 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. Покажите его: на аккаунте с 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 | Код | Описание |
|---|---|---|
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Ключ не опознан: такой строки на платформе нет |
| 401 | KEY_INACTIVE |
Ключ выключен |
| 401 | KEY_EXPIRED |
Срок действия ключа истёк |
| 402 | ACCOUNT_FROZEN |
Баланс аккаунта исчерпан — пополните счёт. Отказ приходит и на этот читающий эндпоинт: из-под заморозки он не выведен |
| 403 | INSUFFICIENT_SCOPE |
У ключа нет скоупа vibe:cowork |
| 403 | COWORK_HARNESS_KEY_FORBIDDEN |
Вызов сделан ключом стороннего агента, выписанным на подписку. Мастер создания приложений такому ключу недоступен — см. Свой агент на подписке |
| 403 | COWORK_NOT_ACTIVATED |
Нет активной подписки Cowork/Code для пары сотрудник и аккаунт |
| 429 | RATE_LIMITED |
Суммарный лимит платформы — 30 запросов в минуту. Действующее для вашего ключа значение приходит в заголовке x-ratelimit-limit — оно ниже суммарного, поскольку лимит делится между репликами |
| 429 | QUOTA_EXCEEDED |
Исчерпана суточная бесплатная квота вызовов при нулевом балансе на предоплате |
| 503 | 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 — нет, он часть контракта.