[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-infra\u002Faccess-tokens\u002Fdelete":3,"docs-tabs-infra\u002Faccess-tokens\u002Fdelete":6},{"content":4,"lastmod":5},"\n## Отозвать токен\n\n`DELETE \u002Fv1\u002Finfra\u002Fservers\u002F:id\u002Faccess-tokens\u002F:tokenId`\n\nОтзывает токен досрочно. Новые переходы по `share-url` и вызовы с `api-bearer` блокируются немедленно.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `id` | path | string (UUID) | да | ID BLACKHOLE-сервера |\n| `tokenId` | path | string | да | ID токена из [`POST \u002Faccess-tokens`](.\u002Fcreate.md) или [`GET \u002Faccess-tokens`](.\u002Flist.md) |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X DELETE \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002FSERVER_ID\u002Faccess-tokens\u002FTOKEN_ID\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X DELETE \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002FSERVER_ID\u002Faccess-tokens\u002FTOKEN_ID\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002F${serverId}\u002Faccess-tokens\u002F${tokenId}`,\n  {\n    method: 'DELETE',\n    headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n  }\n)\n\u002F\u002F 204 No Content — тело ответа отсутствует\nif (res.status !== 204) {\n  const { error } = await res.json()\n  throw new Error(error.code)\n}\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nawait fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002F${serverId}\u002Faccess-tokens\u002F${tokenId}`,\n  {\n    method: 'DELETE',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n```\n\n## Ответ\n\n`204 No Content` — тело ответа отсутствует.\n\n## Пример ответа при ошибке\n\n410 — токен уже отозван:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ALREADY_REVOKED\",\n    \"message\": \"Token already revoked\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 403 | `TOKEN_OWNER_MISMATCH` | Сервер или токен принадлежит другому API-ключу |\n| 404 | `SERVER_NOT_FOUND` | Сервер не найден или удалён |\n| 404 | `NOT_FOUND` | Токен с таким ID не найден или принадлежит другому серверу |\n| 410 | `ALREADY_REVOKED` | Токен уже отозван |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Куки `share-url` продолжают работать до 10 минут после отзыва.** Отзыв немедленно блокирует новые переходы, но браузер с уже установленными куки видит приложение до истечения сессионного JWT.\n- **Истёкший токен отозвать нельзя.** Для истёкших токенов вернётся `ALREADY_REVOKED`.\n\n## Смотрите также\n\n- [Выпустить токен](.\u002Fcreate.md)\n- [Список токенов](.\u002Flist.md)\n- [Токены доступа](\u002Fdocs\u002Finfra\u002Faccess-tokens)\n","2026-06-16",{}]