Для разработчиков

API аккаунтаваш бот продаёт ключи сам

Токен xyp_… даёт вашему боту или сайту доступ к кабинету: создавать и менять API-ключи, пополнять баланс через СБП, карту или крипту, активировать промокоды. Запросы к нейросетям идут по обычным ключам sk_live_… на https://xyvero.store/v1.

01Создайте токенниже на этой странице
02Передавайте егов Authorization: Bearer
03Вызывайте методыключи, оплата, баланс

Токены аккаунта

До 10 активных. Полное значение показывается один раз.
0
Загрузка…

Основы

Адрес, авторизация и формат ответов
Адресhttps://xyvero.store
АвторизацияBearer xyp_…
ФорматJSON, UTF-8
Деньгибаланс в USD, пополнение в ₽
401 неверный токен
403 нет прав
429 слишком часто

Ошибки: HTTP-код + {"error":{"message":"…"}}

bash
export XYVERO_TOKEN="xyp_…"   # токен аккаунта с этой страницы

Баланс аккаунта

GET/api/dashboard

Сколько денег на счёте и сколько потрачено сегодня. Суммы — в долларах; в рубли — × курс со страницы оплаты.

Запрос
curl
curl "https://xyvero.store/api/dashboard" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{
  "balance_usd": 4.82,
  "available_usd": 4.82,
  "today_cost_usd": 0.31,
  "active_keys": 3
}

Все ключи

GET/api/keys

Список ключей аккаунта с лимитами и расходом. Секрет целиком здесь не отдаётся — только префикс.

Запрос
curl
curl "https://xyvero.store/api/keys" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{
  "keys": [
    {
      "id": "6f1c…",
      "name": "Клиент 42",
      "key_prefix": "sk_live_ab12",
      "status": "active",
      "token_limit": 1000000,
      "tokens_used": 12850,
      "allowed_models": ["claude-sonnet-5-5"]
    }
  ]
}

Создать ключ

POST/api/keys

Ключ покупателю: имя, лимит токенов и какие модели разрешены (пусто — все). Нужен положительный баланс.

Запрос
curl
curl -X POST "https://xyvero.store/api/keys" \
  -H "Authorization: Bearer $XYVERO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Клиент 42", "token_limit": 1000000, "allowed_models": ["claude-sonnet-5-5", "gpt-6.1-sol"], "rpm_limit": 60 }'
Ответ
json
{
  "key": {
    "id": "6f1c…",
    "name": "Клиент 42",
    "key": "sk_live_ab12…",
    "key_prefix": "sk_live_ab12"
  },
  "warning": "Секрет показывается только один раз. Сохраните его."
}

Поле key.key — секрет для запросов к моделям. Сохраните его у себя: повторно он не отдаётся.

Изменить ключ

POST/api/keys/{id}/edit

Переименовать, сменить лимит токенов или список моделей. Передавайте только то, что меняете.

Запрос
curl
curl -X POST "https://xyvero.store/api/keys/{id}/edit" \
  -H "Authorization: Bearer $XYVERO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Клиент 42 — VIP", "token_limit": 5000000, "allowed_models": [] }'
Ответ
json
{ "ok": true }

Добавить ключу токены

POST/api/keys/{id}/topup

Увеличить лимит конкретного ключа, например после оплаты покупателем.

Запрос
curl
curl -X POST "https://xyvero.store/api/keys/{id}/topup" \
  -H "Authorization: Bearer $XYVERO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "tokens": 2000000 }'
Ответ
json
{ "ok": true, "token_limit": 3000000 }

Выключить / включить ключ

POST/api/keys/{id}/toggle

Временно остановить ключ без удаления. Повторный вызов включает обратно.

Запрос
curl
curl -X POST "https://xyvero.store/api/keys/{id}/toggle" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{ "ok": true, "active": false, "status": "disabled" }

Перевыпустить секрет ключа

POST/api/keys/{id}/rotate

Старый секрет перестаёт работать сразу, лимиты и история остаются.

Запрос
curl
curl -X POST "https://xyvero.store/api/keys/{id}/rotate" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{ "ok": true, "api_key": "sk_live_new…", "key_prefix": "sk_live_new" }

Удалить ключ

DELETE/api/keys/{id}

Ключ отзывается навсегда.

Запрос
curl
curl -X DELETE "https://xyvero.store/api/keys/{id}" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{ "ok": true, "message": "Ключ успешно удалён" }

Пополнить баланс: СБП, карта, крипта

POST/api/payments

Создаёт счёт и возвращает ссылку на оплату — откройте её пользователю или отправьте в бот. Минимум 20 ₽. Способ: rollypay_sbp — СБП, rollypay_card — карта, cryptobot — криптовалюта.

Запрос
curl
curl -X POST "https://xyvero.store/api/payments" \
  -H "Authorization: Bearer $XYVERO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "amount_rub": 500, "provider": "rollypay_sbp" }'
Ответ
json
{
  "id": "a3d9…",
  "provider": "rollypay_sbp",
  "amount_usd": 5.18,
  "pay_url": "https://…",
  "status": "pending"
}

Какие способы сейчас включены — GET /api/payments/methods. Деньги зачисляются автоматически после оплаты.

Статус оплаты

GET/api/payments

История пополнений. Найдите счёт по id и дождитесь статуса confirmed — опрашивайте раз в 5–10 секунд.

Запрос
curl
curl "https://xyvero.store/api/payments" \
  -H "Authorization: Bearer $XYVERO_TOKEN"
Ответ
json
{
  "items": [
    { "id": "a3d9…", "provider": "rollypay_sbp", "amount_rub": 500, "status": "confirmed" }
  ]
}

Активировать промокод

POST/api/payments/redeem

Код на баланс зачисляет сумму сразу.

Запрос
curl
curl -X POST "https://xyvero.store/api/payments/redeem" \
  -H "Authorization: Bearer $XYVERO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "code": "XYABC123DEFG" }'
Ответ
json
{ "ok": true, "amount_rub": 10, "balance_rub": 25.4 }

Готовый сценарий: магазин ключей в боте

Покупатель платит вам → бот создаёт ему ключ из вашего баланса. Баланс пополняете ссылкой на СБП и ждёте подтверждения.

python
# Мини-магазин ключей в Telegram-боте (python-telegram-bot + requests)
import os, time, requests

BASE = "https://xyvero.store"
H = {"Authorization": f"Bearer {os.environ['XYVERO_TOKEN']}"}

def sell_key(buyer_id: int, tokens: int) -> str:
    """Покупатель оплатил у вас — выдаём ему ключ из вашего баланса."""
    r = requests.post(f"{BASE}/api/keys", headers=H, json={
        "name": f"tg-{buyer_id}",
        "token_limit": tokens,
    })
    r.raise_for_status()
    return r.json()["key"]["key"]          # sk_live_… — отправьте покупателю

def topup_link(amount_rub: int) -> tuple[str, str]:
    """Ссылка на пополнение вашего баланса через СБП."""
    r = requests.post(f"{BASE}/api/payments", headers=H,
                      json={"amount_rub": amount_rub, "provider": "rollypay_sbp"})
    r.raise_for_status()
    p = r.json()
    return p["id"], p["pay_url"]

def wait_paid(payment_id: str, timeout=600) -> bool:
    end = time.time() + timeout
    while time.time() < end:
        items = requests.get(f"{BASE}/api/payments", headers=H).json()["items"]
        st = next((i["status"] for i in items if i["id"] == payment_id), None)
        if st == "confirmed":
            return True
        time.sleep(8)
    return False

Токен не даёт доступа к админке и не может выпускать другие токены. Если он утёк — перевыпустите или отзовите его выше: старый перестанет работать сразу.