Для 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

Terminal
curl https://vibecode.bitrix24.tech/v1/cowork/applications/defaults \
  -H "X-Api-Key: YOUR_COWORK_KEY"

JavaScript — ключ Cowork/Code

javascript
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 остаются достоверными, они считаются из политики аккаунта

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

JSON
{
  "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:

JSON
{
  "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 — нет, он часть контракта.

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