Для AI-агентов: markdown этой страницы — /docs-content/cowork/me.md индекс документации — /llms.txt
Сводка по подписке Cowork/Code
GET /v1/cowork/me
Возвращает краткое состояние подписки Cowork/Code: тариф, состояние подписки и расход трёх окон квоты в процентах. Облегчённый вариант полного состояния — без рекомендаций и каталога тарифов.
Примеры
curl — личный ключ
curl https://vibecode.bitrix24.tech/v1/cowork/me \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl https://vibecode.bitrix24.tech/v1/cowork/me \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
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-приложение
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 может не быть вовсе — проверяйте наличие: блок приходит, когда сброс лимитов по праву акции включён для аккаунта. Нет ключа — нет и возможности.
Пример ответа
{
"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 — подписка не активирована:
{
"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
- Выгодные часы в подписке Cowork/Code
- Cowork/Code
- Лимиты и оптимизация
- Ошибки
Выбор демо до активации
При доступном предложении приложение Cowork/Code показывает условия из demoOffer и передаёт выбор пользователя ключом десктопа.