Перейти к основному содержимому

POST /api/v1/partner/bets

Размещение ставки на рынке предсказаний за одного из пользователей партнёра. Стейк списывается с аккаунта-флоата партнёра, а позиция открывается на суб-аккаунте Intotes, привязанном к external_user_id.

Суммы — целые числа в копейках, где 1 RUB = 100 копеек. Соглашения о денежных значениях и ценах, принятые во всём API, см. в разделе Формат денежных значений.

Аутентификация

Обязательно. API-ключ партнёра в заголовке X-Partner-Key, а не Bearer-токен. См. Партнёрская интеграция.

Запрос

Параметры тела запроса

ПараметрТипОбязательноОписание
external_user_idstringДаИдентификатор пользователя в вашей системе. Пользователь автоматически маппится на суб-аккаунт Intotes.
market_idint64ДаID рынка, на котором размещается ставка.
sidestringДаПокупаемая сторона: "yes" или "no".
amount_kopecksintДаСтейк в копейках. Списывается с аккаунта-флоата партнёра.
client_bet_idstringДаВаш уникальный ключ идемпотентности для этой ставки.

ID рынков возвращает Рынки пула — список рынков одного пула; сами ID пулов приходят вместе с каждым событием в Все события.

Пример

curl -X POST https://api.intotes.com/api/v1/partner/bets \
-H "X-Partner-Key: <partner_key>" \
-H "Content-Type: application/json" \
-d '{
"external_user_id": "user_42",
"market_id": 12345,
"side": "yes",
"amount_kopecks": 50000,
"client_bet_id": "bet_abc_001"
}'

Ответ

200 OK

{
"status": "accepted",
"client_bet_id": "bet_abc_001",
"external_user_id": "user_42",
"user_id": 987654,
"market_id": 12345,
"side": "yes",
"cost_kopecks": 50000,
"shares_delta": 91234,
"fee_bps": 300
}

Полученная позиция идёт в общий LMSR-пул — тот же пул, что обслуживает обычные сделки платформы. См. LMSR AMM. Позицию можно закрыть позже через Sell Position.

Поля ответа

ПолеТипОписание
statusstring"accepted", когда ставка размещена.
client_bet_idstringКлюч идемпотентности, отправленный в запросе.
external_user_idstringИдентификатор пользователя в вашей системе.
user_idint64ID суб-аккаунта Intotes, привязанного к external_user_id.
market_idint64Рынок, на котором размещена ставка.
sidestringКупленная сторона: "yes" или "no".
cost_kopecksintСумма, списанная с аккаунта-флоата, в копейках.
shares_deltaintКоличество акций, добавленных к позиции. 100 акций = 1 токен.
fee_bpsintКомиссия сделки в базисных пунктах.

Как на платформе применяются комиссии сделок, описано в разделе Комиссии и сборы.

Идемпотентный повтор

Повтор запроса с client_bet_id, который уже был принят, возвращает следующее тело. Ставка не размещается второй раз, и повторного списания с аккаунта-флоата не происходит.

{
"status": "already_accepted",
"client_bet_id": "bet_abc_001"
}

Полный контракт идемпотентности см. в разделе Партнёрская интеграция.

Ошибки

СтатусКодОписание
400BAD_BODYНевалидный JSON в теле запроса.
400BAD_PARAMSОтсутствуют или неверны обязательные поля.
400BET_LIMITСтейк выше лимита партнёра на ставку.
400TRADE_FAILEDСделка отклонена, например, если рынок закрыт.
402INSUFFICIENT_FLOATНа аккаунте-флоате не хватает средств. Пополните его.
500RESOLVE_USER_FAILEDНе удалось создать или найти суб-аккаунт.
500RECORD_FAILEDВнутренняя ошибка записи.

Ошибки аутентификации, общие для всех партнёрских эндпоинтов, перечислены в разделе Обзор, а полный справочник кодов — в разделе Обработка ошибок.