For AI agents: markdown of this page — /docs-content-en/cowork/limits-reset.md documentation index — /llms.txt

Reset limits with a promotion right

POST /v1/cowork/limits/reset

Spends one right to reset Cowork/Code limits: the usage of all three quota windows on the user's seat — the 5-hour, weekly and monthly windows — is reset to zero. The window boundaries, the date of the next charge and any temporary limit increase stay unchanged.

A right is granted under a platform promotion and stays valid until that promotion ends. The user and the account come from the key binding; there are no path parameters. The operation is irreversible: a spent right cannot be restored.

Request fields (body)

Field Type Required Description
rightId string yes Right ID — limitReset.rights[].id from the subscription summary, from 1 to 64 characters. Pass the first usable right — one with seatAlreadyReset: false: such rights come first in the list, ordered by expiry, soonest first. If there is no usable right, do not show the button. The value serves as the idempotency key: a repeat call with the same rightId does not spend a second right

Examples

The endpoint supports only one authorization method: a Cowork/Code desktop key. A personal key and an application key receive 403 INSUFFICIENT_SCOPE or 403 COWORK_DESKTOP_KEY_REQUIRED.

curl — Cowork/Code desktop key

Terminal
curl -X POST https://vibecode.bitrix24.com/v1/cowork/limits/reset \
  -H "X-Api-Key: YOUR_COWORK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rightId": "cmg2k8x1f0003qz0l7a9b4c2d"}'

JavaScript — Cowork/Code desktop key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/cowork/limits/reset', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_COWORK_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ rightId: 'cmg2k8x1f0003qz0l7a9b4c2d' }),
})

if (!res.ok) {
  const { error } = await res.json()
  // 404 and 409 — re-read the subscription summary and show what it returns.
  console.error(error.code)
} else {
  const { data } = await res.json()
  // alreadyUsed: true — show the regular success screen: the right was spent earlier.
  console.log(`Limits reset: ${data.usedAt}`)
}

Response fields

Field Type Description
success boolean true both when a right is spent and on a repeat call
data.rightId string Right ID from the request
data.usedAt string When the right was spent (ISO 8601). On a repeat call — the moment it was first spent
data.alreadyUsed boolean true — the right was spent earlier, and this call did not reset the usage. false — this call reset the usage

Response example

JSON
{
  "success": true,
  "data": {
    "rightId": "cmg2k8x1f0003qz0l7a9b4c2d",
    "usedAt": "2026-10-02T09:15:42.118Z",
    "alreadyUsed": false
  }
}

Error response example

409 — the right's promotion has ended or the right was revoked:

JSON
{
  "success": false,
  "error": {
    "code": "COWORK_LIMIT_RESET_RIGHT_EXPIRED",
    "message": "The limit-reset right is no longer available: its promotion has ended or the right was revoked."
  }
}

Errors

HTTP Code Description
400 INVALID_BODY The body has no string field rightId; the field is empty or longer than 64 characters; or the body contains a field the endpoint does not accept
400 INVALID_JSON_BODY A body was sent, but it does not parse as JSON
401 MISSING_API_KEY The X-Api-Key header is missing
401 INVALID_API_KEY The key is not recognized — no such key exists on the platform
401 KEY_INACTIVE The key has been revoked or disabled
401 KEY_EXPIRED The key has expired
402 ACCOUNT_FROZEN The account is frozen for debt. The right was not spent: after the balance is topped up, the right can be used until the promotion ends
403 INSUFFICIENT_SCOPE The key lacks the vibe:cowork scope
403 COWORK_DESKTOP_KEY_REQUIRED The key belongs to another class: a personal key, an application key, an agent seat key or a project deploy key
403 KEY_NOT_BOUND_TO_USER The key is not bound to an account user
403 WRITE_BLOCKED_READONLY_KEY The key was issued as read-only
403 COWORK_LIMIT_RESET_DISABLED Limit reset with a promotion right is not enabled for the account. In this case, the subscription summary has no limitReset block either
404 COWORK_LIMIT_RESET_RIGHT_NOT_FOUND The user has no right with this ID
409 COWORK_LIMIT_RESET_RIGHT_EXPIRED The right's promotion has ended or was terminated early, or the right was revoked
409 COWORK_LIMIT_RESET_SEAT_NOT_ACTIVE The user's seat is not active: it is paused, cancelled or waiting for a new owner. The right was not spent
409 COWORK_LIMIT_RESET_SEAT_ALREADY_RESET This seat was already reset under the same promotion — for example, it was handed over by a colleague who reset the limits before the handover. The right was not spent
429 RATE_LIMITED The platform-wide limit is 10 requests per minute. The effective value for your key is returned in the x-ratelimit-limit header — it is lower than the platform-wide limit because that limit is divided across replicas. Retry the request after a pause
503 COWORK_FEATURE_DISABLED Cowork/Code is disabled at the platform level

The full list of common API errors — Errors.

Known specifics

rightId is the idempotency key, so retry a network failure with the same value. A repeat call after a successful spend returns 200 with alreadyUsed: true and the moment of the first spend — show the regular success screen. Retry a network failure or a 5xx response, except 503 COWORK_FEATURE_DISABLED, up to three times with the same rightId and a random delay. Do not retry 400, 401 or 403.

After 404 or 409, re-read the subscription summary. The right may have expired or been revoked between polls, or the seat may have stopped being active. The summary shows what is left and the next right, if there is one.

The response does not include quota percentages. After a successful reset, re-read the full state and the subscription summary: the usage of the three windows is already zero, and the exhaustion flag is cleared.

The limitReset block may be absent. It arrives in the summary and the full state only when limit reset with a promotion right is enabled for the account. No block means no capability: do not show the button.

Only a desktop key can spend a right. An agent seat key sees the rights block but cannot spend a right: a reset is a one-off action by a person in front of the screen.

A right is bound to the user in the account, not to the tier. Changing the tier and pausing or resuming the subscription do not affect the right, but it can be spent only on an active seat.

See also