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-slotIframe 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¤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>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-moneyIframe 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¤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>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-blocsIframe 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¤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>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-treasureIframe 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¤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>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-bingoIframe 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¤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>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-explosivaIframe 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¤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>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-minesIframe 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¤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>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-motoIframe 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¤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>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-minesIframe 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¤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>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-tesouroIframe 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¤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>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-rushIframe 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¤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>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-terraIframe 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¤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>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-imperialIframe 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¤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>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-douradoIframe 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¤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>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-muertosIframe 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¤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>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-slotIframe 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¤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>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-slotIframe 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¤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>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-sorteIframe 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¤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>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-milionariaIframe 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¤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>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-sorteIframe 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¤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>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 diveOptional complement. Everything above is enough to go live.
Extras — deep dive
Optional complement. Everything above is enough to go live.
See it running in 30 secondsReal demo iframe (no token, no real balance). Events shown live below.
See it running in 30 seconds
Real demo iframe (no token, no real balance). Events shown live below.
Aguardando visualização…
postMessage console
Waiting for events…
postMessage events referenceAll events the iframe emits to the parent. Origin is always https://i-gaming.co.
postMessage events reference
All events the iframe emits to the parent. Origin is always https://i-gaming.co.
| Type | When | Example payload |
|---|---|---|
| igaming:ready | Game booted and ready to receive input. | { slug, session_id } |
| igaming:bet.placed | Bet accepted, balance debited. | { round_id, amount_cents } |
| igaming:bet.won | Winning round settled. | { round_id, win_cents, multiplier } |
| igaming:bet.lost | Losing round settled. | { round_id, amount_cents } |
| igaming:wallet.sync | Balance updated (any source). | { balance_cents } |
| igaming:round.settled | Round finalized (win or loss). | { round_id, delta_cents } |
| igaming:error | Generic error — see payload.code. | { code, message } |
Wallet HMAC error codesCodes returned by /api/public/dl/seamless/*.
Wallet HMAC error codes
Codes returned by /api/public/dl/seamless/*.
| Code | Meaning | What to do |
|---|---|---|
| origin_or_signature_required | No HMAC header or invalid origin. | Send x-dl-ts and x-dl-sig headers. |
| bad_signature | Signature does not match secret. | Check PORTAL_HMAC_SECRET and payload. |
| launch_not_found | Launch token not registered. | Mint a new token via /tokens/request. |
| launch_token_invalid | Token expired, revoked, or malformed. | Rotate token before expires_at. |
| insufficient_funds | Player balance below bet. | Show top-up UI on your side. |
| duplicate_round | Round already settled (idempotency). | Safe to ignore — replay was blocked. |
| stale_timestamp | Header x-dl-ts drifted > 60s. | Sync server clock via NTP. |
Test now without signupIsolated environment runs a real E2E round with a demo token. No real balance consumed.
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