Webhooks: receba um POST a cada gol

Publicado em , atualizado em .

O gol é um evento instantâneo — e produto de futebol se mede em segundos de atraso. Configure webhooks e seja avisado no momento em que a bola entra, sem polling.

O gol não avisa que vem

Todo o resto do futebol tem aviso prévio. A escalação sai uma hora antes. O escanteio dá tempo de posicionar. Até o pênalti tem a caminhada até a marca.

O gol, não. Ele é o único evento do esporte que acontece inteiro em menos de um segundo, e que reorganiza tudo ao redor no instante seguinte: a tabela muda, a artilharia muda, o mercado de apostas muda, a narrativa da rodada muda. Não existe transição — existe antes e depois.

É por isso que futebol é um dos poucos assuntos em que atraso de dez segundos é percebido como defeito pelo usuário final. Quando o app avisa depois do grito do vizinho, o app perdeu. O torcedor não pensa “o servidor demorou”. Ele pensa que o produto está quebrado.

Onde o polling deixa de servir

Fazer polling a cada 15 segundos funciona bem para exibir placar — a tela precisa estar certa, não instantânea.

Mas alguns casos de uso não toleram a janela. Um bot que posta o gol no grupo. Uma notificação push. Um alerta que dispara quando o time do usuário marca. Um painel de operação que precisa reagir. Nesses casos você não quer perguntar “teve gol?” mil vezes por dia — você quer ser avisado uma vez, no momento certo.

É a diferença entre ficar atualizando a página e receber a ligação.

Registre seu webhook

curl -X POST https://api.dadosfutebol.com.br/v1/webhooks \
  -H "Authorization: Bearer SUA_CHAVE_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://meuapp.com.br/webhooks/futebol",
    "eventos": ["partida.gol"]
  }'

O evento partida.gol é emitido durante o jogo, assim que o monitor de tempo real detecta a mudança no placar — com autor do gol, minuto e tipo (gol normal, contra ou pênalti). Ou seja: chega com a informação que a notificação precisa, não só “o placar mudou”.

Confie, mas verifique

Cada webhook tem um segredo usado para assinar as entregas — valide a assinatura antes de processar o payload. Se o segredo vazar, rotacione sem recriar o webhook:

curl -X POST https://api.dadosfutebol.com.br/v1/webhooks/{id}/rotacionar-segredo \
  -H "Authorization: Bearer SUA_CHAVE_AQUI"

Teste e acompanhe as entregas

Antes de esperar um gol de verdade, dispare uma entrega de teste e depois inspecione o histórico — cada tentativa fica registrada com status e resposta do seu servidor:

# entrega de teste
curl -X POST https://api.dadosfutebol.com.br/v1/webhooks/{id}/testar \
  -H "Authorization: Bearer SUA_CHAVE_AQUI"

# histórico de entregas
curl https://api.dadosfutebol.com.br/v1/webhooks/{id}/entregas \
  -H "Authorization: Bearer SUA_CHAVE_AQUI"

Se o seu endpoint ficar fora do ar, as entregas com falha aparecem nesse histórico — é o primeiro lugar para investigar quando “o webhook não chegou”. Vale testar antes da rodada de domingo, não durante.

CRUD completo

Webhooks são recursos normais da API: GET /v1/webhooks lista, PATCH /v1/webhooks/{id} atualiza a URL ou os eventos, DELETE /v1/webhooks/{id} remove. Tudo escopado à sua conta.

No próximo post da série: como consumir esses mesmos dados direto num assistente de IA, via servidor MCP.