Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

API QoCloud: первые запросы

Базовый адрес, авторизация, формат ответов и ошибок, лимиты — и первые запросы на curl.

Level
Intermediate
Reading time
2 min read
Updated
Contents
  1. Адрес и авторизация
  2. Каталог — без ключа
  3. Баланс и серверы
  4. Ошибки
  5. Лимиты
  6. Дальше

API QoCloud — это REST поверх HTTPS с JSON в запросах и ответах. Через него доступно всё основное из панели: каталог, баланс, создание серверов и действия с ними. Полный список методов с примерами на curl, Python и JavaScript — в разделе «API» на сайте (/api-docs).

Адрес и авторизация

Все запросы идут на https://qocloud.tech/api/v1. Ключ передаётся в заголовке Authorization:

bash
$ curl https://qocloud.tech/api/v1/balance \  -H "Authorization: Bearer $QOCLOUD_TOKEN"

Каталог — без ключа

Метод /catalog публичный: страны, конфигурации с ценами в рублях за месяц, доступные ОС, сроки оплаты и скидки. Удобно для проверки подключения и выбора параметров будущего сервера.

bash
$ curl -s https://qocloud.tech/api/v1/catalog | jq '.plans[] | {id, cpu, ram_gb, disk_gb, monthly}'

id конфигурации вида 2c-4g-60 означает 2 vCPU, 4 ГБ памяти и 60 ГБ диска. Коды стран: nl, de, pl, ee.

Баланс и серверы

bash
$ curl -s https://qocloud.tech/api/v1/balance -H "Authorization: Bearer $QOCLOUD_TOKEN"$ curl -s https://qocloud.tech/api/v1/servers -H "Authorization: Bearer $QOCLOUD_TOKEN" \  | jq -r '.servers[] | [.name, .status, .ip, .paid_until] | @tsv'

Статус сервера: provisioning — создаётся, active — работает, suspended — приостановлен, expired — срок истёк, failed — создать не удалось. Поле power показывает питание: running или stopped.

Ошибки

Ошибка приходит с HTTP-кодом и телом вида {"error": {"code": "…", "message": "…"}}. Код стабильный, по нему удобно ветвиться в скрипте; message — для человека.

HTTPcodeЧто значит
401unauthorizedНет ключа, ключ отозван или истёк.
403forbiddenКлюч только для чтения или аккаунт заблокирован.
400bad_requestНеверные поля, подробности в fields.
402insufficient_balanceНе хватает денег, сумма в рублях — в need.
404not_foundСервер не найден или принадлежит другому аккаунту.
409conflictДействие сейчас невозможно: сервер создаётся, остановлен и т. п.
429rate_limitedПревышен лимит запросов.

Лимиты

На один ключ — 120 запросов в минуту, тяжёлые операции — 10 за 10 минут. При превышении API вернёт 429 с заголовком Retry-After: подождите указанное число секунд и повторите.

Дальше

Как создать сервер скриптом, дождаться IP и корректно обработать ошибки — в статье «Автоматизация через API».

Read to the end and the article counts toward your learning progress.

  • API
  • REST
  • curl
  • JSON
  • автоматизация

Was this article helpful?