Base URL https://planet-project.click/api/v1
Доступ Bearer token + whitelist IP
Лимит 10 RPS на токен
Версия API v1.3
Обновлено Обновлено 15 мая 2026
Trading domain-core API
PlanetDomains API
Спокойная и предсказуемая API для доменной торговли: поиск, регистрация, продление, DNS, nameservers, Cloudflare и webhook. Публичные docs открыты, а рабочие методы защищены токеном и whitelist IP.
Base URL https://planet-project.click/api/v1
Auth Bearer token из бота + whitelist IP. Создание и перевыпуск токена доступны при балансе от $40.
Mutations Idempotency-Key обязателен для register, renew, DNS, NS, bind и batch.
Limits 10 RPS на токен. Если спайк слишком жёсткий, токен временно блокируется на 5 минут.
Создайте токен в боте: Профиль -> API. Добавьте IP сервера, который будет вызывать API, в Whitelist. Передавайте Authorization: Bearer <token> в каждый защищённый запрос. Для всех изменяющих запросов добавляйте уникальный Idempotency-Key.
Создание токена, whitelist и webhook управляются из бота. Новый токен или перевыпуск доступны при балансе от $40. Пустой whitelist означает полностью закрытую API даже при валидном токене.
GET
/api/v1/account#
Баланс, API-статус, whitelist, webhook и summary defaults.
Справка
Auth Bearer + whitelist
Параметры none
Ответ account summary
Idempotency не нужен
Эффект только чтение
Развернуть деталиparams / body / response / notes Response shape Скопировать {
"status": true,
"result": {
"user_id": 7,
"balance_usd": 1.25,
"api_enabled": true,
"webhook_enabled": false
}
}
GET
/api/v1/zones#
Список зон с ценой регистрации, ценой продления и premium flag.
Справка
Auth Bearer + whitelist
Параметры none
Ответ zones[]
Idempotency не нужен
Эффект только чтение
Развернуть деталиparams / body / response / notes Response shape Скопировать {
"status": true,
"result": {
"zones": [
{"zone": ".click", "register_price_usd": 3.20, "renew_price_usd": 27.47, "premium": false}
]
}
}Операционные заметки Используйте этот метод как основу для витрины и калькулятора.
GET
/api/v1/domains/search#
Точный поиск домена или shortlist-поиск по query.
Торговля
Auth Bearer + whitelist
Query query
Ответ availability / shortlist
Idempotency не нужен
Эффект только чтение
Развернуть деталиparams / body / response / notes Параметры query
Полный домен или база имени.
Response shape Скопировать {
"status": true,
"result": {
"query": "planet-project.click",
"available": false,
"price_usd": 3.20
}
}Ошибки 401 unauthorized
Токен невалиден или отключён.
403 forbidden
IP не в whitelist.
Операционные заметки Если query похож на полный домен, метод делает exact lookup. POST
/api/v1/domains/search/batch#
Пакетный поиск доменов с item-level результатами.
Batch Торговля
Auth Bearer + whitelist
Body items[]
Ответ count / success / failed / items[]
Idempotency не нужен
Эффект только чтение
Развернуть деталиparams / body / response / notes Request body Скопировать {
"items": ["planet-project.click", "planet-trade.click"]
}Response shape Скопировать {
"status": true,
"result": {
"count": 2,
"success": 2,
"failed": 0,
"items": []
}
}Операционные заметки Не трактуйте ошибку одного item как падение всего запроса.
POST
/api/v1/domains/register#
Регистрация одного домена. Если config не передан, используются defaults из конфигуратора.
Торговля config
Auth Bearer + whitelist
Body domain, years?, config?
Ответ order summary
Idempotency обязателен
Эффект создаёт заказ
Развернуть деталиparams / body / response / notes Request body Скопировать {
"domain": "planet-project.click",
"years": 1,
"client_ref": "deal-42",
"external_ref": "invoice-77"
}Response shape Скопировать {
"status": true,
"result": {
"domain": "planet-project.click",
"status": "registered",
"client_ref": "deal-42",
"external_ref": "invoice-77"
}
}Ошибки 404 domain_not_found
Домен не найден или уже занят.
422 validation_error
Некорректный payload или config.
Операционные заметки Для изменяющих операций всегда прикладывайте Idempotency-Key. client_ref и external_ref возвращаются обратно в detail, list и webhook payload. POST
/api/v1/domains/register/batch#
Пакетная регистрация с частичным успехом и item-level статусами.
Batch Торговля
Auth Bearer + whitelist
Body items[]
Ответ count / success / failed / items[]
Idempotency обязателен
Эффект создаёт заказы
Развернуть деталиparams / body / response / notes Request body Скопировать {
"items": [
{"domain": "planet-project.click", "years": 1, "client_ref": "deal-1"},
{"domain": "planet-trade.click", "years": 1, "client_ref": "deal-2"}
]
}Response shape Скопировать {
"status": true,
"result": {
"count": 2,
"success": 1,
"failed": 1,
"items": []
}
}Операционные заметки Batch допускает частичный успех. Каждый item нужно читать отдельно.
Batch-потоки всегда возвращают результат по каждому item. Не полагайтесь на один верхнеуровневый status и не делайте выводы о всём запросе по первому неуспеху.
invalid_domain
Домен не прошёл локальную валидацию.
not_available
Домен уже занят или недоступен для заказа.
validation_error
Payload item содержит несовместимую конфигурацию.
request_in_progress
Для того же Idempotency-Key операция ещё выполняется.
POST
/api/v1/domains/{domain}/renew#
Продление одного домена.
Торговля
Auth Bearer + whitelist
Body years, client_ref?, external_ref?
Ответ renewal summary
Idempotency обязателен
Эффект продлевает домен
Развернуть деталиparams / body / response / notes Параметры domain
Домен из вашего аккаунта.
Request body Скопировать {
"years": 1,
"client_ref": "renew-42"
}Response shape Скопировать {
"status": true,
"result": {
"domain": "planet-project.click",
"status": "renewed"
}
}Операционные заметки Путь продления использует ту же ценовую логику, что и бот. POST
/api/v1/domains/renew/batch#
Пакетное продление доменов.
Batch Торговля
Auth Bearer + whitelist
Body items[]
Ответ count / success / failed / items[]
Idempotency обязателен
Эффект продлевает пакет доменов
Развернуть деталиparams / body / response / notes Request body Скопировать {
"items": [
{"domain": "planet-project.click", "years": 1},
{"domain": "planet-trade.click", "years": 1}
]
}Response shape Скопировать {
"status": true,
"result": {
"count": 2,
"success": 2,
"failed": 0,
"items": []
}
}Операционные заметки Используйте batch renew для реселлерских циклов и ночных задач.
client_ref и external_ref помогают связать сделки, счета и внутренние заказы с нашим ответом. Они сохраняются в заказе и возвращаются в list, detail и webhook payload.
Python Скопировать import requests
r = requests.get(
f"{BASE_URL}/account",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=20,
)
print(r.json())Node.js Скопировать const response = await fetch(`${BASE_URL}/domains/search?query=planet-project.click`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
console.log(await response.json());PHP Скопировать $ch = curl_init(BASE_URL . "/account");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . TOKEN],
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
Account Скопировать {
"status": true,
"result": {
"user_id": 7,
"balance_usd": 1.25,
"api_enabled": true
}
}Domain search Скопировать {
"status": true,
"result": {
"query": "planet-project.click",
"available": false,
"register_price_usd": 3.20
}
}Webhook delivery Скопировать {
"status": true,
"result": {
"limit": 10,
"count": 1,
"items": [
{"event_type": "domain.renewed", "attempt_number": 1, "status": "delivered", "status_code": 200}
]
}
}
GET
/api/v1/domains/{domain}/dns#
Текущие DNS-записи, nameservers и режим домена.
Инфраструктура
Auth Bearer + whitelist
Path domain
Ответ records / nameservers / mode
Idempotency не нужен
Эффект только чтение
Развернуть деталиparams / body / response / notes Параметры domain
Домен из вашего аккаунта.
Response shape Скопировать {
"status": true,
"result": {
"mode": "cloudflare",
"records": [],
"nameservers": ["elaine.ns.cloudflare.com", "thomas.ns.cloudflare.com"]
}
}PUT
/api/v1/domains/{domain}/dns#
Полная замена набора DNS-записей через тот же валидатор, что и в боте.
Инфраструктура
Auth Bearer + whitelist
Body records[]
Ответ updated dns
Idempotency обязателен
Эффект заменяет DNS
Развернуть деталиparams / body / response / notes Параметры domain
Домен из вашего аккаунта.
Request body Скопировать {
"records": [
{"type": "A", "name": "@", "content": "2.26.84.230", "ttl": 300}
]
}Response shape Скопировать {
"status": true,
"result": {
"updated": true,
"records": []
}
}PATCH
/api/v1/domains/{domain}/nameservers#
Полная замена nameservers через preset_key или явный список nameservers.
Инфраструктура
Auth Bearer + whitelist
Body preset_key or nameservers
Ответ updated nameservers
Idempotency обязателен
Эффект заменяет NS
Развернуть деталиparams / body / response / notes Параметры domain
Домен из вашего аккаунта.
Request body Скопировать {
"nameservers": ["ns1.example.net", "ns2.example.net"]
}Response shape Скопировать {
"status": true,
"result": {
"updated": true,
"nameservers": ["ns1.example.net", "ns2.example.net"]
}
}
POST
/api/v1/domains/{domain}/cloudflare/bind#
Привязка домена к Cloudflare-профилю из бота.
Cloudflare
Auth Bearer + whitelist
Body cloudflare_profile_key
Ответ cloudflare bind summary
Idempotency обязателен
Эффект подключает Cloudflare
Развернуть деталиparams / body / response / notes Параметры domain
Домен из вашего аккаунта.
Request body Скопировать {
"cloudflare_profile_key": "default"
}Response shape Скопировать {
"status": true,
"result": {
"bound": true,
"cloudflare_profile_key": "default"
}
}Ошибки 409 cloudflare_not_configured
Cloudflare-профиль не найден или выключен.
Webhook настраивается из бота и отправляет все поддерживаемые доменные события пользователя. Для payload, подписей и retries откройте отдельный webhook guide.
Самая полезная модель проста: 401/403 — это доступ, 404/422 — payload или ownership, 409 — состояние или конфиг, 429 — pacing и backoff.
GET /account
Баланс, whitelist, webhook и summary аккаунта.
GET /zones
Зоны и цены регистрации/продления.
GET /domains/search
Точный поиск домена.
POST /domains/search/batch
Batch-поиск доменов.
POST /domains/register
Регистрация одного домена.
POST /domains/register/batch
Пакетная регистрация доменов.
POST /domains/{domain}/renew
Продление одного домена.
POST /domains/renew/batch
Пакетное продление доменов.
GET/PUT /domains/{domain}/dns
Чтение и полная замена DNS.
PATCH /domains/{domain}/nameservers
Полная замена NS.
POST /domains/{domain}/cloudflare/bind
Привязка к Cloudflare-профилю.
Используйте OpenAPI JSON для генерации клиента, контрактной проверки и быстрой навигации по схемам.