Создание зон DNS и ведение их записей. Зоны обслуживаются ns1.vps.org, ns2.vps.org и ns3.vps.org.
Зона содержит записи для одного домена. Каждое изменение, сделанное через API, сразу же передаётся на серверы имён VPS.org. Чтобы домен обслуживался этими зонами, укажите у регистратора серверы имён ns1.vps.org, ns2.vps.org и ns3.vps.org.
Изменения сохраняются и публикуются в одном шаге: если имя серверов отказывается от изменения, запрос возвращает 502 и ничего не сохраняется. Зона не может быть создана для домена, который уже управляет другим счетом, родителя или ребенка из зоны другого счета, или VPS.org зарезервированное имя.
Требуемое разрешение:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Возвращает ваши зоны, первые новые, 25 на страницу. Записи здесь не включены, чтобы получить их.
| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
domain |
string | Нет | Возвращать только зону с точно этим доменным именем |
page |
integer | Нет | Номер страницы, начиная с 1 |
curl -X GET "https://admin.vps.org/api/v1/dns-zones/?domain=example.com" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
response = requests.get(url, headers=headers, params={"domain": "example.com"})
for zone in response.json()["results"]:
print(zone["uuid"], zone["domain"], zone["record_count"])
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/?domain=example.com', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});
const data = await response.json();
console.log(data.results);
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
"domain": "example.com",
"created_at": "2026-09-06T03:11:48.829693Z",
"record_count": 5
}
]
}
| Полевая | Тип | Описание |
|---|---|---|
uuid |
string | Идентификатор зоны |
domain |
string | Домен, записано в нижнем ящике |
created_at |
datetime | Время создания (ISO 8601, UTC) |
record_count |
integer | Количество записей в зоне, включая три национальных архива |
| 200 | Успех |
| 403 | Недопущенный или недействительный токен API или же знак не имеет требуемого разрешения |
Создаёт зону и публикует ее. Зона начинается с трех записей NS для ns1, ns2 и ns3.vps.org, которые являются системными записями и не могут быть отредактированы или удалены.
| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
domain |
string | Да | Домена, например, имя домена.com |
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'
{
"uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
"domain": "example.com",
"created_at": "2026-09-14T21:02:11.402113Z",
"records": [
{
"uuid": "1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b",
"record_type": "NS",
"name": "@",
"value": "ns1.vps.org",
"ttl": 86400,
"priority": null,
"created_at": "2026-09-14"
},
...
],
"record_count": 3
}
| 201 | Создана зона |
| 400 | Отсутствует или неверное имя домена |
Возвращает одну зону со всеми записями в массиве записей. Ответ имеет ту же форму, что и ответ на создание выше.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Успех |
| 404 | Не найдена, или принадлежит другому счету. |
Удаляет зону из всех трех серверов, проверяет, что никто из них до сих пор не обслуживает ее, а затем удаляет зону и ее записи. Если сервер имени все еще отвечает за зону, запрос не выполняется и зона сохраняется, чтобы вы могли перепроверить.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Ответ не имеет тела. |
| 400 | Зона не была удалена, в поле для деталей указаны ошибки. |
| 404 | Не найдена, или принадлежит другому счету. |
GET возвращает все записи в зоне как массив (не забабинированный), сортированный по типу и имени. POST добавляет запись в зону и публикует ее.
| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
record_type |
string | Да | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Да | @ для самого домена или такой этикетки, как www. Имена хранятся в нижнем ящике. |
value |
string | Да | Данные записи, например IP-адрес или имя хоста. В хостинге нет необходимости в дорожке, а значения TXT не нуждаются в цитатах; оба они добавляются при публикации записи. |
ttl |
integer | Да | Время жить в секундах |
priority |
integer | Только MX и SPV | Требуется для записи MX и SPV и игнорируется для всех других типов. |
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"record_type": "MX", "name": "@", "value": "mail.example.com", "ttl": 3600, "priority": 10}'
import requests
zone_uuid = "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c"
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {"record_type": "A", "name": "www", "value": "203.0.113.10", "ttl": 3600}
response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json())
{
"uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2026-09-14"
}
| Полевая | Тип | Описание |
|---|---|---|
uuid |
string | Идентификатор записи, используется эндпоинтами /api/v1/dns-records/ |
priority |
integer | null | Приоритет для записей MX и SPV, в противном случае не имеет значения |
created_at |
date | Только дата создания (Г-ММ-ДД) без времени |
| 200 | ГЕТ: записи о зоне |
| 201 | ПСВ: создание архива |
| 400 | Ошибка проверки, например, неустановленный тип записи, отсутствующий tl или MX или SSV без приоритета |
| 404 | Не найдена, или принадлежит другому счету. |
Опять же, поверните Зона и все ее записи в имена серверов. Изменения в записи публикуются автоматически, но публикация - это лучшее усилие, и провал не провалит первоначальный запрос, поэтому используйте это, когда изменение не появляется в поисках DNS. Не требуется органа запроса.
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/sync/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"detail": "Zone example.com synced to PowerDNS"
}
GET возвращает записи всех ваших зон, 25 на страницу, заказано по домену, типу и имени. POST создает запись, как конечная точка зоны, но принимает зону в теле как зону_uuid.
| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
zone |
string | Нет | Только записи о зоне с этим уродом |
record_type |
string | Нет | Только записи такого типа, например MX (нечувствительный случай) |
page |
integer | Нет | Номер страницы, начиная с 1 |
curl -X GET "https://admin.vps.org/api/v1/dns-records/?zone=c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c&record_type=A" \
-H "Authorization: Bearer YOUR_API_TOKEN"
curl -X POST "https://admin.vps.org/api/v1/dns-records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"zone_uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c", "record_type": "TXT", "name": "@", "value": "v=spf1 mx -all", "ttl": 3600}'
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f",
"record_type": "A",
"name": "www",
"value": "203.0.113.10",
"ttl": 3600,
"priority": null,
"created_at": "2026-09-14"
}
]
}
| 200 | НОУ: успех |
| 201 | ПСВ: создание архива |
| 400 | Ошибка проверки, или зона_uuid отсутствует или не одна из ваших зон |
GET возвращает одну запись. PUT заменяет ее и требует записи_типа, имени, значения и ttl. PATCH меняет только поля, которые вы посылаете. DELETE удаляет запись и возвращает ее 204 без тела. Изменения публикуются сразу же. NS-записи, созданные с зоной, являются системными записями: обновление или удаление их возвращает 403.
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ttl": 300}'
| 200 | GET, PUT или PATch: запись |
| 204 | Ответ не имеет тела. |
| 400 | Ошибка подтверждения |
| 403 | Эта запись является системной записью, или же токен не имеет требуемого разрешения |
| 404 | Не найдена, или принадлежит другому счету. |
Ошибка подтверждения данных возвращает 400 с проблемой, описанной по имени поля:
{
"priority": ["MX records require a priority value"]
}
Запросить имя серверов VPS.org непосредственно для подтверждения изменения в прямом эфире до того, как ваша делегация регистратора или тайники-решитель наверстывают:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com