Skip to main content
Публичный REST API Lumi для автоматизации: смотри данные аккаунта, проверяй и покупай ресурсы, пополняй баланс. У каждого продукта свой API и свой ключ.
Ключ одного продукта работает только с этим продуктом. Для доменов и прокси выпускаются разные ключи. Ключ выдаёт оператор, напиши в @lumisup_robot.

Авторизация

Каждый запрос передаёт ключ в заголовке:
Ключ показывается один раз, так что храни его в секрете. В базе лежит только хеш, восстановить ключ нельзя, можно лишь выпустить новый.

Типы ключей

  • Reseller: все запросы автоматически ограничены его аккаунтом. Чужой user_id вернёт 404 (существование чужих аккаунтов не раскрывается).
  • Operator: указывает user_id явно (в теле или ?user_id=); для денежных операций это обязательно.

Права (scopes)

Reseller-ключу выдаётся набор прав. Operator-ключ имеет все права неявно. Недостающее право → 403 forbidden_scope.

Денежные операции

Эндпоинты, которые двигают деньги (создание счёта, покупка, продление), подчиняются дополнительным правилам.
Денежные операции работают, только когда на деплое включён флаг API_MONEY_ENABLED. Пока он выключен, такие запросы возвращают 403 money_disabled, даже если у ключа есть нужный scope.

Идемпотентность

Каждый денежный POST обязан нести заголовок Idempotency-Key (8–200 символов):
  • Повтор запроса с тем же ключом вернёт исходный ответ, не выполняя операцию заново.
  • Два одновременных одинаковых запроса не выполнятся дважды: проигравший получит 409 in_progress.
  • Без заголовка → 400 idempotency_key_required.

Дневной лимит трат

У ключа может быть дневной лимит в USD (или общий по умолчанию). По его достижении денежные операции возвращают 402 daily_cap_exceeded до начала следующих суток (UTC). Operator-ключи лимиту не подчиняются.

Подпись запросов (опционально)

Если ключ выпущен с требованием подписи, каждый денежный запрос должен нести заголовок:
Подпись считается по точным байтам тела запроса. Так утечка одного Bearer-ключа не даёт двигать деньги без второго секрета. Без корректной подписи → 401 invalid_signature.

Лимиты запросов

Bulk-запрос расходует столько денежных «токенов», сколько в нём позиций. При превышении → 429 rate_limited с заголовком Retry-After (секунды).

Пагинация

Списочные эндпоинты используют курсор:
  • limit: 1–200 (по умолчанию 50).
  • Ответ: { "items": [...], "next_cursor": "...", "has_more": true }. Передай next_cursor в cursor для следующей страницы. next_cursor: null означает, что страниц больше нет.

Массовые операции (bulk)

Bulk-эндпоинты принимают массив и возвращают по-позиционный результат. Операции не атомарны: ошибка одной позиции не откатывает остальные.
Лимит позиций в одном запросе: 500, иначе 413 batch_too_large. Долгие bulk-покупки выполняются асинхронно: эндпоинт возвращает 202 с batch_id, статус опрашивается через GET /v1/batches/{batch_id}.

Формат ошибок

Все ошибки приходят единым JSON:

Деньги в ответах

Денежные суммы всегда приходят строками ("5.15"), а не числами с плавающей точкой, чтобы не терять точность. Передавай суммы в запросах тоже строками.

Здоровье сервиса

Без авторизации; только проверка живости.