Documentação · API v1

Integre em minutos

Embeda nossos jogos no seu site com uma única tag <iframe>. Sem SDK, sem build, sem dor de cabeça.

Wizard de integração

~3 min

Valide seu domínio, gere um token demo e confirme o iframe — tudo aqui, sem sair da página.

1Domínio
2Token
3Validação
4Iframe

Sem https://. Ex: meusite.com, app.meusite.com ou localhost.

Quick start (60 segundos)

Cole esta tag no seu HTML. Pronto — o jogo carrega.

html
<iframe
  src="https://i-gaming.co/games/gold-tiger-slot?token=SEU_TOKEN&player=ID_DO_JOGADOR&lang=pt&currency=BRL"
  width="100%"
  height="720"
  allow="autoplay; fullscreen"
  style="border:0; border-radius:12px;"
></iframe>
1
Receba seu token
Te enviamos um token de demo em segundos.
2
Cole o iframe
Uma tag, zero dependências.
3
Vá ao ar
Funciona em desktop, tablet e mobile.

Passo a passo

1

Solicite seu token de integração

Fale com o time pelo formulário em /operators ou use o token demo para testar agora.

Você receberá um token no formato mt_xxxxxxxxxxxx com permissões e domínios autorizados (whitelist).

2

Cadastre os domínios autorizados

Informe os domínios onde o iframe vai rodar (ex: meusite.com). Apenas esses domínios poderão embedar — protege contra clonagem.

json
{
  "name": "Site Principal",
  "allowed_domains": ["meusite.com", "staging.meusite.com"]
}
3

Valide o token (opcional, recomendado)

Antes de renderizar, confirme se o token está ativo e quais domínios estão liberados:

bash
curl https://i-gaming.co/api/public/v1/auth/introspect \
  -H "X-Operator-Token: SEU_TOKEN"

Use X-Operator-Token como header padrão. Authorization: Bearer e x-api-key também são aceitos, mas alguns CDNs/proxies removem o header Authorization em rotas públicas.

4

Embeda o iframe

Aponte o src para o jogo desejado passando o token e os parâmetros do jogador.

html
<iframe src="https://i-gaming.co/games/mergulho-ao-tesouro?token=SEU_TOKEN&player=USER123&currency=BRL"
  width="100%" height="720" allow="autoplay; fullscreen" style="border:0"></iframe>
5

Acompanhe pelo painel

Em /operator você vê rodadas, apostas, liquidez e logs de segurança em tempo real.

Endpoints da API

Base URL: https://i-gaming.co/api/public/v1. Autenticação via header X-Operator-Token: <token> (recomendado). Também aceitamos x-api-key e Authorization: Bearer <token> — este último pode ser filtrado por CDNs/proxies em algumas redes.

GET/auth/verify
GET/auth/introspect
GET/operator
GET/stats?days=30
GET/round/current
GET/tokens
POST/tokens
DELETE/tokens?id=

Exemplo:

bash
curl https://i-gaming.co/api/public/v1/stats?days=7 \
  -H "X-Operator-Token: SEU_TOKEN"

Parâmetros do iframe

URL: https://i-gaming.co/games/<slug>?...

ParamObrigatórioDescrição
tokensimToken Bearer do operador.
playersimID único do jogador no seu sistema.
currencynãoBRL · USD · EUR (default: BRL)
langnãopt · en · es (default: pt)
modenãoreal · demo (default: real)
return_urlnãoURL de retorno ao fechar o jogo.

Jogos disponíveis:

Gold Tiger · Slot
/games/gold-tiger-slot
Money Money · Slot
/games/money-money
Mega Blocks · Slot
/games/mega-blocs
Tower Treasure · Slot
/games/tower-treasure
Bingo Royale · Slot
/games/brasil-bingo
Tropical Slice · Slot
/games/fruta-explosiva
Boom Mines · Slot
/games/boom-mines
Motoca do Grau · Crash
/games/corrida-de-moto
Piratas Mines · Slot
/games/piratas-mines
Mergulho ao Tesouro · Crash
/games/mergulho-ao-tesouro
India Rush · Crash
/games/india-rush
Deuses da Terra · Slot
/games/deuses-da-terra
Dragão Imperial · Slot
/games/dragao-imperial
Faraó Dourado · Slot
/games/farao-dourado
Los Muertos · Slot
/games/los-muertos
Tropical Slot · Slot
/games/tropical-slot
Favela Slot · Slot
/games/favela-slot
Caramelo da Sorte · Slot
/games/caramelo-da-sorte
Capivara Milionária · Slot
/games/capivara-milionaria
Boteco da Sorte · Slot
/games/boteco-da-sorte

Segurança

  • HTTPS + HSTS em todos os subdomínios.
  • CSP frame-ancestors montado dinamicamente a partir da sua whitelist — só os domínios cadastrados conseguem embedar.
  • Tokens hasheados (SHA-256). O segredo é exibido uma única vez na emissão.
  • Auditoria de cada validação de token e tentativa de render bloqueada (operador, IP, motivo).
  • Revogação imediata via API ou painel.

Proxy / CDN — configuração canônica

Todos os ambientes (produção + preview) e todos os 20 jogos devem seguir a mesma ordem de headers e allowlist de proxies para evitar divergência de IP, logs e rate-limit.

Ordem de headers de IP
  1. cf-connecting-ip — Cloudflare
  2. true-client-ip — Akamai / CF Enterprise
  3. x-real-ip — nginx interno
  4. x-forwarded-for — primeiro entry
Trusted proxies
  • Produção: somente Cloudflare (nuvem laranja)
  • Preview: Lovable edge
  • Bypass do CDN ⇒ 403 no origin
  • Nenhum proxy externo sem revisão
Documento completo: docs/PROXY-CDN-CONFIG.md — inclui checklist para novos domínios, monitoramento em Manager → API e alertas automáticos de ip_miss.

Jogo responsável

A plataforma inclui um sistema opcional de avisos automáticos de jogo responsável, exibido por cima do iframe pelo próprio portal — sem alterar o código dos jogos. Cada operador habilita, desabilita e ajusta os limites em /operator → Config → Jogo Responsável.

Nº de sessões / dia
Conta quantas vezes o jogador abriu qualquer jogo nas últimas 24h. Padrão: 10.
Tempo contínuo
Minutos ininterruptos jogando na sessão atual. Padrão: 60 min.
Nº de rodadas
Rodadas contadas desde a abertura do jogo atual. Padrão: 200.

Para cada gatilho o operador escolhe uma ação independente:

  • Banner soft — aviso discreto sobreposto ao jogo, o jogador continua normalmente.
  • Modal com confirmação — bloqueia até o jogador clicar em "continuar".
  • Cooldown obrigatório — pausa o jogo por X minutos (configurável) antes de liberar.
Como funciona tecnicamente
O portal (host do iframe) contabiliza aberturas, tempo e rodadas por jogador e, ao ultrapassar o limite configurado, renderiza um overlay por cima do iframe. Vale para os 6 jogos automaticamente, sem exigir alteração no código de cada jogo. Operadores que embedam nosso iframe herdam o mesmo comportamento com as suas próprias regras.

Troubleshooting

Iframe aparece em branco
Provavelmente o domínio não está na whitelist. Abra o console do navegador — procure por Refused to display ... frame-ancestors. Adicione o domínio em /operator → Tokens.
401 Unauthorized
Token inválido, expirado ou revogado. Use /auth/introspect para confirmar o status.
403 origin_forbidden
A origem da requisição não está em allowed_domains. Cadastre o domínio (sem https://).
Quero testar antes de publicar
Use o Playground — ele simula o embed e detecta erros de CSP em tempo real.
Quando trocar Authorization: Bearer por X-Operator-Token

Os dois headers autenticam a mesma requisição. Use X-Operator-Token como padrão — alguns CDNs/proxies/WAFs (Cloudflare em regras corporativas, App Gateway, alguns balanceadores TLS) removem ou reescrevem o header Authorization em rotas públicas, o que faz cair em 401 missing_bearer mesmo com token válido.

Sinais no painel de alertas (Admin → Segurança → Alertas auth / Tendências auth):

  • missing_bearer_spike ativo e requisições recentes com header_type = none vindas do seu IP → seu proxy está engolindo o Authorization. Migre para X-Operator-Token.
  • bearer_stripping_suspected — a razão da falha é missing_bearer, mas a mesma origem já enviou Authorization: Bearer antes com sucesso. Confirmação de stripping intermediário — troque o header.
  • token_invalid_spike com header_type = bearer → o header chega, o problema é o token (expirado/rotacionado). Não muda para X-Operator-Token — regenere o token.
  • Sem alertas ativos e integração funcionando → mantenha o header que já usa.

Como validar em 30s: chame /api/public/v1/auth/check com cada header e compare — se Authorization volta 401 e X-Operator-Token volta 200, é stripping garantido. O endpoint /api/public/v1/health/integration reporta o header_type detectado nas últimas requisições.

Próximos passos