REST API: GPU и SSH-ключи

REST API: GPU и SSH-ключи

Помимо OpenAI-совместимого инференса (/chat/completions, /models), тот же базовый адрес /api/v1 и тот же API-ключ cc-… позволяют управлять GPU-серверами и SSH-ключами из скриптов и CI.

Требования

  • Положительный баланс команды (как для инференса)
  • API-ключ, созданный в разделе API-доступ — ключи, созданные только в старом разделе «API-модели», тоже работают; для SSH через API рекомендуется создать ключ заново в API-доступ (привязка к пользователю)

Базовый адрес

https://app.cloudcompute.ru/api/v1

Авторизация: Authorization: Bearer cc-…

Эндпоинты (MVP)

Метод Путь Описание
GET /offers Каталог GPU-предложений (фильтры: gpu_name, num_gpus, min_vram, max_price_rub, sort, limit, offset)
GET /instances Список инстансов команды
POST /instances Создать инстанс (ask_id, template_image, disk_gb, ssh_key_ids, …)
GET /instances/{id} Детали инстанса
PATCH /instances/{id} Обновить метку (label, name)
DELETE /instances/{id} Удалить инстанс
GET /ssh-keys SSH-ключи владельца ключа
POST /ssh-keys Добавить ключ (name, public_key)
DELETE /ssh-keys/{id} Удалить ключ

Полное описание полей и примеры ответов — в справочнике API (генерируется автоматически).

Пример: список инстансов

curl https://app.cloudcompute.ru/api/v1/instances \
  -H "Authorization: Bearer cc-..."

Пример: создать инстанс

Минимальный набор полей совпадает с формой в панели: type, ask_id, образ (template_image или template_hash_id), при необходимости disk_gb и ssh_key_ids.

curl -X POST https://app.cloudcompute.ru/api/v1/instances \
  -H "Authorization: Bearer cc-..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": 0,
    "ask_id": 12345678,
    "name": "training-1",
    "template_image": "nvidia/cuda:12.1-devel-ubuntu22.04",
    "offer_disk_space": 50,
    "disk_gb": 32
  }'

Цена (price_hour) пересчитывается на сервере — не передавайте её из клиента.

Ошибки

REST-эндпоинты возвращают JSON вида:

{ "error": { "message": "…", "code": "insufficient_balance" } }

Инференс (/chat/completions) по-прежнему использует OpenAI-совместимый формат ошибок.

См. также