Купить ключи

POSThttps://api.astrum.shop/v1/keys
Область keys:write

Списывает цену с баланса и выдаёт ключи активации в ответе — сразу с готовой ссылкой для клиента. За раз — до 100 ключей одного тарифа.

Цена — ваша: меньшая из цены ступени опта и личной. Ступень считается вместе с этой покупкой.

Ответ не пришёл — повторите с тем же ref: вернём те же ключи и второй раз не спишем.

Тело запроса

application/json
product_id
string · обязательно

Тариф из GET /v1/catalog.

delivery_method
string | null

Способ выдачи — только если у тарифа их несколько: activation или card_payment.

kind
string | null

Вид подписки — только если у тарифа их несколько:

app_store
App Store активация
web
Web-активация
web_payment
Web-активация нашей картой
subscription_days
integer | null

Срок — только если сроков несколько. Не указан — самый короткий.

quantity
integer

Сколько ключей: от 1 до 100.

ref
string | null

Номер заказа у вас. Повтор с тем же ref вернёт те же ключи без второго списания.

Ответы

ref
string | null

Ваш номер заказа — как прислали.

keys
array

Купленные ключи.

↳key_id
string

Номер ключа у нас — для GET /v1/keys/{key_id}.

↳code
string | null

Ключ для клиента: XXXX-XXXX-XXXX-XXXX.

↳link
string | null

Ссылка на страницу активации — ключ подставится сам.

↳status
string

Состояние ключа:

available
свободен — его можно отдать клиенту
activating
клиент прислал данные, включаем
activated
подписка включена
expired
сгорел — не активирован в срок
refunded
цену вернули на баланс
↳product_id
string
↳title
string

Название тарифа.

↳delivery_method
string
↳kind
string | null
↳subscription_days
integer | null
↳price_usdt
string

Цена ключа — сколько списано за него.

↳ref
string | null

Ваш номер заказа из покупки.

↳created_at
string
↳expires_at
string

Когда сгорит, если не активировать: через 45 дней после покупки.

↳activated_at
string | null
↳warranty_until
string | null

До какого момента действует гарантия (7 дней с активации).

↳last_attempt_failed_at
string | null

Когда в последний раз активация не прошла — ключ после этого снова свободен.

↳last_attempt_reason
string | null

Почему последняя попытка не прошла:

verification_declined
клиент отказался от проверки личности
not_activated
подписку включить не вышло — попытку закрыли

null — неудачных попыток не было.

price_usdt
string

Цена одного ключа с учётом опта.

charged_usdt
string

Списано с баланса за всю покупку.

balance_usdt
string

Баланс после покупки.

Общие для всех методов — подробно в разделе «Коды ошибок»:

10001 invalid_key10002 key_scope_missing10003 ip_not_allowed10004 browser_not_allowed10005 account_suspended20001 too_many_requests90002 api_disabled90001 internal_error
тестовые USDT,
ключ ask_test_…
curl https://api.astrum.shop/v1/keys -X POST \
  -H "Authorization: Bearer $ASTRUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "3f6c0e7e-2b1d-4c1a-9a57-4d0f1b8e2c11",
    "quantity": 1,
    "ref": "order-58213"
  }'
Ответ
{
  "ref": "order-58213",
  "keys": [
    {
      "key_id": "9b2f6c1e-4d7a-4b0e-8f3c-1a5d2e7c9b40",
      "code": "7K2M-9QXH-4RWD-P8NY",
      "link": "https://activate.astrum.shop/#k=7K2M-9QXH-4RWD-P8NY",
      "status": "available",
      "product_id": "3f6c0e7e-2b1d-4c1a-9a57-4d0f1b8e2c11",
      "title": "ChatGPT Plus",
      "delivery_method": "activation",
      "kind": "web",
      "subscription_days": 30,
      "price_usdt": "20.00",
      "ref": "order-58213",
      "created_at": "2026-10-14T10:14:03Z",
      "expires_at": "2026-11-28T10:14:03Z",
      "activated_at": null,
      "warranty_until": null,
      "last_attempt_failed_at": null,
      "last_attempt_reason": null
    }
  ],
  "price_usdt": "20.00",
  "charged_usdt": "20.00",
  "balance_usdt": "80.00"
}