Для 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 — личный ключ
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-приложение
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 — личный ключ
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-приложение
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 на привязку поддомена:
{
"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 — имя уже привязано к другому серверу платформы:
{
"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, сохранять ответ привязки не обязательно.