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

Свой домен

Собственный домен для приложения на сервере: приложение отвечает не только по адресу, выданному платформой, но и по имени, которым владеете вы. Привязка идёт в два шага — вы получаете DNS-записи, создаёте их у своего DNS-провайдера и запускаете проверку. Сертификат для https платформа выпускает сама после проверки.

Скоуп: vibe:infra

Привязать домен

POST /v1/infra/servers/:id/domain

Закрепляет ваше доменное имя за приложением на сервере и открывает первый шаг привязки — создание DNS-записей у DNS-провайдера домена. Запросы по домену приложение начинает принимать только после успешной проверки записей. У одного сервера один домен.

Кому доступен вызов — Доступ. Назначение записей и разница между именами host и name — DNS-записи.

Параметры

Параметр В Тип Обяз. Описание
Параметрid Вpath Типstring (UUID) Обяз.да ОписаниеID сервера. Источник — поле id из списка серверов

Поля запроса (body)

Поле Тип Обяз. Описание
Полеfqdn Типstring Обяз.да ОписаниеДоменное имя без схемы, порта и пути, например app.example.com. Принимается поддомен или корневой домен. Регистр не учитывается, пробелы по краям отбрасываются. Имя состоит минимум из двух меток через точку, каждая метка — от 1 до 63 латинских букв, цифр и дефисов, дефис не стоит в начале и в конце метки

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/domain" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fqdn": "app.example.com"
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/domain" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "fqdn": "app.example.com"
  }'

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/domain`,
  {
    method: 'POST',
    headers: {
      'X-Api-Key': 'YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      fqdn: 'app.example.com',
    }),
  }
)
const { data } = await res.json()
for (const record of data.instructions) {
  console.log(`${record.type} ${record.name} → ${record.value}`)
}

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/domain`,
  {
    method: 'POST',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      fqdn: 'app.example.com',
    }),
  }
)

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata.domain.id Типstring (UUID) ОписаниеID привязки домена
Полеdata.domain.fqdn Типstring ОписаниеПривязанное имя в нижнем регистре
Полеdata.domain.isApex Типboolean Описаниеtrue — корневой домен зоны, false — поддомен
Полеdata.domain.status Типstring ОписаниеСтатус домена. После привязки — "PENDING_VERIFICATION". Все значения — Статусы домена
Поле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. После привязки — false
Полеdata.instructions Типarray ОписаниеДве DNS-записи, которые нужно создать у DNS-провайдера домена
Поле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 ОписаниеЗначение записи

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

Ответ 201 на привязку поддомена:

JSON
{
  "success": true,
  "data": {
    "domain": {
      "id": "bea9db66-411b-432e-a365-283a74f5714f",
      "fqdn": "app.example.com",
      "isApex": false,
      "status": "PENDING_VERIFICATION",
      "source": "BYO",
      "dnsMode": "USER_DNS",
      "verifiedAt": null,
      "lastVerifiedAt": null,
      "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"
      }
    ]
  }
}

Корневой домен example.com получил бы "isApex": true, а второй записью — "type": "A" с "name": "@" и IPv4-адресом в value. Остальная форма ответа не меняется.

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

409 — имя уже привязано к другому серверу платформы:

JSON
{
  "success": false,
  "error": {
    "code": "DOMAIN_TAKEN",
    "message": "This domain is already in use"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодINVALID_REQUEST ОписаниеПоле fqdn не передано или не является доменным именем
HTTP400 КодFQDN_INVALID ОписаниеВ fqdn передан IP-адрес
HTTP400 КодFQDN_RESERVED ОписаниеИмя принадлежит платформе: это её домен или его поддомен
HTTP400 КодFQDN_FORBIDDEN ОписаниеИмя запрещено: в нём есть подстрока bitrix
HTTP400 КодINVALID_JSON_BODY ОписаниеТело запроса не разбирается как JSON
HTTP409 КодCUSTOM_DOMAIN_GALAXY_MOVE_ACTIVE ОписаниеСервер переезжает в Галактику: это старый сервер переезда или подготовленное для него место. Привяжите домен после того, как переезд завершится или будет отменён
HTTP409 КодCUSTOM_DOMAIN_LIMIT ОписаниеУ сервера уже есть домен, в том числе с тем же именем. Сначала отвяжите его
HTTP409 КодDOMAIN_TAKEN ОписаниеИмя привязано к другому серверу платформы
HTTP409 КодDOMAIN_TAKEN_EXTERNAL ОписаниеИмя подключено к другому продукту Битрикс24. Отключите его там и повторите вызов
HTTP503 КодCUSTOM_DOMAIN_REGISTRY_UNAVAILABLE ОписаниеРеестр доменов не ответил. Домен не привязан, повторите вызов позже
HTTP403 КодCUSTOM_DOMAINS_DISABLED ОписаниеСвои домены не включены для владельца сервера
HTTP403 КодCUSTOM_DOMAINS_ZONE_UNSUPPORTED ОписаниеРегион аккаунта Битрикс24 не поддерживает свои домены
HTTP403 КодCUSTOM_DOMAINS_REQUIRE_COMMERCIAL ОписаниеУ аккаунта Битрикс24 нет коммерческого тарифа
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP403 КодINFRA_SCOPE_REQUIRED ОписаниеУ ключа нет скоупа vibe:infra
HTTP403 КодINFRA_FORBIDDEN_FOR_COWORK_KEY ОписаниеВызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — Проектный ключ для деплоя
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч в режиме «только чтение» — изменяющие операции ему закрыты
HTTP404 КодSERVER_NOT_FOUND ОписаниеСервера с таким id нет, либо им управляет не тот ключ, которым сделан вызов
HTTP429 КодRATE_LIMITED ОписаниеПревышен лимит 5 запросов в минуту на этот эндпоинт. Лимит считается на владельца ключа, а не на отдельный ключ. Точное значение — в заголовке x-ratelimit-limit (потолок делится на реплики)
HTTP503 Кодuser_self_deletion_pending ОписаниеВладелец ключа запросил удаление своего аккаунта на портале. Доступ вернётся после отмены удаления

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

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

  • Порядок проверок. Скоуп ключа и принадлежность сервера проверяются первыми, затем три условия доступа к своим доменам, и только после них — тело запроса. Поэтому запрос с некорректным fqdn от аккаунта, которому свои домены недоступны, получит 403, а не 400. Исключение — INVALID_JSON_BODY: тело разбирается раньше проверки ключа, поэтому тело с синтаксической ошибкой JSON получает 400 до всех остальных отказов. Отказы FQDN_FORBIDDEN и DOMAIN_TAKEN_EXTERNAL приходят последними: их даёт реестр доменов, к которому платформа обращается после собственных проверок.
  • Имя окончательно закрепляется при проверке. Привязка закрывает имя для других серверов платформы, но в реестре доменов Битрикс24 оно занимается только после успешной проверки. Если между привязкой и проверкой имя подключат к другому продукту Битрикс24, отказ DOMAIN_TAKEN_EXTERNAL вернёт уже проверка.
  • Записи можно получить повторно. Массив instructions с тем же значением TXT в любой момент отдаёт GET /v1/infra/servers/:id/domain, сохранять ответ привязки не обязательно.

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