## Отвязать домен

`DELETE /v1/infra/servers/:id/domain`

Отвязывает домен от сервера: приложение перестаёт отвечать по этому имени, а само имя освобождается для новой привязки. Восстановить привязку через API нельзя — привязывайте домен заново.

Кому доступен вызов — [Доступ](/docs/infra/domain#доступ).

## Параметры

| Параметр | В | Тип | Обяз. | Описание |
|----------|---|-----|:-----:|----------|
| `id` | path | string (UUID) | да | ID сервера. Источник — поле `id` из [списка серверов](/docs/infra/servers/list) |

## Примеры

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

```bash
curl -X DELETE "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/domain" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

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

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

```javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/domain`,
  { method: 'DELETE', headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
)
const body = await res.json()
if (body.success) console.log('Домен отвязан')
```

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

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

## Поля ответа

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` при успешной отвязке |
| `data.deleted` | boolean | `true` — привязка удалена |

В отличие от удаления записей CRM-сущностей, этот эндпоинт отвечает `200` с телом, а не `204 No Content`.

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

```json
{
  "success": true,
  "data": {
    "deleted": true
  }
}
```

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

404 — к серверу не привязан домен:

```json
{
  "success": false,
  "error": {
    "code": "NO_DOMAIN",
    "message": "No domain attached"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Ключ не опознан: такой строки на платформе нет |
| 403 | `INFRA_SCOPE_REQUIRED` | У ключа нет скоупа `vibe:infra`. Проверяется раньше, чем поиск сервера |
| 403 | `INFRA_FORBIDDEN_FOR_COWORK_KEY` | Вызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — [Проектный ключ для деплоя](/docs/cowork/deploy-key) |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ в режиме «только чтение» — изменяющие операции ему закрыты |
| 404 | `SERVER_NOT_FOUND` | Сервер не найден, удалён либо им управляет другой ключ |
| 404 | `NO_DOMAIN` | К серверу не привязан домен, в том числе при повторной отвязке |
| 429 | `RATE_LIMITED` | Превышен лимит 5 запросов в минуту на этот эндпоинт. Лимит считается на владельца ключа, а не на отдельный ключ. Точное значение — в заголовке `x-ratelimit-limit` (потолок делится на реплики) |
| 503 | `CUSTOM_DOMAIN_REGISTRY_UNAVAILABLE` | Реестр доменов не ответил, домен не отвязан. Домен в статусе `ACTIVE` при этом переходит в `SUSPENDED`, и приложение может перестать отвечать по нему. Повторите вызов позже |
| 503 | `user_self_deletion_pending` | Владелец ключа запросил удаление своего аккаунта на портале. Доступ вернётся после отмены удаления |

Полный список общих ошибок API — [Ошибки](/docs/errors).

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

- **Записи у DNS-провайдера остаются.** Отвязка их не трогает: `TXT` и `CNAME` либо `A` удалите сами.
- **Прежняя запись `TXT` для новой привязки не подойдёт.** Привязка того же имени заново выдаёт новое значение `TXT`, поэтому запись у DNS-провайдера нужно заменить и пройти [проверку](./verify.md) ещё раз.

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

- [Привязать домен](./attach.md)
- [Получить домен](./get.md)
- [Проверить домен](./verify.md)
- [Свой домен](/docs/infra/domain)
