Etapa 1
A página principal carrega iframe
Seu site renderiza um iframe apontando para /embed/{gameSlug}/frame/ com tenantId e parâmetros de consulta opcionais mode ou campaignId.
Embed API documentos
Comece com a demonstração ao vivo, observe os eventos da página principal e, em seguida, copie os padrões iframe e de ouvinte para o seu site. O mesmo fluxo funciona para todos os jogos Games I Know iframe.
Obtenha uma chave embedFaça uma jogada no Tic Tac Toe iframe. O registro de eventos mostra GAME_STARTED, eventos de jogo e informações de conclusão exatamente como uma página pai os recebe.
contrato de evento para toda a plataforma
Games I Know envia eventos embed para todos os jogos na plataforma: Tic Tac Toe, Four in a Row, Bingo e I Know atualmente, e para todos os novos jogos compatíveis com embed que adicionarmos no futuro. Você não precisa de uma integração separada para cada título. Crie um ouvinte de página principal com base no contrato padrão (pronto, GAME_STARTED, eventos de jogabilidade, conclusão com dados do vencedor e resultados assinados) e reutilize-o em todos os jogos embed atuais e futuros.
Use este caminho quando já souber onde o jogo deve aparecer no seu site.
Use /embed/{gameSlug}/frame/ com seu tenantId. Não use iframe na página de destino de SEO.
Vá para a etapaFiltre por data.source === "gamesiknow" e, em seguida, trate os eventos de jogo GAME_STARTED, GAME_COMPLETED e versão 1.
Vá para a etapaEnvie o resultId e o signedToken para o seu servidor antes de conceder créditos, recompensas ou desbloqueios.
Vá para a etapaUse o seu tenantId real do painel de controle de parceiros.
<iframe
src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=YOUR_TENANT_ID"
title="Tic Tac Toe by Games I Know"
width="100%"
height="640"
style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
loading="lazy"
allow="fullscreen"
referrerpolicy="no-referrer-when-downgrade"
allowfullscreen
></iframe>Um Games I Know embed é um iframe isolado em seu domínio. Ele valida seu tenant e domínio em relação ao API, e então se comunica com sua página pai através de window.postMessage.
Etapa 1
Seu site renderiza um iframe apontando para /embed/{gameSlug}/frame/ com tenantId e parâmetros de consulta opcionais mode ou campaignId.
Etapa 2
O iframe chama GET /embed/config (ou /api/embed/config). O Games I Know verifica sua conta de parceiro, domínio permitido, acesso ao jogo e cota do AI. Um evento analítico embed_loaded é registrado no servidor.
Etapa 3
O iframe envia um evento de pronto para a página pai para que você possa mostrar um estado de carregamento ou redimensionar o quadro usando payload.embedHeight.
Etapa 4
Quando o jogo começa, cada jogo embeddable publica GAME_STARTED na página principal e registra game_started no servidor automaticamente. Você não precisa chamar nenhum API de análise do seu site.
Etapa 5
Durante a partida, eventos de jogabilidade da versão 1, como movimento e mudança de modo, atualizam sua interface de usuário ou análises internas.
Etapa 6
Ao término, cada jogo embeddable envia GAME_COMPLETED para o servidor pai com o resultado, o vencedor e os jogadores, para que sua página possa exibir os resultados imediatamente. O iframe também assina o resultado via POST /embed/results e inclui resultId e signedToken em GAME_COMPLETED quando a assinatura é bem-sucedida. Seu backend pode verificar esses tokens com uma chave de servidor parceira antes de conceder as recompensas.
Dois formatos de postagem de mensagem
Eventos do ciclo de vida use um objeto plano com event: "GAME_STARTED" or event: "GAME_COMPLETED". Eventos de jogabilidade encapsular dados em version: 1 com aninhamento payload. Filtrar sempre ativado data.source === "gamesiknow".
A maioria das integrações envolve quatro decisões: registrar o domínio, gerar um token, instalar o iframe e, em seguida, ficar à escuta de eventos de início e conclusão.
Adicione todos os domínios que hospedarão um Games I Know embed. Os domínios são normalizados para que example.com e www.example.com sejam tratados de forma consistente.
Crie um token embed separado para cada site. Isso mantém as análises organizadas e prepara a conta para futuras precificações baseadas em domínio.
Copie o iframe ou o wrapper responsivo para o seu bloco HTML personalizado do CMS, área embed do construtor de sites ou modelo de front-end personalizado.
Gerencie os eventos postMessage GAME_STARTED e GAME_COMPLETED na sua página principal para exibir o estado da partida e os detalhes do vencedor. Verifique os resultados assinados no seu backend com uma chave de servidor parceira antes de conceder as recompensas.
Largura
Use 100% para que o embed preencha a coluna de conteúdo disponível.
Altura
640px para a maioria dos jogos. Tic Tac Toe também funciona com 600px. Use payload.embedHeight dos eventos ready para redimensionar automaticamente.
Jogos
Use /embed/tic-tac-toe/frame/, /embed/four-in-a-row/frame/, /embed/bingo/frame/, ou /embed/i-know/frame/.
Modo
Omita o modo para escolha do jogador ou passe mode=ai quando quiser que o embed solicite primeiro o AI.
O jogador escolhe o tipo de partida dentro do jogo quando a quota AI estiver disponível.
<iframe
src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=TENANT_ID"
width="100%"
height="640"
style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
allow="fullscreen"
loading="lazy"
title="Tic Tac Toe by Games I Know"
></iframe>Solicita primeiro o AI. Recorre silenciosamente ao PvP quando a cota estiver esgotada.
<iframe
src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=TENANT_ID&mode=ai&campaignId=homepage-widget"
width="100%"
height="640"
style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
allow="fullscreen"
loading="lazy"
title="Tic Tac Toe vs AI by Games I Know"
></iframe>URLs de quadro usam /embed/{gameSlug}/frame/. Páginas de destino de SEO sem jogabilidade ao vivo em /embed/{gameSlug}/.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
| ID do inquilino | Sim | Seu ID de locatário parceiro do painel de parceiros Games I Know. Também aceito como partnerId para integrações legadas. |
| modo | Não | Configurado para que a IA solicite o modo AI forçado. As regras de cota e domínio do servidor ainda se aplicam. Recorre ao modo jogador contra jogador quando AI não está disponível. |
| ID da campanha | Não | Rótulo de campanha opcional repetido em eventos postMessage e armazenado nas análises do parceiro para testes A/B ou segmentação em nível de página. |
O mesmo contrato se aplica a Tic Tac Toe, Four in a Row, Bingo, I Know e próximos lançamentos de embed.
Regra 1
Fonte de filtro
Ignore as mensagens a menos que data.source seja gamesiknow.
Regra 2
Ciclo de vida do manipulador
Use GAME_STARTED e GAME_COMPLETED para o estado da partida, nome do vencedor e resultado.
Regra 3
Verifique para obter recompensas
Antes de conceder as recompensas, encaminhe o resultId e o signedToken para o seu servidor.
| Evento | Quando ele dispara | Formatar | Campos-chave |
|---|---|---|---|
| preparar | Embed inicializado e configuração carregada. | Jogabilidade (versão 1) para todos os jogos, ou simples para alguns wrappers de ciclo de vida. | matchId, modo, embedHeight |
| JOGO_INICIADO | Todo jogo embeddable (atual e futuro). É acionado quando uma partida começa (por exemplo, primeiro lance ou início da rodada AI). | Ciclo de vida plano | jogo, parceiroId, campanhaId, modo, matchId (implícito via fluxo de jogo) |
| JOGO_CONCLUÍDO | Cada jogo embeddable quando uma partida termina. Inclui resultado, vencedor, nome do jogador vencedor e jogadores para que a página principal possa exibir os resultados imediatamente. Também inclui resultId e signedToken quando a assinatura do lado do servidor for bem-sucedida. | Ciclo de vida plano | resultado, vencedor, nomeDoJogadorVencedor, IDDoJogadorVencedor, jogadores, pontuação, duraçãoEmSegundos, IDDoResultado, tokenAssinado |
| INCORPORAR_TELA_CHEIA_ALTERAÇÃO | O jogador alterna entre os modos de tela cheia em embed. | Ciclo de vida plano | payload.ativo booleano |
Forma: { source, game, version: 1, event, payload }
Todas as postagens de jogos embeddable GAME_COMPLETED para os pais com outcome, winner, e players Quando uma partida termina. Quando a assinatura é bem-sucedida, GAME_COMPLETED também inclui resultId e signedToken para verificação de backend.
{
"source": "gamesiknow",
"event": "GAME_STARTED",
"game": "tic-tac-toe",
"partnerId": "partner_your_tenant",
"campaignId": "homepage-widget",
"mode": "ai"
}{
"source": "gamesiknow",
"event": "GAME_COMPLETED",
"game": "tic-tac-toe",
"resultId": "res_abc123xyz",
"partnerId": "partner_your_tenant",
"campaignId": "homepage-widget",
"status": "completed",
"outcome": "player_1",
"score": 100,
"durationSeconds": 24,
"winnerPlayerId": "player_1",
"winnerPlayerName": "Player X",
"winner": {
"playerId": "player_1",
"participant": "player_1",
"type": "human",
"label": "Player 1",
"name": "Player X",
"score": 100
},
"players": [
{
"playerId": "player_1",
"participant": "player_1",
"type": "human",
"label": "Player 1",
"name": "Player X",
"score": 100,
"status": "winner"
},
{
"playerId": "player_2",
"participant": "ai_bot",
"type": "ai",
"label": "AI BOT",
"name": "AI Bot",
"score": 60,
"status": "lost"
}
],
"signedToken": "eyJ..."
}jogador_1
O primeiro jogador humano venceu.
jogador_2
O segundo jogador humano venceu.
bot de IA
O oponente AI venceu.
empate
Sem vencedor.
Compatível apenas com Tic Tac Toe e Four in a Row. Selecione a janela de conteúdo iframe com o slug e a ação do jogo.
// Parent page -> iframe (Tic Tac Toe or Four in a Row)
const iframe = document.querySelector("iframe");
iframe.contentWindow.postMessage(
{ game: "tic-tac-toe", action: "reset" },
"https://gamesiknow.com"
);
iframe.contentWindow.postMessage(
{ game: "tic-tac-toe", action: "get_state" },
"https://gamesiknow.com"
);Copie este ouvinte para a página que hospeda seu iframe. Ele lida com o estado de prontidão, início do jogo, eventos de jogabilidade, conclusão com assinatura e mudanças para tela cheia.
Filtrar por origem, lidar com GAME_STARTED e GAME_COMPLETED para interface do usuário do vencedor e eventos de jogabilidade durante a partida.
/**
* Games I Know embed listener (parent page)
* Handles lifecycle events (GAME_STARTED, GAME_COMPLETED) and
* version 1 gameplay events (move, mode_change, ...).
*/
const TRUSTED_ORIGIN = "https://gamesiknow.com"; // or your self-hosted origin
window.addEventListener("message", (event) => {
if (TRUSTED_ORIGIN !== "*" && event.origin !== TRUSTED_ORIGIN) return;
const data = event.data;
if (!data || data.source !== "gamesiknow") return;
// --- Lifecycle events (flat top-level event name) ---
if (data.event === "GAME_STARTED") {
console.log("Match started", {
game: data.game,
mode: data.mode,
partnerId: data.partnerId,
campaignId: data.campaignId,
});
return;
}
if (data.event === "GAME_COMPLETED") {
const winnerLabel = data.winner?.name ?? data.winnerPlayerName ?? null;
console.log("Match completed", {
game: data.game,
outcome: data.outcome, // player_1 | player_2 | ai_bot | draw
winner: data.winner,
winnerName: winnerLabel,
players: data.players,
});
if (winnerLabel) {
document.getElementById("game-winner")!.textContent = `${winnerLabel} won!`;
} else if (data.outcome === "draw") {
document.getElementById("game-winner")!.textContent = "Draw";
}
// For rewards: send resultId + signedToken to YOUR backend (never call verify from the browser)
if (data.resultId && data.signedToken) {
fetch("/api/reward-winner", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
resultId: data.resultId,
signedToken: data.signedToken,
userId: currentUserId,
}),
});
}
return;
}
if (data.event === "EMBED_FULLSCREEN_CHANGE") {
document.body.classList.toggle("embed-fullscreen-active", Boolean(data.payload?.active));
return;
}
// --- Gameplay events (version 1 envelope) ---
if (data.version === 1 && typeof data.event === "string") {
switch (data.event) {
case "ready":
resizeEmbed(data.payload?.embedHeight);
break;
case "mode_change":
console.log("Mode changed", data.payload?.mode);
break;
case "move":
console.log("Move", data.payload);
break;
default:
console.log("Gameplay event", data.event, data.payload);
}
}
});
function resizeEmbed(height) {
const iframe = document.querySelector('iframe[src*="/embed/"]');
if (iframe && typeof height === "number") iframe.style.height = `${height}px`;
}Lista de verificação de integração
Use GAME_COMPLETED na página principal para mostrar quem ganhou. Para recompensas, verifique os resultados assinados do seu backend com uma chave de servidor parceira - nunca chame a verificação API do navegador JavaScript.
Somente no lado do servidor. Use resultId e signedToken de GAME_COMPLETED com Authorization: Bearer gik_psk_…
POST https://api.gamesiknow.com/embed/results/verify
Authorization: Bearer gik_psk_your_secret_key
Content-Type: application/json
{
"resultId": "res_abc123xyz",
"signedToken": "signed_token_from_game_completed"
}
Call from your backend server only. The partner server key must belong to the same tenant as the signed result. Browser requests are rejected.{
"ok": true,
"resultId": "res_abc123xyz",
"partnerId": "partner_your_tenant",
"gameSlug": "tic-tac-toe",
"outcome": "player_1",
"score": 100,
"durationSeconds": 24
}Seu servidor recebe tokens da página principal, verifica com Games I Know, e então concede a recompensa.
// Example: Node.js / Express handler on YOUR server
app.post("/api/reward-winner", async (req, res) => {
const { resultId, signedToken, userId } = req.body;
const verify = await fetch("https://api.gamesiknow.com/embed/results/verify", {
method: "POST",
headers: {
"content-type": "application/json",
authorization: `Bearer ${process.env.GAMESIKNOW_PARTNER_SERVER_KEY}`,
},
body: JSON.stringify({ resultId, signedToken }),
});
if (!verify.ok) return res.status(403).json({ error: "Invalid result" });
const result = await verify.json();
if (result.outcome !== "player_1") {
return res.status(400).json({ error: "Player did not win" });
}
await grantReward(userId, result);
return res.json({ ok: true });
});O Games I Know registra esses eventos automaticamente quando o seu iframe é carregado e os jogadores interagem. Eles aparecem no seu painel de parceiros. Para importar os mesmos dados para o seu próprio banco de dados, crie uma chave de servidor de parceiros na página de Instalação e execute o comando GET /partners/analytics somente a partir do seu servidor de backend.
Gere uma chave de servidor de parceiro em Painel de Parceiros → Instalar. Armazene-a como um segredo do servidor. Use os parâmetros de consulta abaixo para filtrar a exportação.
GET https://api.gamesiknow.com/partners/analytics
Autorização: Bearer gik_psk_sua_chave_secreta
Parâmetros de consulta opcionais:
domain Nome do host do site registrado (example.com)
campaignId Valor do seu parâmetro campaignId iframe
gameSlug jogo da velha | quatro em linha | bingo | i-know
from Data de início em UTC (AAAA-MM-DD)
to Data de término em UTC (AAAA-MM-DD)
Exemplo:
/partners/analytics?domain=www.example.com&gameSlug=jogo da velha&from=2026-05-01&to=2026-05-31
Chame somente do seu servidor de backend. Nunca exponha sua chave de servidor de parceiros no navegador JavaScript.Todos os jogos embeddable enviam os mesmos eventos principais. Compare o tempo e os extras de cada título abaixo.
| Jogo | JOGO_INICIADO | Sinal de conclusão | Assinado | Forçado AI | Height | Comandos principais |
|---|---|---|---|---|---|---|
| Tic Tac Toe | Primeiro movimento ou AI início | JOGO_CONCLUÍDO | Sim | Sim | 640px | reset, get_state |
| Four in a Row | Primeiro movimento ou AI início | JOGO_CONCLUÍDO | Sim | Sim | 640px | reset, get_state |
| Bingo | A partida começa (AI ou PvP) | JOGO_CONCLUÍDO | Sim | Sim | 640px | Nenhum ainda |
| I Know | A partida começa (AI ou PvP) | JOGO_CONCLUÍDO | Sim | Sim | 640px | Nenhum ainda |
Esta página é a referência técnica. Use estes guias quando precisar de instruções de instalação específicas para a plataforma ou conselhos sobre posicionamento vertical. Todos os guias usam o mesmo iframe e modelo de evento documentado acima.
Framework-specific iframe placement, event listeners, and production notes.
Copy-paste embed guides for no-code and low-code site builders.
Placement and UX recommendations for common website types.
Procurando páginas de visão geral, como jogos iframe, widgets HTML5 ou jogos embed gratuitos? Navegue por todas. embed guias no hub.
Respostas sobre detalhes de integração, suporte atual a jogos, comandos, resultados assinados e compatibilidade futura com jogos.
Sim. Os Games I Know e embed usam HTML padrão iframe, portanto, funcionam em blocos HTML personalizados do WordPress, elementos embed do Webflow, áreas de código personalizadas do Wix e Squarespace, HTML estático, React, Next.js e outros sites personalizados. Primeiro, registre o domínio do site no painel de controle do parceiro e, em seguida, cole o trecho de código gerado na página onde o jogo deve aparecer.
/embed/{gameSlug}/ é a página inicial pública do jogo embed. /embed/{gameSlug}/frame/ é o ambiente de execução iframe que deve ser inserido no seu site. Sempre utilize a URL /frame/ no código iframe, pois ela carrega o jogo, valida seu tenant e domínio e envia eventos da página pai.
Sim. Os jogos Games I Know e iframe são projetados para navegadores de dispositivos móveis, tablets, laptops e desktops. Use width="100%" e uma altura recomendada de cerca de 640px para a maioria dos embed. Você também pode monitorar o evento ready e usar payload.embedHeight se quiser que a página principal redimensione o iframe automaticamente.
Os termos Games I Know, iframe e embed são gratuitos durante o período beta do embed. Não é necessário cartão de crédito para começar, e os termos embed da versão beta atual não incluem anúncios. Crie uma conta de parceiro gratuita, registre seu domínio e gere o snippet iframe no painel de controle.
Sim. Uma conta de parceiro fornece um ID de locatário e um snippet iframe com restrição de domínio. O iframe envia o ID do locatário com o URL do frame para que o Games I Know possa validar o parceiro, o domínio permitido, o acesso ao jogo, a cota do AI, a campanha de análise e o fluxo de verificação de resultados.
O embed tem restrição de domínio. Se alguém copiar o seu snippet iframe para um site não autorizado, o Games I Know verifica a origem da solicitação em relação aos domínios configurados para a sua conta de parceiro e bloqueia o uso não autorizado. Use IDs de campanha separados quando desejar análises mais precisas por site ou campanha.
Os termos Tic Tac Toe, Four in a Row, Bingo e I Know já são compatíveis com os termos iframe e embed. Cada jogo envia o contrato de evento padrão embed para estado de prontidão, início do jogo, jogabilidade, conclusão, dados do vencedor, análises e verificação de resultados. Espera-se que novos jogos compatíveis com embed sigam o mesmo padrão de evento, para que os parceiros não precisem reconstruir sua integração.
Cada jogo embeddable usa dois formatos de postMessage. Os eventos de ciclo de vida usam um formato plano com source: gamesiknow e valores de evento como ready, GAME_STARTED, GAME_COMPLETED e EMBED_FULLSCREEN_CHANGE. Os eventos de jogabilidade usam version: 1 com nomes de eventos aninhados como ready, mode_change, move, reset, undo e state. Sempre filtre por data.source === "gamesiknow".
Sim. O servidor detecta o evento GAME_STARTED quando uma partida começa, utiliza eventos de jogabilidade como move e mode_change durante o jogo e usa GAME_COMPLETED quando uma partida termina. O evento GAME_COMPLETED inclui identificadores de resultado, vencedor, jogadores, pontuação, duração e desfecho, quando a assinatura estiver disponível. As análises do servidor também registram carregamentos, inícios, conclusões, tentativas bloqueadas e cliques em CTAs.
Use GAME_COMPLETED quando uma partida terminar. Todo jogo embeddable envia este evento de ciclo de vida com resultado, vencedor, nome do jogador vencedor e jogadores. Quando GAME_COMPLETED incluir resultId e signedToken, encaminhe-os para o seu backend e chame POST /embed/results/verify com a chave do seu servidor parceiro antes de conceder recompensas ou créditos.
Adicione `window.addEventListener("message", handler)` na página que hospeda o `iframe`. No manipulador, ignore as mensagens a menos que `event.data.source === "gamesiknow"`. Faça um branch com base em `event.data.event` para eventos de ciclo de vida ou com base em `event.data.event` mais `event.data.version === 1` para eventos de jogabilidade. Opcionalmente, valide `event.origin` em relação à sua origem `Games I Know` permitida.
Use o evento GAME_COMPLETED na página principal para mostrar imediatamente quem ganhou (resultado, vencedor, nome do jogador vencedor, jogadores). Para conceder recompensas, envie o resultId e o signedToken do evento GAME_COMPLETED para o seu backend e, em seguida, faça uma chamada POST para /embed/results/verify com Authorization: Bearer gik_psk_… usando uma chave de servidor parceira do seu painel de controle. O endpoint de verificação é exclusivo do servidor - nunca o acesse pelo navegador JavaScript. Conceda recompensas somente após a verificação ser concluída com sucesso.
Obrigatório: tenantId (seu ID de locatário parceiro). Opcional: mode=ai para solicitar o modo AI forçado quando a cota permitir, e campaignId para segmentar as análises. Os URLs de frames seguem o formato /embed/{gameSlug}/frame/?tenantId=SEU_ID_DE_LOCATÁRIO.
Sim. Adicione `mode=ai` à URL `iframe` para solicitar primeiro o modo `AI`. As regras de cota e domínio do servidor ainda se aplicam, portanto, o `embed` pode recorrer à escolha do jogador ou ao modo jogador contra jogador quando o modo `AI` não estiver disponível ou a cota estiver esgotada.
Tic Tac Toe e Four in a Row aceitam mensagens do servidor pai com o jogo definido como o slug do jogo e a ação definida como reset ou get_state. O servidor iframe responde com um evento de estado do jogo. Outros jogos embed ainda não expõem comandos do servidor pai.
Confirme se o domínio do site está ativo antes de gerar um token.
Utilize um token ou campaignId diferente para cada site ou grupo de campanhas.
Fique atento aos eventos GAME_STARTED e GAME_COMPLETED na página principal.
Mantenha a marca Games I Know visível dentro do embed.
Verifique os resultados assinados em seu sistema antes de conceder prêmios ou créditos.
O teste força o modo AI e o fallback para PvP quando a cota de AI se esgota.
Compartilhe o site, o CMS e a localização desejada para o jogo. Podemos analisar a configuração do seu evento embed com você.