Регистрация тем же движком и по тем же ценам, что на сайте, с лимитом трат на ключ.
Мои домены
Список доменов, сроки оплаты, NS и можно ли выставить на продажу.
Продажа доменов
Выставляйте домены, меняйте цену и описание, снимайте с продажи.
История продаж
Продажи, комиссия площадки и сколько зачислено на баланс.
Поиск по магазину
Публичный поиск лотов с фильтрами — без токена.
API работает с сервера: ваш скрипт, бот или сервис (например, HQName) обращается к HQClouds по HTTPS с токеном из кабинета. Все суммы — в USD, деньги списываются с баланса HQClouds.
Быстрый старт
Войдите или зарегистрируйтесь в HQClouds. Если собираетесь покупать домены — пополните баланс.
В кабинете откройте раздел «API» и создайте ключ: название, права и дневной лимит трат.
Скопируйте токен — он показывается только один раз. Сохраните его в переменной окружения или менеджере секретов.
Токен показывается один раз при создании. Мы храним только его хэш — восстановить токен нельзя, только выпустить новый.
Не вставляйте токен в код сайта или мобильного приложения: API рассчитано на вызовы с сервера, CORS для него закрыт.
Если токен утёк — отзовите ключ в кабинете: отзыв действует сразу.
Тело запроса — JSON (Content-Type: application/json) или обычная форма. Для PATCH форма — только application/x-www-form-urlencoded.
Сообщения об ошибках — на английском; с заголовком Accept-Language: ru большинство придёт на русском. Поле code от языка не зависит — в коде опирайтесь на него.
Права ключа
Права задаются при создании ключа. Давайте ключу только то, что нужно программе.
Право
Что разрешает
read
Есть у каждого ключа. Чтение: аккаунт и баланс, домены, лоты, продажи, проверка доменов.
market:write
Выставлять, изменять и снимать лоты в магазине доменов.
domains:register
Покупать домены с баланса. Требует дневной лимит трат.
Лимиты
60запросов в минуту на ключ. Сверх лимита — 429 и заголовок Retry-After; остаток виден в X-RateLimit-Remaining.
$100дневной лимит трат по умолчанию — свой задаётся при создании ключа. Считается за последние 24 часа.
20покупок доменов в час на ключ — защита от ошибки в цикле скрипта.
10активных ключей на аккаунт.
Покупки выполняются строго по одной: если в этот момент идёт другая покупка, придёт 429 busy — повторите через несколько секунд с тем же Idempotency-Key.
Премиум-домены через API не продаются никогда — только вручную в кабинете.
Публичный поиск по магазину: 60 запросов в минуту с одного IP.
Идемпотентность покупок
Сеть может оборваться в момент покупки — и вы не узнаете, прошла ли она. Поэтому каждая покупка требует заголовок Idempotency-Key: любую уникальную строку до 100 символов (латиница, цифры и - _ : .), например UUID.
Повтор с тем же ключом безопасен: API вернёт результат первой попытки и не спишет деньги второй раз.
Новый ключ — это новая покупка. Генерируйте ключ один раз на покупку и сохраняйте его до отправки запроса.
Таймаут, обрыв или ответ 5xx — повторяйте с тем же ключом. Ответ 202 — заказ у регистратора, деньги в резерве: не покупайте заново, а проверяйте GET /domains/{domain}.
Все ответы — JSON в UTF-8. Успешный ответ содержит "ok": true. Ошибка — "ok": false и объект error с машинным кодом code и сообщением message. Суммы — строки с двумя знаками после точки. Списки отдают items и total, page, pages, per_page.
json
{
"ok": false,
"error": {
"code": "daily_limit",
"message": "Daily spend limit reached: spent $95.00 of $100.00 in the last 24 hours, this purchase is $12.99."
}
}
HTTP
code
Что значит
HTTP 400
invalid_json
Тело запроса — не JSON-объект.
HTTP 401
unauthorized
Нет заголовка Authorization: Bearer.
HTTP 401
invalid_token
Токен неверный, отозван или истёк.
HTTP 402
insufficient_balance
Не хватает денег на балансе — пополните его в кабинете.
HTTP 403
scope_required
У ключа нет нужного права.
HTTP 403
no_spend_limit
У ключа нет дневного лимита трат — покупать им нельзя.
HTTP 404
not_found
Нет такого адреса API, домена или лота — или он не ваш.
HTTP 405
method_not_allowed
Этот адрес не поддерживает такой метод.
HTTP 409
already_listed
Домен уже выставлен — в ответе текущий лот.
HTTP 409
price_above_max
Итоговая цена выше max_price — покупка не сделана.
HTTP 409
premium_not_allowed
Премиум-домен: только вручную в кабинете.
HTTP 409
…
Прочие отказы покупки (домен занят, регистратор отказал) — деньги не списаны, причина в message.
HTTP 413
payload_too_large
Тело запроса больше 64 КБ.
HTTP 422
validation_failed
Ошибка в данных (цена, тематика, домен нельзя выставить и т. п.) — подробности в message.
Свободен ли домен и сколько стоят регистрация и продление. Ничего не покупает. Если домен продаётся в магазине HQClouds, в for_sale будут цена и ссылка.
Право: read
Параметр
Тип
Обязателен
Описание
domain
string
да
Имя домена, например example.com. Домены на кириллице принимаются как есть.
state: available — свободен, taken — занят, premium — премиум-домен (через API не продаётся), for_sale — продаётся в магазине HQClouds, unsupported_tld — зону мы не регистрируем, unknown — проверить не удалось, повторите позже.
Доступность — предварительная: окончательная проверка цены и наличия происходит в момент покупки.
{
"ok": true,
"domain": "example.com",
"state": "available",
"available": true,
"premium": false,
"price": {"register": "12.99", "renew": "14.99", "currency": "USD"},
"for_sale": null,
"note": "Availability is indicative; the final check happens at purchase."
}
POST/domains/register
Купить домен
Регистрирует домен на 1 год и списывает цену с баланса HQClouds. Перед списанием — та же финальная проверка цены, что и на сайте. Покупки выполняются по одной.
Право: domains:register
Параметр
Тип
Обязателен
Описание
Idempotency-Key
header
да
Уникальная строка на каждую покупку (до 100 символов). Подробно — в разделе «Идемпотентность покупок».
domain
string
да
Имя домена.
max_price
number
нет
Не покупать, если итоговая цена выше этой суммы, USD. Рекомендуем передавать всегда.
years
integer
нет
Срок регистрации. Через API доступен только 1 год.
201 — домен зарегистрирован и уже ваш. 202 — регистратор ещё обрабатывает заказ: деньги зарезервированы, не покупайте заново, а проверяйте GET /domains/{domain} раз в минуту-две.
Если покупка не удалась (домен занят, регистратор отказал), деньги не списываются, а резерв дневного лимита освобождается.
{
"ok": true,
"status": "pending",
"price": "12.99",
"domain_name": "example.com",
"message": "The registrar is still processing this order. Poll GET /api/v1/domains/example.com in a few minutes."
}
GET/domains
Мои домены
Все домены аккаунта постранично. can_list — можно ли выставить домен на продажу прямо сейчас, list_blocked_reason — почему нельзя, listing — текущий лот, если домен уже продаётся.
Создаёт лот в магазине доменов. Домен должен быть в вашем аккаунте HQClouds, активным, оплаченным ещё минимум на 30 дн. и без идущих операций у регистратора.
Право: market:write
Параметр
Тип
Обязателен
Описание
domain
string
да
Домен из вашего аккаунта.
price
number
да
Цена в USD: от $5 до $100 000.
category
string
нет
Тематика — ключ из таблицы ниже.
tags
array | string
нет
До 10 тегов (каждый до 30 символов): массив или строка через запятую.
headline
string
нет
Заголовок до 160 символов.
description
string
нет
Описание до 2000 символов.
metadata
object
нет
Ваши данные: до 20 полей, только строки, числа и true/false. Возвращаются в ответах как есть — например, оценка домена из HQName.
При продаже площадка удерживает комиссию 10% от цены, остальное сразу зачисляется на ваш баланс HQClouds.
Повторное выставление того же домена вернёт 409 already_listed и текущий лот — ретрай скрипта ничего не сломает.
brand Брендtech Технологииai ИИbusiness Бизнесfinance Финансыcrypto Криптоecommerce Магазинcreative Творчествоsocial Сообществоhealth Здоровьеeducation Образованиеtravel Путешествияfood Едаrealestate Недвижимостьfun Хобби и игры
Пример: купить домен и выставить на продажу
Два вызова подряд — так работает связка с HQName: нашли хорошее имя, купили его с баланса и сразу выставили в магазин доменов HQClouds.
bash
export HQC_TOKEN="hqc_xxxxxxxx_..."
DOMAIN="example.com"
KEY="buy-$DOMAIN-$(date +%Y%m%d)"
# 1. Купить домен. Повтор с тем же KEY безопасен — второй раз деньги не спишутся.
curl -s -X POST https://hqclouds.com/api/v1/domains/register \
-H "Authorization: Bearer $HQC_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $KEY" \
-d "{\"domain\":\"$DOMAIN\",\"max_price\":15}"
# 2. Ответ 201 — домен ваш, сразу выставляем на продажу.
# Ответ 202 — ждём, пока GET /domains/$DOMAIN не вернёт status «active».
curl -s -X POST https://hqclouds.com/api/v1/market/lots \
-H "Authorization: Bearer $HQC_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"domain\":\"$DOMAIN\",\"price\":\"249\",\"category\":\"tech\",\"metadata\":{\"source\":\"hqname\"}}"
Только что купленный домен оплачен на год — условие «оплачен ещё минимум на 30 дн.» выполняется сразу.
Для покупки нужен ключ с правом domains:register, для выставления — с правом market:write. Можно один ключ с обоими правами.
Вопросы
Сколько стоит API?
API бесплатно. Домены через API стоят столько же, сколько на сайте, деньги списываются с баланса HQClouds.
Что делать, если запрос на покупку оборвался по таймауту?
Повторите тот же запрос с тем же заголовком Idempotency-Key. Если покупка уже прошла, API вернёт её результат и не спишет деньги второй раз.
Можно ли купить премиум-домен через API?
Нет. Цена премиум-домена может быть в сотни раз выше обычной, поэтому такие домены покупаются только вручную в кабинете.
Как отозвать токен?
В кабинете, в разделе «API»: отзыв действует мгновенно. Создайте новый ключ и замените токен в своей программе.
Готовы начать?
Создайте ключ в кабинете — это бесплатно и займёт минуту.