Para operadores
Integração rápida
Copie o embed em iframe e gere o token de produção para os subdomínios oficiais treasure-dive.i-gaming.co e caramelo-fortune.i-gaming.co.
1. Gerar token
No painel /operator → Tokens, gere um token com allowed_domains = subdomínio do jogo.
2. Copiar embed
Cole o snippet de iframe no HTML do subdomínio e substitua {{TOKEN_PH}}.
3. Validar
Teste com ?demo=1, confira eventos postMessage e ative produção.
S
gold-tiger-slot.i-gaming.co
Gold Tiger
Slot · slug
gold-tiger-slotEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=gold-tiger-slot retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
money-money.i-gaming.co
Money Money
Slot · slug
money-moneyEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=money-money retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
mega-blocs.i-gaming.co
Mega Blocks
Slot · slug
mega-blocsEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=mega-blocs retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
tower-treasure.i-gaming.co
Tower Treasure
Slot · slug
tower-treasureEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=tower-treasure retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
brasil-bingo.i-gaming.co
Bingo Royale
Slot · slug
brasil-bingoEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=brasil-bingo retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
tropical-slice.i-gaming.co
Tropical Slice
Slot · slug
fruta-explosivaEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=fruta-explosiva retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
boom-mines.i-gaming.co
Boom Mines
Slot · slug
boom-minesEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=boom-mines retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.C
corrida-motoboy.i-gaming.co
Motoca do Grau
Crash · slug
corrida-de-motoEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=corrida-de-moto retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
pirates-mines.i-gaming.co
Piratas Mines
Slot · slug
piratas-minesEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=piratas-mines retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.C
treasure-dive.i-gaming.co
Mergulho ao Tesouro
Crash · slug
mergulho-ao-tesouroEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=mergulho-ao-tesouro retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.C
india-rush.i-gaming.co
India Rush
Crash · slug
india-rushEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=india-rush retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
deuses-da-terra.i-gaming.co
Deuses da Terra
Slot · slug
deuses-da-terraEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=deuses-da-terra retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
dragao-imperial-slot.i-gaming.co
Dragão Imperial
Slot · slug
dragao-imperialEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=dragao-imperial retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
farao-slot.i-gaming.co
Faraó Dourado
Slot · slug
farao-douradoEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=farao-dourado retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
los-muertos.i-gaming.co
Los Muertos
Slot · slug
los-muertosEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=los-muertos retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
tropical-slot.i-gaming.co
Tropical Slot
Slot · slug
tropical-slotEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=tropical-slot retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
favela-slot.i-gaming.co
Favela Slot
Slot · slug
favela-slotEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=favela-slot retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
caramelo-fortune.i-gaming.co
Caramelo da Sorte
Slot · slug
caramelo-da-sorteEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=caramelo-da-sorte retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
capivara-jackspot.i-gaming.co
Capivara Milionária
Slot · slug
capivara-milionariaEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=capivara-milionaria retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.S
boteco-slot.i-gaming.co
Boteco da Sorte
Slot · slug
boteco-da-sorteEmbed em iframe (cole no HTML do subdomínio)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¤cy=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>Gerar token de produção (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
}'Gerar token de produção (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();Token demo para validaçãobash
# 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
}'Pré-flight:
GET /api/public/v1/game-config?slug=boteco-da-sorte retorna RTP efetivo, min_bet, max_bet e max_payout aplicáveis a este operador.Extras — aprofundamentoComplemento opcional. Tudo acima já é suficiente para ir ao ar.
Extras — aprofundamento
Complemento opcional. Tudo acima já é suficiente para ir ao ar.
Ver funcionando em 30 segundosIframe demo real (sem token, sem saldo real). Eventos aparecem ao vivo abaixo.
Ver funcionando em 30 segundos
Iframe demo real (sem token, sem saldo real). Eventos aparecem ao vivo abaixo.
Console de postMessage
Aguardando eventos…
Referência de eventos postMessageTodos os eventos que o iframe emite para o parent. Origin é sempre https://i-gaming.co.
Referência de eventos postMessage
Todos os eventos que o iframe emite para o parent. Origin é sempre https://i-gaming.co.
| Tipo | Quando | Payload exemplo |
|---|---|---|
| igaming:ready | Jogo iniciado e pronto para receber input. | { slug, session_id } |
| igaming:bet.placed | Aposta aceita, saldo debitado. | { round_id, amount_cents } |
| igaming:bet.won | Rodada ganha liquidada. | { round_id, win_cents, multiplier } |
| igaming:bet.lost | Rodada perdida liquidada. | { round_id, amount_cents } |
| igaming:wallet.sync | Saldo atualizado (qualquer origem). | { balance_cents } |
| igaming:round.settled | Rodada finalizada (ganho ou perda). | { round_id, delta_cents } |
| igaming:error | Erro genérico — veja payload.code. | { code, message } |
Códigos de erro do wallet HMACCódigos retornados por /api/public/dl/seamless/*.
Códigos de erro do wallet HMAC
Códigos retornados por /api/public/dl/seamless/*.
| Código | Significado | O que fazer |
|---|---|---|
| origin_or_signature_required | Sem header HMAC ou origin inválida. | Envie os headers x-dl-ts e x-dl-sig. |
| bad_signature | Assinatura não bate com o secret. | Confira PORTAL_HMAC_SECRET e payload. |
| launch_not_found | Launch token não registrado. | Gere novo token via /tokens/request. |
| launch_token_invalid | Token expirado, revogado ou malformado. | Rotacione o token antes de expires_at. |
| insufficient_funds | Saldo do jogador abaixo da aposta. | Mostre UI de recarga no seu lado. |
| duplicate_round | Rodada já liquidada (idempotência). | Pode ignorar — replay foi bloqueado. |
| stale_timestamp | Header x-dl-ts com drift > 60s. | Sincronize o relógio via NTP. |
Testar agora sem cadastroAmbiente isolado roda uma rodada real E2E com token demo. Não consome saldo real.
Testar agora sem cadastro
Ambiente isolado roda uma rodada real E2E com token demo. Não consome saldo real.
Checklist de go-live
- 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