Перейти к основному содержимому

Быстрый старт

Базовый адрес: https://cloud-api.adaptgroup.pro. Создайте интеграцию Cloud API в дашборде, скопируйте её числовой ID и секретный ключ. Перед покупкой пополните баланс интеграции. ID и цены в примерах условные; актуальные значения получайте из каталога.

Авторизация и формат запроса​

Каждый запрос требует X-Api-Key и api_key_id. Используйте метод и расположение параметров, указанные на странице маршрута:

  • GET и DELETE: идентификаторы и фильтры в пути/query, без JSON-тела.
  • POST/PATCH/PUT с описанным телом: Content-Type: application/json и api_key_id в JSON.
  • POST ссылки консоли и PUT назначения сохранённого IPv4: api_key_id в query, без JSON-тела.
  • Покупки, продления и команды VPS требуют Idempotency-Key там, где он указан. Расчёты и настройка автопродления — нет.

Храните ключ на своём бекенде. api_user_id — строковый ID вашего клиента, а не ID интеграции. Доступны только ресурсы авторизованной интеграции.

curl 'https://cloud-api.adaptgroup.pro/balance?api_key_id=1' \
--header 'X-Api-Key: YOUR_API_KEY'
{
"success": true,
"api_key_id": 1,
"balance": "100.0000",
"currency": "USD",
"balance_updated_at": "2026-09-28T12:00:00"
}

Суммы — десятичные строки в USD; используйте десятичную арифметику. Время — UTC; некоторые даты из БД могут приходить без суффикса часового пояса. Целочисленные поля передавайте JSON-числами, логические — true/false. Неизвестные поля JSON отклоняются. Формы ответов различаются: баланс, тарифы VPS и ОС используют поля верхнего уровня, большинство ресурсов — data. Списки с пагинацией содержат total_count.

Выберите VPS и рассчитайте цену​

  1. Тарифы VPS: выберите location_id, platform и plan_code. Цены уже включают наценку интеграции. available=null означает отсутствие данных о доступности; просмотр каталога не резервирует ресурсы.
  2. Операционные системы: выберите os_id.
  3. Расчёт покупки. Он не списывает деньги, не резервирует VPS и не требует достаточного баланса.
curl --request POST 'https://cloud-api.adaptgroup.pro/vms/quote' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"api_key_id": 1,
"api_user_id": "customer-123",
"location_id": 1,
"platform": "ryzen",
"plan_code": "C1",
"os_id": 1,
"password": "Example-Password-2026!",
"cpu_percent": 60,
"months": 1,
"auto_renew": false
}'
{
"success": true,
"data": {
"amount_usd": "5.0000",
"balance_usd": "100.0000",
"currency": "USD",
"months": 1,
"discount_percent": "0"
}
}

Создание и расчёт требуют ровно одно из password или ssh_public_key. Передавайте сам публичный ключ OpenSSH, а не ssh_key_id. Доля CPU по умолчанию 60; доступны 20/40/60/80/100. Сроки: 1/3/6/12/24/36 календарных месяцев. auto_renew по умолчанию false.

Подтвердите покупку и получите результат​

Отправьте то же тело в POST /vms, при необходимости добавив expected_amount_usd из расчёта, и укажите уникальный Idempotency-Key:

curl --request POST 'https://cloud-api.adaptgroup.pro/vms' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: customer-123-vps-20260928-001' \
--header 'Content-Type: application/json' \
--data '{
"api_key_id": 1,
"api_user_id": "customer-123",
"location_id": 1,
"platform": "ryzen",
"plan_code": "C1",
"os_id": 1,
"password": "Example-Password-2026!",
"expected_amount_usd": "5.0000"
}'

Замените примерную цену результатом своего расчёта. HTTP 202 означает приём запроса, а не готовность VPS:

{
"success": true,
"data": {
"order_id": 401,
"status": "pending",
"amount_usd": "5.0000",
"currency": "USD",
"vm_id": null,
"rental_id": null,
"error_code": null,
"error_message": null
}
}

Сохраните order_id. Узнавайте результат через Детали заказа или Вебхуки. После завершения используйте vm_id для Деталей VPS. Команды питания/firewall/переустановки возвращают операцию в data; её id — это operation_id, а не ID заказа.

Повторы и подтверждение цены​

На каждое отдельное действие создавайте свой Idempotency-Key: 1–200 печатных ASCII-символов без пробелов. После таймаута или неопределённого ответа повторяйте тот же метод, путь, параметры и ключ. Новый ключ может создать вторую оплаченную покупку. Повторное использование ключа с другими параметрами вызывает конфликт.

expected_amount_usd необязателен. Без него списывается текущая рассчитанная цена. С ним несовпадение возвращает 409 price_changed до списания; при смене тарифа значение является максимумом, поскольку доплата за остаток срока может уменьшаться. После подтверждённого отказа из-за цены получите новый расчёт и отправьте заново согласованное действие с новым ключом. Для трафика можно также зафиксировать expected_period_id из расчёта.

Ошибки​

HTTPЗначение
200Получен результат; проверьте его поля
202Запрос принят в обработку; проверяйте статус заказа/операции
401Нет ключа, неверный ключ/ID или интеграция выключена
404Ресурс не найден в интеграции
409Конфликт: недостаточно средств, изменилась цена, повторно использован ключ, ресурс занят или устарела ревизия firewall
422Некорректные или неподдерживаемые параметры
500Непредвиденная ошибка сервера
503Сервис недоступен или результат операции не подтверждён

detail может быть строкой, объектом или массивом ошибок валидации. Не используйте текст сообщения как стабильный код. Язык документации не меняет сообщения API.

{
"detail": {
"code": "insufficient_balance",
"message": "Недостаточно средств"
}
}
{
"detail": [
{
"type": "greater_than_equal",
"loc": ["body", "api_key_id"],
"msg": "Input should be greater than or equal to 1",
"input": 0,
"ctx": {"ge": 1}
}
]
}

При operation_unconfirmed, таймауте или сетевой ошибке сохраняйте исходный ключ и проверяйте результат. Неуспешный HTTP-ответ сам по себе не доказывает, что действие не произошло.

Покупка и жизненный цикл · OpenAPI EN · OpenAPI RU

© 2026 AdaptGroup LLC. All rights reserved.
30 N Gould St Ste R, Sheridan, WY 82801, USA
Back to top