Pular para o conteúdo

Visão geral

A Bookmaker é um sportsbook B2B multi-tenant. Você mantém o seu site, as contas dos seus jogadores e o seu caixa; nós operamos o sportsbook (odds, mercados, aceite de apostas, liquidação) e o exibimos dentro das suas páginas em um iframe. O dinheiro nunca sai da sua carteira: a cada aposta e a cada liquidação, os nossos servidores chamam os seus.

Iframe + carteira seamless (este guia) White label completo
Jogadores, login, KYC Seus. Você nos diz quem é o jogador, servidor a servidor. Nossos: cadastro, KYC, login com segundo fator.
Saldo e caixa Sua carteira. Chamamos debit, credit e rollback nela. Nosso ledger e caixa PIX.
Onde fica o sportsbook Em um iframe nas suas páginas (SDK de incorporação). Em um domínio próprio com a sua marca.
O que você desenvolve Uma chamada de sessão, o iframe, quatro endpoints de carteira. Nada: domínio e tema são configurados.

Este guia cobre o modelo de iframe. Para um white label completo, fale com o seu gerente de conta: ele é configurado, não integrado.

  1. Login. O jogador entra no seu site. O seu servidor chama POST /api/v1/integration/sessions com a sua chave de API e recebe um launch token: de uso único, válido por 120 segundos.
  2. Abertura. A sua página monta o sportsbook com o SDK de incorporação e o launch token. O iframe troca o token, uma única vez, por um token de sessão que só existe dentro do iframe; assim, tokens de longa duração nunca aparecem em URLs, logs ou cabeçalhos Referer.
  3. Aposta. Quando o jogador aposta, chamamos POST {sua walletUrl}/debit, assinado com HMAC-SHA256. Você responde com o novo saldo, ou insufficient_funds.
  4. Liquidação. Quando o mercado tem resultado, chamamos credit: o prêmio de uma aposta vencedora, o valor apostado de uma aposta anulada e um crédito de valor zero para uma aposta perdida, para que toda aposta seja encerrada nos seus registros.
  5. Eventos. O iframe avisa a sua página do que acontece via postMessage: balance_changed, bet_placed, bet_settled, login_required, deposit_requested e outros, para que o seu cabeçalho e o seu caixa fiquem sincronizados.
Sequência da integraçãoO servidor do operador cria a sessão com a chave de API e entrega um launch token à página; o iframe troca o token por uma sessão; cada aposta debita a carteira do operador e cada liquidação credita, inclusive com valor zero para apostas perdidas.Página do operadornavegador do jogadorServidor do operadorseu backendIframe do sportsbooknossa origemAPI do sportsbookservidor a servidorCarteira do operadorseus endpoints /wallet1 Loginjogador entra no seu sitePOST /integration/sessions (X-API-Key)launchToken (uso único, 120 s)launchToken2 Abertura do iframemount({ launchToken }) ou set_launch_tokenPOST /integration/launchtoken de sessão (só em memória)ready · balance_changed3 ApostaPOST /betsPOST /debit kind=bet (HMAC){ txId, balance }aposta aceita + saldo (push)bet_placed · balance_changed4 LiquidaçãoPOST /credit kind=payout (0 se perdida){ txId, balance }push: aposta liquidada, saldobet_settled · balance_changedrequisição HTTPSrespostapostMessage (SDK)chamada de carteira assinada
O servidor do operador cria a sessão com a chave de API e entrega um launch token à página; o iframe troca o token por uma sessão; cada aposta debita a carteira do operador e cada liquidação credita, inclusive com valor zero para apostas perdidas.

No back office

Autorize as origens do seu site a enquadrar o sportsbook e defina o seu tema (Incorporação, Tema).

  • Uma mesma origem serve o sportsbook (/), a API (/api/v1), o SDK de incorporação (/embed/v1.js) e esta documentação (/docs/). O seu gerente de conta informa as origens de sandbox e de produção; localmente é http://localhost:8080.
  • JSON na entrada e na saída. Toda chamada à API identifica o tenant com X-Tenant-ID.
  • Valores monetários são inteiros em unidades menores (centavos): 1050 é R$ 10,50 ou US$ 10.50. Nunca ponto flutuante.
  • Erros vêm como {"error": {"code": "...", "message": "...", "details": {...}}}. Decida pelo code (e por details.reason), nunca pela message.