Void API — твои домены по REST.

Проверка доступности, регистрация и продление, смена nameservers, подключение домена к Cloudflare и управление его DNS, защитными переключателями и редиректами — из своего кода, на том же аккаунте и балансе, что и бот.

https://api.voidhosting.org/v1 Bearer void_… JSON · UTC · USD строками

Cloudflare

один вызов на подключение, дальше полный контроль

Подключённый домен получает зону Cloudflare из нашего пула: мы создаём её, переключаем nameservers в реестре и проксируем трафик. Все эндпоинты ниже требуют подключённый домен и иначе отвечают 409 CLOUDFLARE_NOT_CONNECTED. Сразу после подключения зона в статусе pending, пока смена nameservers не разъедется (от минут до часа); DNS-записи можно добавлять сразу, а кеш и настройки до этого могут ответить CLOUDFLARE_ZONE_PENDING.

Зона

GET/domains/{id}/cloudflare

Подключён ли домен и как далеко разъехалась смена nameservers.

{ "ok": true, "data": { "connected": true, "domainName": "example.org", "zoneId": "6a18…",
    "nameservers": ["margo.ns.cloudflare.com", "mimi.ns.cloudflare.com"], "zoneStatus": "active", "nsApplied": true } }
// не подключён: { "connected": false, "domainName": "…", "zoneId": null, "nameservers": [], "zoneStatus": "none", "nsApplied": false }
POST/domains/{id}/cloudflare201

Создаёт зону и переключает nameservers в реестре на Cloudflare. Возвращает статус зоны (сначала pending). Записи с наших парковочных nameservers не переносятся — добавь нужные через POST /dns.

409 CLOUDFLARE_ALREADY503 CLOUDFLARE_NO_ACCOUNTS пул исчерпан, повтори позже
DELETE/domains/{id}/cloudflare

Удаляет зону и возвращает домен на наши nameservers (страница парковки). Записи, настройки и редиректы исчезают вместе с зоной.

POST/domains/{id}/cloudflare/refresh

Перечитывает статус и nameservers из Cloudflare и возвращает тот же объект, что и GET. Им удобно опрашивать zoneStatus после подключения.

DNS-записи

GET/domains/{id}/dns

Все записи зоны.

{ "ok": true, "data": [ { "id": "fce74ed9…", "type": "A", "name": "api.example.org", "content": "185.225.191.222", "proxied": false, "priority": null }, … ] }
POST/domains/{id}/dns201

Добавляет запись и возвращает её с id Cloudflare.

телотип
typeобязательноA AAAA CNAME TXT MX
nameобязательноstringотносительно домена (@ — сам домен, www, _dmarc) или полное имя
contentобязательноstringIP, хост или текст
proxiedbooleanтолько A / AAAA / CNAME — трафик через Cloudflare, IP сервера скрыт
priorityintegerтолько MX
{ "type": "A",     "name": "@",      "content": "203.0.113.10",       "proxied": true }
{ "type": "CNAME", "name": "www",    "content": "example.org",        "proxied": true }
{ "type": "MX",    "name": "@",      "content": "mail.example.org",   "priority": 10 }
{ "type": "TXT",   "name": "_dmarc", "content": "v=DMARC1; p=none" }
409 DNS_EXISTS такая запись уже есть
PUT/domains/{id}/dns/{recordId}

Заменяет запись целиком — тело как при создании. Id берутся из GET /dns.

DELETE/domains/{id}/dns/{recordId}

Удаляет запись. 404 DNS_NOT_FOUND, если её уже нет.

Настройки и кеш

GET/domains/{id}/cloudflare/settings

Переключатели защиты и доставки зоны — тот же набор, что показывает бот.

{ "ok": true, "data": { "ssl": "full", "developmentMode": false, "underAttack": false, "alwaysOnline": true, "botFightMode": true, "regionBlock": false } }
PATCH/domains/{id}/cloudflare/settings

Меняет любое подмножество; в ответ полный набор после изменения. Пустое тело — 400.

полезначенияэффект
ssloff flexible full strictшифрование Cloudflare ↔ сервер. flexible, если на сервере нет сертификата; full с самоподписанным; strict с валидным
developmentModebooleanобход кеша на 3 часа (потом выключается сам)
underAttackbooleanJavaScript-проверка для каждого посетителя
alwaysOnlinebooleanотдавать кешированную копию, пока сервер лежит
botFightModebooleanпроверка известных ботов
regionBlockbooleanправило файрвола, блокирующее посетителей из стран СНГ
{ "ssl": "strict", "underAttack": true, "regionBlock": true }
POST/domains/{id}/cloudflare/purge

Очищает весь кеш зоны. Дёшево; можно дёргать после каждого деплоя.

{ "ok": true, "data": { "purged": true } }

Редиректы

GET/domains/{id}/cloudflare/redirects

Правила редиректов зоны.

POST/domains/{id}/cloudflare/redirects201
телотип
matchобязательноstringпуть на домене (old-page, blog/*) или * для всего
targetобязательноURLкуда отправлять посетителей
permanentboolean · по умолчанию truetrue → 301, false → 302
{ "match": "*", "target": "https://new-domain.com", "permanent": true }

{ "ok": true, "data": { "id": "3f2a…", "match": "*", "target": "https://new-domain.com", "permanent": true } }
409 REDIRECT_EXISTS этот путь уже редиректится409 REDIRECT_LIMIT лимит зоны исчерпан
DELETE/domains/{id}/cloudflare/redirects/{ruleId}

Удаляет правило по id из списка.

поддержка инфо-канал voidhosting.org Void · api v1