Документация

API для партнёров

Покупка товаров со своего баланса по HTTP

API даёт то же самое, что магазин в Telegram-боте: тот же каталог, те же цены, тот же кошелёк. Ключ создаётся в боте — «Мой Профиль» → «API для партнёров» → «Создать ключ». Ключ показывается один раз, восстановить его нельзя: если потеряли — отзовите и создайте новый. Активных ключей может быть до трёх.

Авторизация

Каждый запрос требует заголовок Authorization: Bearer vai_live_…. Ключ привязан к вашему Telegram-аккаунту: покупки списываются с вашего баланса и видны в «Мои покупки» в боте.

У ключа три права, они переключаются на его карточке в боте: «Каталог и цены», «Покупка», «История и данные аккаунтов». Если ключ живёт в чужом коде или на чужом сервере, имеет смысл выключить «Историю» — тогда утёкший ключ не отдаст учётные данные прошлых покупок.

Базовый адрес: https://a.visionaiteamapi.ru/api/v1/user

Эндпоинты

МетодПутьПравоЧто делает
GET/productsКаталогТовары магазина с ценами и точным остатком
GET/products/{id}КаталогОдин товар
GET/balanceБаланс и текущая скидка
POST/purchasesПокупкаКупить товар со своего баланса
GET/purchasesИсторияИстория покупок без учётных данных
GET/purchases/{id}ИсторияПокупка вместе с учётными данными

Цены и скидка

GET /products отдаёт два поля: base_price — цена из магазина, и your_price — она же с вашей реферальной скидкой. Скидка зависит от уровня реферальной программы и применяется автоматически при покупке, отдельно ничего передавать не нужно.

Если в реферальной программе выбран режим «Кэшбэк», скидка на покупки равна нулю — your_price совпадёт с base_price. Режим переключается в боте, не чаще одного раза в 30 дней.

Промокоды в API не применяются. Остаток в stock — точное число доступных штук.

curl -s https://a.visionaiteamapi.ru/api/v1/user/products \
  -H "Authorization: Bearer vai_live_..."

Покупка

Заголовок Idempotency-Key обязателен — без него запрос вернёт 400. Это защита от двойного списания: если ответ не дошёл из-за таймаута, повторите запрос с тем же ключом и получите тот же результат, а деньги спишутся один раз. В повторном ответе replay будет true. Генерируйте новый ключ на каждую новую покупку — например, UUID.

Если на складе меньше штук, чем запрошено, покупка не проходит целиком: вернётся 409 с полем available, баланс не тронут. Частичной выдачи нет. accounts всегда массив, даже когда куплена одна штука.

curl -s -X POST https://a.visionaiteamapi.ru/api/v1/user/purchases \
  -H "Authorization: Bearer vai_live_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"product_id": 42, "quantity": 2}'
{
  "purchase_id": 15832,
  "product_id": 42,
  "product_name": "CURSOR PRO",
  "quantity": 2,
  "base_price": 3580.00,
  "total_price": 3401.00,
  "balance": 12670.60,
  "replay": false,
  "accounts": [
    {
      "id": 90114,
      "product_id": 42,
      "format_type": "login_password",
      "credentials": { "login": "...", "password": "..." }
    },
    { "id": 90115, "...": "..." }
  ]
}

Ошибки

КодКогда
400Не передан заголовок Idempotency-Key
401Ключ неверный или отозван
402Недостаточно средств. В теле — balance и required
403Ключу не выдано нужное право
404Товара нет в каталоге или покупка не ваша
409Не хватает остатка (в теле available) либо Idempotency-Key переиспользован с другим телом
429Превышен лимит запросов. Ждите Retry-After секунд

Лимиты

ГруппаЛимит
Каталог и баланс60 запросов в минуту
Покупка20 запросов в минуту
История30 запросов в минуту

Лимит принадлежит ключу, а не IP. При превышении — 429 и заголовок Retry-After с числом секунд.

Если аккаунт не работает

Рекламации разбираются менеджером, отдельной ручки в API для этого нет. Напишите в боте: «Мой Профиль» → «Запрос в поддержку». Гарантия на аккаунты, купленные через API, действует по общим правилам магазина — см. Условия оказания услуг.