For operators

Quick Integration

Copy the iframe embed and generate the production token for the official subdomains treasure-dive.i-gaming.co and caramelo-fortune.i-gaming.co.

1. Generate token

In the /operator → Tokens panel, generate a token with allowed_domains = game subdomain.

2. Copy embed

Paste the iframe snippet into the subdomain's HTML and replace {{TOKEN_PH}}.

3. Validate

Test with ?demo=1, check postMessage events, and activate production.

S
gold-tiger-slot.i-gaming.co

Gold Tiger

Slot · slug gold-tiger-slot
Iframe embed (paste into subdomain's HTML)html
<!-- gold-tiger-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Gold Tiger</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/gold-tiger-slot?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:gold-tiger-slot",
    "allowed_domains": ["gold-tiger-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:gold-tiger-slot",
    allowed_domains: ["gold-tiger-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:gold-tiger-slot",
    "allowed_domains": ["gold-tiger-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=gold-tiger-slot returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
money-money.i-gaming.co

Money Money

Slot · slug money-money
Iframe embed (paste into subdomain's HTML)html
<!-- money-money.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Money Money</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/money-money?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:money-money",
    "allowed_domains": ["money-money.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:money-money",
    allowed_domains: ["money-money.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:money-money",
    "allowed_domains": ["money-money.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=money-money returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
mega-blocs.i-gaming.co

Mega Blocks

Slot · slug mega-blocs
Iframe embed (paste into subdomain's HTML)html
<!-- mega-blocs.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Mega Blocks</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/mega-blocs?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:mega-blocs",
    "allowed_domains": ["mega-blocs.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:mega-blocs",
    allowed_domains: ["mega-blocs.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:mega-blocs",
    "allowed_domains": ["mega-blocs.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=mega-blocs returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
tower-treasure.i-gaming.co

Tower Treasure

Slot · slug tower-treasure
Iframe embed (paste into subdomain's HTML)html
<!-- tower-treasure.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Tower Treasure</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/tower-treasure?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:tower-treasure",
    "allowed_domains": ["tower-treasure.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:tower-treasure",
    allowed_domains: ["tower-treasure.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:tower-treasure",
    "allowed_domains": ["tower-treasure.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=tower-treasure returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
brasil-bingo.i-gaming.co

Bingo Royale

Slot · slug brasil-bingo
Iframe embed (paste into subdomain's HTML)html
<!-- brasil-bingo.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Bingo Royale</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/brasil-bingo?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:brasil-bingo",
    "allowed_domains": ["brasil-bingo.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:brasil-bingo",
    allowed_domains: ["brasil-bingo.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:brasil-bingo",
    "allowed_domains": ["brasil-bingo.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=brasil-bingo returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
tropical-slice.i-gaming.co

Tropical Slice

Slot · slug fruta-explosiva
Iframe embed (paste into subdomain's HTML)html
<!-- tropical-slice.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Tropical Slice</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/fruta-explosiva?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:fruta-explosiva",
    "allowed_domains": ["tropical-slice.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:fruta-explosiva",
    allowed_domains: ["tropical-slice.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:fruta-explosiva",
    "allowed_domains": ["tropical-slice.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=fruta-explosiva returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
boom-mines.i-gaming.co

Boom Mines

Slot · slug boom-mines
Iframe embed (paste into subdomain's HTML)html
<!-- boom-mines.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Boom Mines</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/boom-mines?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:boom-mines",
    "allowed_domains": ["boom-mines.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:boom-mines",
    allowed_domains: ["boom-mines.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:boom-mines",
    "allowed_domains": ["boom-mines.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=boom-mines returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
C
corrida-motoboy.i-gaming.co

Motoca do Grau

Crash · slug corrida-de-moto
Iframe embed (paste into subdomain's HTML)html
<!-- corrida-motoboy.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Motoca do Grau</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/corrida-de-moto?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:corrida-de-moto",
    "allowed_domains": ["corrida-motoboy.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:corrida-de-moto",
    allowed_domains: ["corrida-motoboy.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:corrida-de-moto",
    "allowed_domains": ["corrida-motoboy.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=corrida-de-moto returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
pirates-mines.i-gaming.co

Piratas Mines

Slot · slug piratas-mines
Iframe embed (paste into subdomain's HTML)html
<!-- pirates-mines.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Piratas Mines</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/piratas-mines?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:piratas-mines",
    "allowed_domains": ["pirates-mines.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:piratas-mines",
    allowed_domains: ["pirates-mines.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:piratas-mines",
    "allowed_domains": ["pirates-mines.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=piratas-mines returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
C
treasure-dive.i-gaming.co

Mergulho ao Tesouro

Crash · slug mergulho-ao-tesouro
Iframe embed (paste into subdomain's HTML)html
<!-- treasure-dive.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Mergulho ao Tesouro</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/mergulho-ao-tesouro?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:mergulho-ao-tesouro",
    "allowed_domains": ["treasure-dive.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:mergulho-ao-tesouro",
    allowed_domains: ["treasure-dive.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:mergulho-ao-tesouro",
    "allowed_domains": ["treasure-dive.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=mergulho-ao-tesouro returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
C
india-rush.i-gaming.co

India Rush

Crash · slug india-rush
Iframe embed (paste into subdomain's HTML)html
<!-- india-rush.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>India Rush</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/india-rush?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:india-rush",
    "allowed_domains": ["india-rush.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:india-rush",
    allowed_domains: ["india-rush.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:india-rush",
    "allowed_domains": ["india-rush.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=india-rush returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
deuses-da-terra.i-gaming.co

Deuses da Terra

Slot · slug deuses-da-terra
Iframe embed (paste into subdomain's HTML)html
<!-- deuses-da-terra.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Deuses da Terra</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/deuses-da-terra?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:deuses-da-terra",
    "allowed_domains": ["deuses-da-terra.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:deuses-da-terra",
    allowed_domains: ["deuses-da-terra.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:deuses-da-terra",
    "allowed_domains": ["deuses-da-terra.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=deuses-da-terra returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
dragao-imperial-slot.i-gaming.co

Dragão Imperial

Slot · slug dragao-imperial
Iframe embed (paste into subdomain's HTML)html
<!-- dragao-imperial-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Dragão Imperial</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/dragao-imperial?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:dragao-imperial",
    "allowed_domains": ["dragao-imperial-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:dragao-imperial",
    allowed_domains: ["dragao-imperial-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:dragao-imperial",
    "allowed_domains": ["dragao-imperial-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=dragao-imperial returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
farao-slot.i-gaming.co

Faraó Dourado

Slot · slug farao-dourado
Iframe embed (paste into subdomain's HTML)html
<!-- farao-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Faraó Dourado</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/farao-dourado?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:farao-dourado",
    "allowed_domains": ["farao-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:farao-dourado",
    allowed_domains: ["farao-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:farao-dourado",
    "allowed_domains": ["farao-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=farao-dourado returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
los-muertos.i-gaming.co

Los Muertos

Slot · slug los-muertos
Iframe embed (paste into subdomain's HTML)html
<!-- los-muertos.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Los Muertos</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/los-muertos?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:los-muertos",
    "allowed_domains": ["los-muertos.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:los-muertos",
    allowed_domains: ["los-muertos.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:los-muertos",
    "allowed_domains": ["los-muertos.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=los-muertos returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
tropical-slot.i-gaming.co

Tropical Slot

Slot · slug tropical-slot
Iframe embed (paste into subdomain's HTML)html
<!-- tropical-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Tropical Slot</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/tropical-slot?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:tropical-slot",
    "allowed_domains": ["tropical-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:tropical-slot",
    allowed_domains: ["tropical-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:tropical-slot",
    "allowed_domains": ["tropical-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=tropical-slot returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
favela-slot.i-gaming.co

Favela Slot

Slot · slug favela-slot
Iframe embed (paste into subdomain's HTML)html
<!-- favela-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Favela Slot</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/favela-slot?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:favela-slot",
    "allowed_domains": ["favela-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:favela-slot",
    allowed_domains: ["favela-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:favela-slot",
    "allowed_domains": ["favela-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=favela-slot returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
caramelo-fortune.i-gaming.co

Caramelo da Sorte

Slot · slug caramelo-da-sorte
Iframe embed (paste into subdomain's HTML)html
<!-- caramelo-fortune.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Caramelo da Sorte</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/caramelo-da-sorte?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:caramelo-da-sorte",
    "allowed_domains": ["caramelo-fortune.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:caramelo-da-sorte",
    allowed_domains: ["caramelo-fortune.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:caramelo-da-sorte",
    "allowed_domains": ["caramelo-fortune.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=caramelo-da-sorte returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
capivara-jackspot.i-gaming.co

Capivara Milionária

Slot · slug capivara-milionaria
Iframe embed (paste into subdomain's HTML)html
<!-- capivara-jackspot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Capivara Milionária</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/capivara-milionaria?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:capivara-milionaria",
    "allowed_domains": ["capivara-jackspot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:capivara-milionaria",
    allowed_domains: ["capivara-jackspot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:capivara-milionaria",
    "allowed_domains": ["capivara-jackspot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=capivara-milionaria returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
S
boteco-slot.i-gaming.co

Boteco da Sorte

Slot · slug boteco-da-sorte
Iframe embed (paste into subdomain's HTML)html
<!-- boteco-slot.i-gaming.co -->
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title>Boteco da Sorte</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <style>
      html,body{margin:0;height:100%;background:#0a0a0a}
      .frame{position:fixed;inset:0;border:0;width:100%;height:100%}
    </style>
  </head>
  <body>
    <iframe
      class="frame"
      src="https://i-gaming.co/games/boteco-da-sorte?token={{TOKEN}}&lang=pt-BR&currency=BRL"
      allow="autoplay; fullscreen"
      referrerpolicy="strict-origin-when-cross-origin"
    ></iframe>
    <script>
      window.addEventListener("message", (e) => {
        if (e.origin !== "https://i-gaming.co") return;
        const { type, payload } = e.data || {};
        if (type === "igaming:ready")       console.log("Jogo pronto", payload);
        if (type === "igaming:bet.placed")  console.log("Aposta", payload);
        if (type === "igaming:bet.lost")    console.log("Derrota", payload);
        if (type === "igaming:error")       console.error("Erro", payload);
      });
    </script>
  </body>
</html>
Generate production token (cURL)bash
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "production",
    "scope": "game:boteco-da-sorte",
    "allowed_domains": ["boteco-slot.i-gaming.co"],
    "expires_in_seconds": 86400,
    "rotate_previous": true
  }'
Generate production token (Node.js)ts
// Node 20+ (fetch nativo)
const res = await fetch("https://i-gaming.co/api/public/v1/tokens/request", {
  method: "POST",
  headers: {
    "X-Operator-Token": process.env.OPERATOR_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    environment: "production",
    scope: "game:boteco-da-sorte",
    allowed_domains: ["boteco-slot.i-gaming.co"],
    expires_in_seconds: 86_400,
    rotate_previous: true,
  }),
});
const { token, expires_at, token_id } = await res.json();
Demo token for validationbash
# Token demo (não consome saldo real)
curl -X POST https://i-gaming.co/api/public/v1/tokens/request \
  -H "X-Operator-Token: $OPERATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "demo",
    "scope": "game:boteco-da-sorte",
    "allowed_domains": ["boteco-slot.i-gaming.co"],
    "expires_in_seconds": 3600
  }'
Pre-flight: GET /api/public/v1/game-config?slug=boteco-da-sorte returns effective RTP, min_bet, max_bet, and max_payout applicable to this operator.
Extras — deep dive
Optional complement. Everything above is enough to go live.
See it running in 30 seconds
Real demo iframe (no token, no real balance). Events shown live below.
Open in isolated environment
Aguardando visualização…
postMessage console
Waiting for events…
postMessage events reference
All events the iframe emits to the parent. Origin is always https://i-gaming.co.
TypeWhenExample payload
igaming:readyGame booted and ready to receive input.{ slug, session_id }
igaming:bet.placedBet accepted, balance debited.{ round_id, amount_cents }
igaming:bet.wonWinning round settled.{ round_id, win_cents, multiplier }
igaming:bet.lostLosing round settled.{ round_id, amount_cents }
igaming:wallet.syncBalance updated (any source).{ balance_cents }
igaming:round.settledRound finalized (win or loss).{ round_id, delta_cents }
igaming:errorGeneric error — see payload.code.{ code, message }
Wallet HMAC error codes
Codes returned by /api/public/dl/seamless/*.
CodeMeaningWhat to do
origin_or_signature_requiredNo HMAC header or invalid origin.Send x-dl-ts and x-dl-sig headers.
bad_signatureSignature does not match secret.Check PORTAL_HMAC_SECRET and payload.
launch_not_foundLaunch token not registered.Mint a new token via /tokens/request.
launch_token_invalidToken expired, revoked, or malformed.Rotate token before expires_at.
insufficient_fundsPlayer balance below bet.Show top-up UI on your side.
duplicate_roundRound already settled (idempotency).Safe to ignore — replay was blocked.
stale_timestampHeader x-dl-ts drifted > 60s.Sync server clock via NTP.
Test now without signup
Isolated environment runs a real E2E round with a demo token. No real balance consumed.

Go-live checklist

  • Token criado com allowed_domains exato do subdomínio
  • Pré-flight game-config retornou status 200 e RTP esperado
  • Iframe carrega com referrerpolicy strict-origin-when-cross-origin
  • Evento igaming:ready recebido no postMessage
  • Teste com ?demo=1 concluído sem erros
  • Produção ativada removendo demo=1 e incluindo user_id
  • Rotação de token agendada antes de expires_at
  • Logs de auditoria revisados em /operator → Tokens