Base URL

Todos os endpoints abaixo sao relativos a esta base publica de producao.

https://xgamesclub.com 22 provedores ativos 1,114 jogos ativos

Autenticacao

As rotas de listagem sao publicas. O endpoint de launch exige credenciais de agente no JSON da requisicao.

Listagens sem autenticacao

GET /api/v1/providers e GET /api/v1/games.

Launch com credenciais

Campos obrigatorios: agent_code, agent_token e agent_secret.

Callback URL

Cada agente possui um callback_url unico. Essa mesma URL recebe os eventos user_balance e transaction.

A callback_url deve ser HTTPS publica e responder HTTP 200.

GET /api/v1/providers

Lista provedores cadastrados conforme base de dados.

Request
GET https://xgamesclub.com/api/v1/providers
Response 200
{
    "status": 1,
    "msg": "Lista de provedores",
    "providers": [
        {
            "id": "1",
            "code": "BOOONGO",
            "name": "BOOONGO",
            "type": "slot",
            "status": "1"
        },
        {
            "id": "2",
            "code": "CQ9",
            "name": "CQ9",
            "type": "slot",
            "status": "1"
        },
        {
            "id": "3",
            "code": "DREAMTECH",
            "name": "DREAMTECH",
            "type": "slot",
            "status": "1"
        }
    ]
}

GET /api/v1/games

Lista somente jogos ativos. Use provider + game_code retornados para lancamento.

Request
GET https://xgamesclub.com/api/v1/games
Response 200
{
    "status": 1,
    "msg": "SUCCESS",
    "games": [
        {
            "game_name": "15 Dragon Pearls",
            "game_code": "15_dragon_pearls",
            "provider": "BOOONGO",
            "img_url": "https://xgamesclub.com/storage/games/playfiver/15_dragon_pearls.webp",
            "game_type": "slot",
            "status": "1",
            "original": "0",
            "distribution": "originais"
        },
        {
            "game_name": "3 Coins",
            "game_code": "3_coins",
            "provider": "BOOONGO",
            "img_url": "https://xgamesclub.com/storage/games/playfiver/3_coins.webp",
            "game_type": "slot",
            "status": "1",
            "original": "0",
            "distribution": "originais"
        }
    ]
}

POST /api/v1/game-launch

Cria sessao de jogo e retorna launch_url para abertura.

Campo Tipo Obrigatorio Descricao
method string Sim Use exatamente "game_launch".
agent_code string Sim Codigo do agente.
agent_token string Sim Token do agente.
agent_secret string Sim Secret key do agente.
user_code string Sim Identificador publico do jogador no sistema parceiro.
user_balance number Sim Saldo do jogador. O backend exige valor positivo (> 0).
provider_code string Sim Codigo do provedor, conforme /api/v1/providers.
game_code string Sim Codigo do jogo ativo, conforme /api/v1/games.
lang string (2) Nao Idioma. Padrao: "pt".
Body JSON
{
    "method": "game_launch",
    "agent_code": "AGT001",
    "agent_token": "xxxxxxxx",
    "agent_secret": "yyyyyyyy",
    "user_code": "player_123",
    "user_balance": 100.5,
    "provider_code": "BOOONGO",
    "game_code": "15_dragon_pearls",
    "lang": "pt"
}
Response 200
{
    "status": 1,
    "msg": "SUCCESS",
    "launch_url": "https://xgamesclub.com/play/15_dragon_pearls/eyJ0b2tlbiI6..."
}

Abrir launch_url

Use iframe ou nova aba conforme o produto parceiro.

Iframe
<iframe
  src="https://xgamesclub.com/play/15_dragon_pearls/eyJ0b2tlbiI6..."
  width="100%"
  height="720"
  frameborder="0"
  allowfullscreen
></iframe>
Observacao
launch_url interna:
- protegida por token
- expira por sessao
- gere novamente via game-launch

launch_url sports:
- pode vir direta do provedor

Callback user_balance

Evento de consulta/sincronizacao de saldo do jogador.

Payload
{
    "method": "user_balance",
    "user_code": "player_123",
    "user_balance": 100.5
}
Resposta esperada
HTTP/1.1 200 OK

Callback transaction

Evento de rodada processada. O objeto interno muda por game_type.

Payload slot
{
    "method": "transaction",
    "user_code": "player_123",
    "user_balance": 97.3,
    "game_type": "slot",
    "slot": {
        "provider_code": "BOOONGO",
        "game_code": "15_dragon_pearls",
        "type": "BASE",
        "bet_money": 1,
        "win_money": 0.3,
        "txn_id": "txn_20260101_00001",
        "txn_type": "debit_credit"
    }
}
Payload pool
{
    "method": "transaction",
    "user_code": "player_123",
    "user_balance": 95.1,
    "game_type": "pool",
    "pool": {
        "provider_code": "SINUCA",
        "game_code": "sinuca_10",
        "type": "BASE",
        "bet_money": 2,
        "win_money": 1.2,
        "txn_id": "pool_20260101_00077",
        "txn_type": "debit_credit"
    }
}
Responda 200 OK e aplique idempotencia por txn_id no seu ledger.

Status e erros

Codigos comuns no fluxo de game-launch.

HTTP Causa Endpoint
400 Falha do provedor na criacao da launch_url. POST /api/v1/game-launch
403 Credenciais invalidas, jogo indisponivel ou saldo operacional insuficiente. POST /api/v1/game-launch
404 Jogo nao encontrado para o provider_code informado. POST /api/v1/game-launch
422 Validacao falhou (campos obrigatorios ausentes ou formato invalido). POST /api/v1/game-launch

Boas praticas

Recomendacoes publicas para integracao segura.

  • Use callback_url em HTTPS publico.
  • Registre logs de callbacks para auditoria.
  • Aplique idempotencia por txn_id.
  • Nao exponha agent_token e agent_secret no frontend.
  • Atualize catalogo local consumindo /providers e /games periodicamente.

Exemplos cURL

Chamadas rapidas para homologacao.

Listar provedores
curl -s https://xgamesclub.com/api/v1/providers
Listar jogos
curl -s https://xgamesclub.com/api/v1/games
Game launch
curl -s -X POST https://xgamesclub.com/api/v1/game-launch \
  -H "Content-Type: application/json" \
  -d '{
    "method": "game_launch",
    "agent_code": "AGT001",
    "agent_token": "xxxxxxxx",
    "agent_secret": "yyyyyyyy",
    "user_code": "player_123",
    "user_balance": 100.50,
    "provider_code": "BOOONGO",
    "game_code": "15_dragon_pearls",
    "lang": "pt"
  }'

Exemplo Node.js (fetch)

Exemplo basico para requisitar launch_url.

Node.js
async function launch() {
  const res = await fetch("https://xgamesclub.com/api/v1/game-launch", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      method: "game_launch",
      agent_code: "AGT001",
      agent_token: "xxxxxxxx",
      agent_secret: "yyyyyyyy",
      user_code: "player_123",
      user_balance: 100.50,
      provider_code: "BOOONGO",
      game_code: "15_dragon_pearls",
      lang: "pt"
    })
  });

  const json = await res.json();
  console.log(json.launch_url);
}