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 у ключі.