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

Удалить сервер

DELETE /v1/infra/servers/:id

Удаляет сервер безвозвратно: виртуальная машина уничтожается у провайдера, запись в базе помечается как DELETED, открытые биллинг-транзакции финализируются. Работавший на сервере AI-агент удаляется вместе с ним. Восстановить удалённый сервер нельзя — создавайте новый через POST /v1/infra/servers. Удаление идемпотентно только на уровне виртуальной машины у провайдера (если она уже удалена у провайдера, ошибки не будет). Повторный вызов для уже помеченного сервера вернёт 404.

Параметры

Параметр В Тип Обяз. Описание
id path string (UUID) да ID сервера из POST /v1/infra/servers или GET /v1/infra/servers

Примеры

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

Terminal
curl -X DELETE -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.tech/v1/infra/servers/db008c84-91a5-4e15-b9d5-6c6aa2838448

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

Terminal
curl -X DELETE -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}`,
  {
    method: 'DELETE',
    headers: { 'X-Api-Key': 'YOUR_API_KEY' },
  }
)
const { success } = await res.json()
if (success) console.log('Сервер удалён')

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}`,
  {
    method: 'DELETE',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
    },
  }
)

Поля ответа

Поле Тип Описание
success boolean true — запись сервера удалена, начисления за него остановлены
cloudDelete string Чем закончился запрос на удаление виртуальной машины в облаке — см. ниже

Значения cloudDelete:

  • confirmed — облако приняло запрос на удаление машины.
  • already-gone — машины в облаке уже не было.
  • failed — облако запрос не приняло. Запись сервера удалена и начисления остановлены, но машина может продолжать работать. Не считайте ресурс уничтоженным. Повтор запроса вернёт 404 — записи сервера уже нет.
  • not-applicable — у сервера нет виртуальной машины в облаке, например у galaxy-приложения.

confirmed и already-gone для клиента равнозначны: машина удалена или удаляется. success равен true при любом значении cloudDelete.

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

JSON
{
  "success": true,
  "cloudDelete": "confirmed"
}

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

404 — сервер уже удалён или не существует:

JSON
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Server not found"
  }
}

Ошибки

HTTP Код Описание
401 MISSING_API_KEY Не передан заголовок X-Api-Key
401 INVALID_API_KEY Ключ не опознан: такой строки на платформе нет
403 INFRA_FORBIDDEN_FOR_COWORK_KEY Вызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — Проектный ключ для деплоя
403 SERVER_ROLE_FORBIDDEN Вы состоите в команде разработки этого сервера — удаление остаётся за владельцем при любой роли. В error.hint придут ваша роль и перечень открытых вам вызовов. Разбор ролей — Список серверов
403 EXTERNAL_COLLABORATOR_KEY_SERVER_MISMATCH Вызов сделан ключом внешнего участника разработки, а в адресе указан не тот сервер, для которого ключ выпущен. Такой ключ действует ровно на одном сервере, и ответ не сообщает, существует ли запрошенный сервер. Для работы с другим сервером нужен ключ того внешнего членства
403 EXTERNAL_COLLABORATOR_NOT_A_MEMBER Ключ внешнего участника обращается к своему серверу, но доступа сейчас нет: членство снято, истёк его срок либо для аккаунта Битрикс24, которому принадлежит сервер, отключены внешние участники разработки. Код эти причины не различает и сведений о сервере не раскрывает. Членство перечитывается на каждом запросе, поэтому снятый доступ перестаёт работать сразу
404 NOT_FOUND Сервер не найден, уже удалён или привязан к другому API-ключу, и вы не состоите в его команде разработки
409 REISSUE_IN_PROGRESS Ключ приложения или его привязка к серверу заняты, например перевыпуском ключа или доставкой секретов. Этот запрос ничего не удалил; повторите чуть позже
409 AGENT_DELETE_CONFLICT Запись AI-агента этого сервера в этот момент менял другой запрос. Сервер при этом не удалён и продолжает тарифицироваться — повторите запрос. Подробнее — см. «Известные особенности»
409 GALAXY_HAS_APPS Сервер — галактика, на которой есть неудалённые приложения. Тело содержит appCount. Удалить галактику вместе с её приложениями можно в кабинете
409 GALAXY_HOST_WAKE_BLOCKED Galaxy-приложение: его хост запрещено будить — например, заморожен счёт. Отказ терминальный, повтор не поможет. Тело содержит error.reason — см. «Известные особенности»
502 GALAXY_HOST_UNREACHABLE Доступ к хосту или удаление контейнера не подтверждены. Приложение и его привязка сохранены; восстановите доступ или устраните ошибку удаления перед повтором
429 RATE_LIMITED Превышен общий лимит запросов платформы

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

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

  • Вместе с сервером удаляется работавший на нём AI-агент. Запись агента помечается удалённой, его бот снимается с портала Битрикс24, ключ агента отзывается и запросы с ним больше не проходят, карточка приложения снимается с каталога Битрикс24. Переиспользовать агента после удаления сервера нельзя: создайте новый сервер и заведите агента заново. У galaxy-приложения агент снимается после того, как слот уже разобран, поэтому на код ответа исход этого шага не влияет — ответ остаётся 200 { "success": true, "cloudDelete": "not-applicable" }.
  • Отказ 409 AGENT_DELETE_CONFLICT означает, что сервер жив. Запись агента в этот момент менял другой запрос — например, параллельное удаление или восстановление того же агента, — и удаление не состоялось. Сервер не удалён, он продолжает работать и тарифицироваться. Отказ повторяемый: когда параллельная операция закончится, тот же вызов пройдёт обычным путём.
  • Обработка 404 при повторах — норма. Если клиент потерял соединение после первого DELETE, повтор вернёт 404. Ловите 404 как «уже удалено».
  • Если виртуальная машина уже удалена у провайдера другим способом (панель провайдера, ручная очистка) — DELETE всё равно отработает успешно и пометит запись в базе как удалённую.
  • Квота освобождается сразу. После удаления можно сразу создавать новый сервер — MAX_SERVERS_REACHED больше не будет считать эту запись.
  • Удаление работает для любого статуса. Сервер в provisioning, running, sleeping и error — все удаляются штатно.
  • Снимки исходников переживают сервер. Сохранённые версии кода остаются доступны после удаления: список — GET /v1/infra/servers/:id/sources, скачивание — GET /v1/infra/servers/:id/sources/:versionId/download. Сам сервер находится через GET /v1/infra/servers с параметром includeDeleted=true. Как убрать ненужные версии — Хранилище исходного кода.
  • Galaxy-приложение удаляется этим же методом. Если портал размещает приложения в галактиках (несколько приложений работают контейнерами на общем хосте), DELETE /v1/infra/servers/:id снимает приложение, которым владеет ключ: разбирает его контейнер на хосте и помечает запись удалённой. Ответ — 200 { "success": true, "cloudDelete": "not-applicable" }.
  • Спящую галактику платформа будит сама. Если галактика спит, платформа разбудит её перед разбором контейнера — отдельно будить другое приложение и повторять запрос не нужно. Ошибка 502 GALAXY_HOST_UNREACHABLE означает, что пробуждение или удаление контейнера не подтверждено. Перед повтором восстановите доступ к хосту.
  • Отказ будить и провал пробуждения — разные ответы. Если платформе ЗАПРЕЩЕНО поднимать хост (заморожен счёт, истёк доступ, стоит запрет пробуждения), запрос вернёт 409 GALAXY_HOST_WAKE_BLOCKED. Это терминальный отказ: повторять бессмысленно, пока причина не снята. Причина приходит в error.reason — BILLING_FROZEN, ACCESS_EXPIRED, STOPPED или UNKNOWN. Объекта error.hint в этом ответе нет: он описывает восстановление недоступного хоста, а восстанавливать здесь нечего.
  • У ответа 502 GALAXY_HOST_UNREACHABLE есть поле error.hint с планом восстановления. Это объект из четырёх строк: reason — почему хост сейчас недоступен, recovery — что делать, recoveryAction — конкретный вызов для повтора, note — оговорка о том, что статус хоста в выдаче может отставать от реального состояния туннеля. Смысл подсказки: запись сервера сохраняется до тех пор, пока разбор контейнера действительно не выполнится на хосте, поэтому повтор запроса через 1–2 минуты ничего не теряет. При устойчивой ошибке проверьте доступ к хосту и результат удаления контейнера: длительность ошибки сама по себе не доказывает отсутствие хоста.
  • Недоступность хоста не доказывает, что приложение удалено. Платформа сохраняет приложение и привязку, пока не подтвердит удаление контейнера и тома через хост. Ошибки загрузки гостевой системы или отсутствия туннеля недостаточно. Восстановите доступ к хосту либо удалите галактику вместе с приложениями в кабинете.
  • Галактика с неудалёнными приложениями этим методом не удаляется. Если сервер — галактика, на которой есть неудалённые приложения, запрос вернёт 409 GALAXY_HAS_APPS с полем appCount. Удалите приложения по одному, а затем саму галактику. Если приложения удалить нельзя — например, счёт заморожен и галактику не поднять, — удалите галактику вместе с приложениями в кабинете: на публичном интерфейсе такой операции нет.

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