API
API и ключи доступа
Всё, что клиент делает в кабинете, доступно через API, кроме шести действий, которые всегда требуют человека.
Ключ — это набор политик
Права и ресурсы — разные оси: «редактировать DNS» и «в каких доменах» не склеиваются в одно. Условия (IP, срок действия, лимит трат) действуют на весь ключ.
Ключ
├─ среда: live · test
├─ политика: право [dns.edit] на ресурсы [домены с меткой «клиент А»]
├─ политика: право [domain.renew] на ресурсы [example.com.ua]
└─ условия: IP 203.0.113.0/24 · до 2026-12-26 · расходы ≤ 2 000 ₴/месЧетыре класса опасности
Класс определяет срок жизни ключа, обязательность ограничения по IP и то, кто подтверждает операцию.
| Класс | Название | Пример | Подтверждение |
|---|---|---|---|
| 0 | Чтение | список доменов, записи DNS, статус сертификатов | обычный вход |
| 1 | Обратимое изменение | запись DNS, проверка мониторинга, вебхук | обычный вход |
| 2 | Деньги | продление, регистрация, пополнение | вход + уведомление владельцам |
| 3 | Владение и необратимое | снять замок переноса, сменить NS | второй владелец или 24 часа до активации |
Каталог прав (фрагмент)
Полный каталог — в документации; здесь — самые частые права с классом опасности справа.
- domain.read
- список доменов, сроки, статусы 0
- domain.renew
- продлить домен — это трата 2
- domain.nameservers
- сменить серверы имён; на живом домене гасит сайт и почту на время TTL 3
- dns.edit
- создавать, менять, удалять записи DNS через план с проверкой 1
- dns.acme_challenge
- только запись TXT в
_acme-challenge.<имя>— для certbot и подобных 1 - cert.issue
- бесплатный сертификат Let’s Encrypt 1
- monitor.read
- проверки, история, отчёты мониторинга 0
- billing.topup
- пополнить баланс с сохранённой карты 2
Право dns.acme_challenge намеренно узкое: взломанный веб-сервер с таким ключом может только перевыпустить сертификат своего домена, а не переписать MX и увести почту.
Что ключу не выдаётся никогда
- Код переноса домена — только человеку в кабинете после повторного входа.
- Смена владельца (регистранта) домена.
- Управление людьми и ключами организации.
- Способ оплаты, отключение двухэтапной проверки, удаление аккаунта.
Пример запроса
Каждый пишущий вызов требует Idempotency-Key: повтор возвращает тот же результат, а не новую операцию.
GET /v1/domains/kava.com.ua HTTP/1.1
Authorization: Bearer zr_live_…
Idempotency-Key: 8f14e45f-…
200 OK
{ "domain": "kava.com.ua", "status": ["ok"],
"expires_at": "2027-09-12", "auto_renew": true }Ошибка — машинный код плюс сообщение на человеческом языке и предложенные действия:
{ "error": {
"code": "domain_taken",
"message": { "uk": "kava.com.ua зайнятий до 2027-09-12.",
"en": "kava.com.ua is registered until 2027-09-12." },
"actions": [ { "type": "check_alternatives", "href": "/v1/search?q=kava" } ] } }Где выпустить ключ
Ключи выпускаются в кабинете: шаблон прав → домены → условия → итог человеческими словами. Публичный read-only MCP доступен без ключа.
Частые вопросы
Что такое публичный MCP?
Инструмент только для чтения для ассистентов (моделей), без ключа: проверка домена, статус сертификата. Записи в аккаунт через него не идут.
Можно ли протестировать интеграцию без денег?
Да, тестовый ключ zr_test_… работает против песочницы: регистрации и списания выглядят как настоящие, но не являются ими.
Можно ли получить код переноса домена через API?
Нет. Это одно из шести действий, доступных только человеку в кабинете после повторного входа, даже с правом domain.lock в ключе.