API

API ставок на спорт

Всё, что делает букмекер, выведено в API: матчи, рынки, цены, приём ставок, cash-out, расчёт. Каждый продовый ключ выдаётся только после чек-листа сертификации по тем краевым случаям, которые ломают наивные интеграции: цена изменилась во время запроса, рынок приостановлен во время запроса, частичный cash-out по плечу, которое уже рассчитано.

Запросить документацию API

Два машинных корпуса, соединённые четырьмя плетёными кабелями, один из которых оранжевый

Две схемы интеграции

iFrameAPI
ФронтендНаш, встроенный в ваш сайтВаш
КошелёкВаш, через коллбэки seamless wallet (единого кошелька)Ваш, через коллбэки seamless wallet
Срок до запускаОт дней до пары недельШесть-двенадцать недель в зависимости от вашего фронтенда
Контроль над UXТолько оформлениеПолный
Типичный заказчикКазино, добавляющее вкладку ставокОператор, у которого букмекер и есть продукт; поставщики платформ

Во что обходится каждая схема в инженерном времени

Шесть-двенадцать недель выше — это календарное время для команды из двух человек, растянутое теми частями, которые нельзя вести параллельно: аутентификация раньше всего остального, каталог раньше купона. В таблице та же работа в человеко-днях по направлениям, чтобы было видно, какие части снимает iFrame. Диапазоны — разница между командой, которая уже выпускала букмекерский фронтенд, и той, которая нет.

Направление работiFrameAPI
Коллбэки кошелька и реестр за ними5–10 дней5–10 дней
Аутентификация, подпись запросов, ключи идемпотентности2–4 дня2–4 дня
Каталог: виды спорта, соревнования, матчи, рынки, исходыНа нас10–20 дней
Обновления live-цен и статусов по push-каналуНа нас5–10 дней
Купон, приём ставки и политика по изменению ценыНа нас10–15 дней
Экран cash-out: котировка, частичный, истечениеНа нас4–8 дней
Расчёт, перерасчёт и экраны истории ставокНа нас4–8 дней
Лимиты, самоисключение и правила лицензии в вашем интерфейсеТолько оформление3–6 дней
Прогон сертификации и правки по её итогам3–5 дней5–10 дней

Из итогов следуют две вещи. Кошелёк — это одинаковый объём работы при любой схеме, и именно эта часть чаще всего оказывается сделанной неверно, так что iFrame её не отменяет. iFrame снимает букмекерский фронтенд: от 36 до 67 человеко-дней по этой таблице. Именно эту цифру стоит взвешивать против владения интерфейсом, а не разницу в датах запуска.

Контракт seamless wallet

Ваш кошелёк держит баланс, а мы держим ставку. Ни одна сторона не может восстановить другую из собственных записей, и потому каждый вызов несёт и идентификатор ставки, и идентификатор транзакции. В таблице описаны четыре вызова: когда мы отправляем каждый, что нам нужно получить в ответ и что происходит, если ответа нет.

ВызовКогда мы его отправляемЧто нам нужно в ответЕсли истекает таймаут
БалансВ начале сессии и перед приёмом ставки, если ваши лимиты могли изменитьсяДоступный баланс по каждой валютеСтавка не принимается. Деньги не двигались, поэтому откатывать нечего.
Зарезервировать и списать ставкуПри приёме, с ключом запроса, идентификатором ставки и суммойПодтверждение и получившийся балансМы повторяем по тому же ключу, и ваш кошелёк должен вернуть первый результат, а не списать повторно. Если ситуация не разрешается, ставка не считается принятой, а попытка отмечается как неподтверждённая.
Зачислить выигрышПри расчёте выигравшей ставки или плеча и при исполнении cash-outПодтверждение и получившийся балансПовторяется по тому же ключу до подтверждения. Выигрыш не теряется никогда: он либо применён, либо отмечен как неисполненный.
Возврат и перерасчётПри возврате, отменённом событии или официальной корректировке результатаПодтверждение с применённой дельтойТот же ключ, то же правило. Перерасчёт, который не удаётся применить, удерживается и фиксируется, но никогда не применяется дважды.

Ключ запроса — это и есть весь контракт. Его несёт каждый вызов, а правило на вашей стороне такое: один и тот же ключ всегда даёт один и тот же ответ — первый. Кошелёк, который считает повтор новой инструкцией, спишет дважды при первом же обрыве соединения, а соединения обрываются. Поэтому песочница дублирует каждый вызов, и поэтому продовый ключ ждёт, пока дубли не начнут возвращаться идентичными. Таймаут и окно повторов задаются в договоре вместе с лимитами частоты, потому что зависят от того, где работает ваш кошелёк.

Что отдаёт API

  • Каталог: виды спорта, соревнования, матчи, рынки и исходы с ценами, статусом и состоянием приостановки. Пре-матч по REST с уведомлениями об изменениях; live по push (WebSocket) с дельтами цен и статусов, зеркалируя вышестоящие фиды, которые у Sportradar приходят поверх AMQP.
  • Приём ставок: ординары, экспрессы, системы и плечи bet builder (конструктора ставок), с обработкой изменения цены (принимать любую, принимать выше, отклонять), лимитами ставки из риск-движка и идемпотентными ключами запроса.
  • Seamless wallet: мы обращаемся к вашему кошельку, чтобы зарезервировать и списать ставку, зачислить выигрыш, вернуть и пересчитать; у игрока один баланс на казино и букмекера.
  • Cash-out: котировка и исполнение, полный и частичный, в live и пре-матче.
  • Расчёт: результаты и события расчёта по каждой ставке и каждому плечу, с перерасчётом при официальной корректировке и полным журналом аудита.
  • Контекст аккаунта: лимиты игрока, самоисключение и ограничения по лицензии передаются с каждым запросом, поэтому риск-движок и правила регулятора применяются к вашим игрокам так же, как к нашим.
  • Отчётность: оборот, GGR (валовой игровой доход) и маржа по видам спорта, рынкам и когортам игроков; файлы сверки расчётов.

Сертификация: сценарии и то, что должно происходить

Это те случаи, которые песочница проигрывает до выдачи продового ключа. Средняя колонка — поведение, по которому мы сертифицируем; правая — то, что вместо этого делает интеграция, не продумавшая случай, и как отказ выглядит в вашей очереди поддержки.

СценарийОжидаемое поведениеЧто делает непротестированная интеграция
Цена меняется между купоном и приёмом ставкиПринять, принять-если-выше или отклонить — согласно политике, переданной с запросом. Ставка стоит по одной цене.Принимает по устаревшей цене, а потом начинается спор о том, какая цена была показана.
Рынок приостанавливается, пока запрос в путиОтклонено с причиной «приостановка». Ничего не списывается.Списывает ставку, а затем возвращает её, оставляя списание и зачисление по ставке, которой никогда не было.
Приходит дубль приёма ставки с тем же ключом запросаОдна ставка, одно списание, повторно возвращается исходный ответ.Две ставки и два списания.
Кошелёк не отвечает на списаниеСтавка не считается принятой; попытка отмечается как неподтверждённая.Принимает ставку против неподтверждённого списания и обнаруживает нехватку при расчёте.
Частичный cash-out по экспрессу, одно плечо которого уже рассчитаноКотировка считается по всё ещё открытым плечам; рассчитанное плечо не переоценивается.Оценивает ставку целиком, а потом не может рассчитать то, что от неё осталось.
Официальный результат скорректирован после выплатыПерерасчёт применяется как дельта, при этом сохраняются и исходный расчёт, и корректировка.Перезаписывает исходный расчёт, и история больше не объясняет баланс.
Игрок пересекает лимит депозита или проигрыша посреди сессииПриём ставки отклонён по лимиту, лимит назван в ответе.Принимает ставку, потому что лимит живёт в вашей системе аккаунтов и с запросом никогда не передавался.
Вышестоящий фид отваливается при открытых ставкахРынки приостанавливаются, приём по затронутым матчам прекращается, открытые ставки остаются открытыми и рассчитываются, когда придут результаты.Продолжает принимать цены, которые перестали двигаться.

Фиды за этим API

API не привязан к конкретному фиду. За ним мы используем Sportradar, Genius Sports, LSports или OddsMatrix — в зависимости от вашего договора и рынков; в модели turnkey договор с фидом ваш, а мы его интегрируем.

ФидОпубликованное покрытие
Sportradar900,000+ событий в год, 32 вида спорта
Genius Sports600,000+ матчей, 40+ видов спорта
LSports175,000+ пре-матч событий в месяц, 100+ видов спорта, 2,500 рынков
OddsMatrix200,000+ live-событий в месяц

Подробнее о каждом фиде, включая то, какой мы рекомендуем для какой линии, — на странице turnkey букмекера.

Что не входит в лицензию только на данные о коэффициентах

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

Что требуетсяЛицензия на данные о коэффициентахЭтот API
Цены, матчи и статус рынковВходитВходит
Приём ставокРазрабатываете выВходит
Лимиты риска и экспозиции по игроку, рынку и событиюРазрабатываете выЛимиты ставки приходят из риск-движка вместе с запросом
Контракт кошелькаРазрабатываете выЧетыре вызова, идемпотентные, сертифицируются до выхода в прод
Расчёт цены cash-outРазрабатываете выКотировка и исполнение, полный и частичный
Расчёт ставок и плечРазрабатываете выВходит, по каждой ставке и каждому плечу
Перерасчёт при официальной корректировкеРазрабатываете выВходит, вместе с журналом аудита
Лимиты игрока и самоисключение, применяемые при приёме ставкиРазрабатываете выКонтекст аккаунта идёт с каждым запросом
Файлы сверки и отчётность регуляторуРазрабатываете выВходит

Лицензия на коэффициенты — правильная покупка для медиасайта, прогнозного продукта или модели: ни один из них не берёт деньги у игрока. Для оператора это неверная покупка, и в коммерческом предложении она стоит дешевле — так и совершается ошибка.

Песочница и выход в прод

Песочница с записанными повторами живых рынков, чтобы ваш фронтенд тестировался против реального движения цен, а не статичных данных. Чек-лист сертификации из вводного абзаца прогоняется по этой песочнице до выдачи продовых ключей, поэтому краевые случаи ловятся до запуска, а не на первой неделе живого трафика. Лимиты частоты и SLA фиксируются в договоре; мы называем их, когда знаем ваш ожидаемый пик одновременных запросов, потому что у API кассы и у live-фида разные допуски.

Частые вопросы

Можно ли взять только коэффициенты и принимать ставки самим?

Это лицензия на данные, а не API букмекера, — фид только с коэффициентами, который несколько наших вышестоящих поставщиков продают и напрямую, без приёма ставок, риск-менеджмента и расчёта. У нас всё наоборот: приём, риск и расчёт и есть продукт, а коэффициенты — то, против чего мы их выставляем.

Можно ли начать с iFrame и перейти на API позже?

Да, и в таком порядке это обходится дешевле. Работа по кошельку переносится без изменений, потому что обе схемы используют одни и те же четыре вызова. Вторым этапом вы делаете букмекерский фронтенд — те самые 36–67 человеко-дней из таблицы выше. Аккаунт, игроки и история ставок остаются на месте; меняется только интерфейс перед ними.

Лимиты задаём мы или вы?

Оба, но только в одну сторону. Риск-движок возвращает лимиты ставки по рынку, исходу и игроку вместе с каталогом, и вы можете их понизить. Поднять их выше лимитов экспозиции линии нельзя, потому что обязательства несёт тот, кто выставил цену на рынок. Ваши собственные правила — лимиты депозита и проигрыша, самоисключение, ограничения лицензии — идут с каждым запросом и применяются при приёме ставки, а не проверяются задним числом.

Поддерживаете ли вы фэнтези или тотализатор?

Тотализатор — да, на том же каталоге. Фэнтези — нет.

А контракты в стиле рынков предсказаний?

Другой продукт и в большинстве мест другая лицензия; см. платформу рынков предсказаний.