## Получить домен

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

Возвращает домен, привязанный к серверу. Вызов подходит и для повторного чтения DNS-записей, и для ожидания сертификата после проверки.

Кому доступен вызов — [Доступ](/docs/infra/domain#доступ). Назначение записей и разница между именами `host` и `name` — [DNS-записи](/docs/infra/domain#dns-записи).

## Параметры

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

## Примеры

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

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

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

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

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

```javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/domain`,
  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
)
const body = await res.json()
if (res.status === 404 && body.error.code === 'NO_DOMAIN') {
  console.log('К серверу домен не привязан')
} else {
  const { domain } = body.data
  console.log(`${domain.fqdn}: ${domain.status}, сертификат: ${domain.certIssued}`)
}
```

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

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

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

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | Всегда `true` при успехе |
| `data.domain.id` | string (UUID) | ID привязки домена |
| `data.domain.fqdn` | string | Привязанное имя в нижнем регистре |
| `data.domain.isApex` | boolean | `true` — корневой домен зоны, `false` — поддомен |
| `data.domain.status` | string | Статус домена. Значения — [Статусы домена](/docs/infra/domain#статусы-домена) |
| `data.domain.source` | string | Происхождение домена. `"BYO"` — домен ваш и подключён вами |
| `data.domain.dnsMode` | string | Кто ведёт DNS-записи. `"USER_DNS"` — вы, у своего DNS-провайдера |
| `data.domain.verifiedAt` | string (ISO 8601) \| null | Момент успешной проверки, после которой домен стал `ACTIVE`. `null`, пока успешной проверки не было |
| `data.domain.lastVerifiedAt` | string (ISO 8601) \| null | Момент последней проверки записей, включая неуспешную. `null`, пока проверка не запускалась |
| `data.domain.createdAt` | string (ISO 8601) | Момент привязки |
| `data.domain.certIssued` | boolean | Выпущен ли сертификат для `https`. Вне статуса `ACTIVE` всегда `false` |
| `data.instructions` | array | DNS-записи домена — те же, что вернула привязка. Пустой массив, если регион аккаунта Битрикс24 перестал поддерживать свои домены |
| `data.instructions[].type` | string | Тип записи: `"TXT"`, `"CNAME"` или `"A"` |
| `data.instructions[].host` | string | Полное имя записи |
| `data.instructions[].zone` | string | Зона, в которой создаётся запись |
| `data.instructions[].name` | string | Имя записи относительно `zone` — его вводят в поле «имя» панели DNS-провайдера. Для самой зоны — `"@"` |
| `data.instructions[].value` | string | Значение записи |

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

Домен прошёл проверку, сертификат ещё не выпущен:

```json
{
  "success": true,
  "data": {
    "domain": {
      "id": "bea9db66-411b-432e-a365-283a74f5714f",
      "fqdn": "app.example.com",
      "isApex": false,
      "status": "ACTIVE",
      "source": "BYO",
      "dnsMode": "USER_DNS",
      "verifiedAt": "2026-10-05T12:53:02.655Z",
      "lastVerifiedAt": "2026-10-05T12:53:02.653Z",
      "createdAt": "2026-10-05T12:53:02.616Z",
      "certIssued": false
    },
    "instructions": [
      {
        "type": "TXT",
        "host": "_vibecode-challenge.app.example.com",
        "zone": "example.com",
        "name": "_vibecode-challenge.app",
        "value": "vibe-verify=f36ac31f213d1e3630c75f000b6631f5"
      },
      {
        "type": "CNAME",
        "host": "app.example.com",
        "zone": "example.com",
        "name": "app",
        "value": "lb.bitrix24site.ru"
      }
    ]
  }
}
```

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

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

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

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 404 | `NO_DOMAIN` | Сервером управляет ключ вызова, но домен к серверу не привязан |
| 404 | `SERVER_NOT_FOUND` | Сервера с таким `id` нет, либо им управляет не тот ключ, которым сделан вызов |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Ключ не опознан: такой строки на платформе нет |
| 429 | `RATE_LIMITED` | Превышен лимит 60 запросов в минуту на этот эндпоинт. Точное значение — в заголовке `x-ratelimit-limit` (потолок делится на реплики) |
| 503 | `user_self_deletion_pending` | Владелец ключа запросил удаление своего аккаунта на портале. Доступ вернётся после отмены удаления |

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

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

- **Чтение само проверяет сертификат.** Пока домен в статусе `ACTIVE`, а `certIssued` равен `false`, каждый вызов открывает пробное TLS-соединение по имени домена и из-за этого отвечает до 4 секунд дольше. Как только сертификат найден, `certIssued` становится `true`, и следующие чтения проходят без этой задержки.
- **Сертификат ожидается заново после восстановления.** Домен, вернувшийся в `ACTIVE` повторной [проверкой](./verify.md) из статуса `FAILED` или `SUSPENDED`, получает `certIssued: true` не сразу: прежний признак сброшен, и чтение ждёт сертификат ещё раз.
- **Записи нужны и после активации.** Платформа периодически перепроверяет обе записи у активного домена, поэтому удалять их у DNS-провайдера после перехода в `ACTIVE` нельзя.

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

- [Привязать домен](./attach.md)
- [Проверить домен](./verify.md)
- [Отвязать домен](./detach.md)
- [Свой домен](/docs/infra/domain)
- [Список серверов](/docs/infra/servers/list)
