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

Сводка по подписке Cowork/Code

GET /v1/cowork/me

Возвращает краткое состояние подписки Cowork/Code: тариф, состояние подписки и расход трёх окон квоты в процентах. Облегчённый вариант полного состояния — без рекомендаций и каталога тарифов.

Примеры

curl — личный ключ

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

curl — OAuth-приложение

Terminal
curl https://vibecode.bitrix24.tech/v1/cowork/me \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/cowork/me', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

if (!res.ok) {
  const { error } = await res.json()
  console.error(error.code, error.message)
} else {
  const { tier, quotaPct } = await res.json()
  console.log(`Тариф ${tier}: месяц ${quotaPct.month}%, неделя ${quotaPct.week}%, 5ч ${quotaPct.fiveHour}%`)
}

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/cowork/me', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const me = await res.json()

Поля ответа

Поле Тип Описание
Полеportal Типobject ОписаниеПортал Битрикс24, к которому относятся тариф и квота в ответе. Ключ привязан к одному порталу навсегда, а у человека с несколькими порталами на каждом своя подписка. Приходит в каждом успешном ответе
Полеportal.id Типstring ОписаниеИдентификатор портала на платформе Вайбкод. Совпадает с portalId в самоописании ключа
Полеportal.domain Типstring или null ОписаниеДомен портала. null приходит, только если записи портала на платформе уже нет
Полеportal.isPartner Типboolean ОписаниеПризнак партнёрского (NFR) аккаунта Битрикс24. Есть у бесплатных и платных мест. false, если запись аккаунта отсутствует или удалена.
Полеb24Credentials Типobject ОписаниеЕсть ли у ключа доступ к данным портала Битрикс24. Ответ — в поле ready. При ready: false дополнительно приходит reason, а для тарифных причин могут прийти paywallCode и upgradeUrl. Поле hint приходит, когда состояние доступа стоит перечитать. Блока нет у ключа приложения и у ключа без скоупов Битрикс24 — там признак неприменим. Значения reason и что делать по каждому — Коды ошибок
Полеb24Credentials.ready Типboolean Описаниеtrue — ключ может вызывать методы Битрикс24, false — не может, и любой запрос к данным портала ответит 401 TOKEN_MISSING
Полеtier Типstring ОписаниеТекущий тариф: FREE, PRO, MAX, ULTRA
Полеstate Типstring ОписаниеСостояние подписки: ACTIVE, PAUSED, CANCELLED, PARKED. Доступ к Cowork/Code даёт только ACTIVE, поэтому незнакомое значение тоже означает, что доступа нет
ПолеquotaPct.fiveHour Типnumber Описание5-часовое окно, использование в процентах (целое 0–100)
ПолеquotaPct.week Типnumber ОписаниеНедельное окно, использование в процентах (целое 0–100)
ПолеquotaPct.month Типnumber ОписаниеМесячное окно, использование в процентах (целое 0–100)
ПолеresetAt.fiveHour Типstring ОписаниеВремя сброса 5-часового окна (ISO 8601)
ПолеresetAt.week Типstring ОписаниеВремя сброса недельного окна (ISO 8601)
ПолеresetAt.month Типstring ОписаниеВремя сброса месячного окна — конец расчётного периода (ISO 8601)
Полеcompletion.phase Типstring ОписаниеФаза пятичасового окна: normal, landing (сервер просит завершить уже начатый ход), exhausted. Новая задача в фазе landing принимается обычно. Это состояние подписки, не признак отдельного ответа модели
Полеcompletion.resetAt Типstring ОписаниеВремя сброса пятичасового окна (ISO 8601)
ПолеnextChargeAt Типstring или null ОписаниеДата следующего списания, null для тарифа FREE. У места в состоянии PARKED — дата окончания оплаченного срока, списания в неё нет
ПолеoffPeak Типobject ОписаниеВыгодные часы: действует ли скидка сейчас и когда начнётся ближайшая. Состав блока — Выгодные часы в подписке Cowork/Code
Полеrelief Типobject ОписаниеКомпенсации квоты: когда поддержка платформы сбрасывала счётчики расхода и когда выдавала временное увеличение лимитов. Внутри блока оба поля есть всегда
Полеrelief.resetGrantedAt Типstring или null ОписаниеКогда счётчики расхода сбросили, с точностью до часа (ISO 8601). null, если сброса не было, а также если отметке больше 7 суток
Полеrelief.boostGrantedAt Типstring или null ОписаниеКогда выдали временное увеличение лимитов, с точностью до часа (ISO 8601). null, если увеличения не выдавали, если отметке больше 7 суток и если увеличение уже закончилось. Пустое значение не означает, что увеличения нет, — смотрите boostPct
Полеdemo Типobject или null ОписаниеДемо-доступ места: объект, пока он действует, иначе null. Тариф в tier при этом остаётся FREE, а доли в quotaPct уже посчитаны от лимитов демо-доступа. Показывайте тариф как «Demo» с датой окончания и ссылкой на правила использования
ПолеdemoOffer Типobject or null ОписаниеДоступное предложение до активации; null, если недоступно. Само чтение ничего не выдаёт
ПолеdemoOffer.tier Типstring ОписаниеПредлагаемый тариф: PRO, MAX, ULTRA; передайте в принятие
ПолеdemoOffer.durationDays Типinteger ОписаниеДлительность предложения в днях; передайте в принятие
ПолеdemoOffer.rulesUrl Типstring ОписаниеПравила предложения; покажите перед согласием
ПолеdemoOffer.shouldPrompt Типboolean Описаниеtrue — показать выбор; после отказа false, но ручное принятие доступного предложения разрешено
Полеdemo.until Типstring ОписаниеМомент окончания демо-доступа (ISO 8601)
Полеdemo.rulesUrl Типstring ОписаниеАдрес страницы правил использования Cowork/Code
ПолеboostPct Типinteger ОписаниеВременное увеличение лимитов в процентах, выданное поддержкой платформы (100 = лимиты вдвое). 0 — увеличения нет. Все доли quotaPct уже посчитаны с его учётом
ПолеboostExpiresAt Типstring или null ОписаниеМомент, когда временное увеличение закончится. null, если увеличения нет
ПолеlimitReset Типobject ОписаниеПрава сбросить лимиты по акции платформы. Ключа может не быть — см. ниже
ПолеlimitReset.rights Типarray ОписаниеЖивые права пользователя. Первыми идут права, которые можно потратить на текущем месте, внутри — по сроку: раньше сгорающее первым, при равенстве — по id. Пустой массив — прав нет
ПолеlimitReset.rights[].id Типstring ОписаниеИдентификатор права — rightId для сброса лимитов в приложении Cowork/Code
ПолеlimitReset.rights[].expiresAt Типstring ОписаниеКогда право сгорит — окончание его акции (ISO 8601). Показывайте местные дату и время
ПолеlimitReset.rights[].seatAlreadyReset Типboolean Описаниеtrue — текущее место уже сбрасывали по акции этого права, например его передал коллега, который сбросил лимиты. Право живо, но на этом месте его не потратить
ПолеlimitReset.lastUsedAt Типstring или null ОписаниеКогда пользователь последний раз сбросил лимиты по праву, которое ещё в деле: его акция идёт либо по правилу «не суммировать» оно заменило право идущей акции. Иначе null
ПолеlimitReset.accountFrozen Типboolean Описаниеtrue — счёт аккаунта заморожен за долг, и сброс сейчас ответит 402 ACCOUNT_FROZEN

Ключ offPeak приходит в каждом успешном ответе.

Ключи relief, demo, boostPct и boostExpiresAt приходят в каждом успешном ответе. null внутри блока relief — это отдельный смысл, а не отсутствие данных.

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

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

JSON
{
  "portal": {
    "id": "d41f0b93-6c85-42e7-9a13-58bd0e7c2f46",
    "domain": "mycompany.bitrix24.ru",
    "isPartner": false
  },
  "b24Credentials": {
    "ready": true
  },
  "tier": "FREE",
  "state": "ACTIVE",
  "quotaPct": { "fiveHour": 40, "week": 24, "month": 20 },
  "resetAt": {
    "fiveHour": "2026-06-09T17:30:00.000Z",
    "week": "2026-06-12T09:00:00.000Z",
    "month": "2026-07-01T00:00:00.000Z"
  },
  "completion": { "phase": "normal", "resetAt": "2026-06-09T17:30:00.000Z" },
  "nextChargeAt": null,
  "offPeak": {
    "enabled": true,
    "visible": "now",
    "timezone": "Europe/Moscow",
    "currentMultiplier": 0.5,
    "currentWindowEndsInHours": 6,
    "nextAtOrBelow": { "inHours": 1, "multiplier": 0.5 },
    "perModel": false,
    "modelName": null,
    "nowCell": { "dow": 1, "hour": 3 }
  },
  "relief": {
    "resetGrantedAt": "2026-06-09T12:00:00.000Z",
    "boostGrantedAt": null
  },
  "demo": null,
  "demoOffer": null,
  "boostPct": 100,
  "boostExpiresAt": "2026-06-28T00:00:00.000Z"
}

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

404 — подписка не активирована:

JSON
{
  "success": false,
  "error": {
    "code": "COWORK_NOT_ACTIVATED",
    "message": "No active Cowork/Code subscription for this user+portal"
  }
}

Ошибки

HTTP Код Описание
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP403 КодINSUFFICIENT_SCOPE ОписаниеУ ключа нет скоупа vibe:cowork
HTTP404 КодCOWORK_NOT_ACTIVATED ОписаниеПодписка Cowork/Code не найдена для пары пользователь и портал
HTTP500 КодINVALID_TIER_CONFIGURATION ОписаниеКонфигурация тарифов на платформе некорректна
HTTP503 КодCOWORK_FEATURE_DISABLED ОписаниеCowork/Code отключён на уровне платформы

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

Известные особенности

Успешный ответ (200) — это сам объект, без обёртки success. Ошибки приходят в конверте { success: false, error: { code, message } }. Определяйте успех по HTTP-статусу (res.ok).

Эндпоинт отдаёт только проценты. Признака исчерпания (exhausted), серверного времени и рекомендаций здесь нет — для них используйте полное состояние.

PARKED — место без активного владельца. Платное место переходит в это состояние, когда его владелец перестаёт быть активным участником портала, а оплаченный срок ещё не закончился. За такое место ничего не списывается, а тариф и оплаченный срок сохраняются. Администратор портала может передать место другому сотруднику. В течение суток после окончания оплаченного срока место переходит в PAUSED.

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

Пустое relief.boostGrantedAt не означает, что увеличения лимитов нет. Отметка нужна для разового уведомления и видна 7 суток, а само увеличение выдают на срок до 30 суток. Увеличение, выданное больше семи суток назад, отдаёт пустую отметку и при этом продолжает действовать. Действует увеличение или нет, показывает только boostPct.

Значение блока relief совпадает с тем, что отдаёт полное состояние. Отметку, о которой вы уже сообщили пользователю, запоминайте один раз на приложение, а не отдельно по каждому эндпоинту, иначе одна компенсация будет показана дважды. Уведомляйте только когда пришло непустое значение, отличное от запомненного: сервер намеренно переводит отметку в null (закрылось окно видимости, истёк или отозван буст, место передали), и правило «изменилось — покажи» дало бы ложное уведомление на каждом таком переходе.

Блок limitReset — данные для кнопки сброса лимитов. Право тратит приложение Cowork/Code: ключ десктопа выбирает первое пригодное право (seatAlreadyReset: false), пригодного нет — кнопку не показывать. Значение блока совпадает с тем, что отдаёт полное состояние.

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

Выбор демо до активации

При доступном предложении приложение Cowork/Code показывает условия из demoOffer и передаёт выбор пользователя ключом десктопа.