Документация
API для партнёров
Покупка товаров со своего баланса по HTTPAPI даёт то же самое, что магазин в 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, действует по общим правилам магазина — см. Условия оказания услуг.