Webhooks
Em vez de consultar a API repetidamente (polling), você pode registrar uma URL e receber uma requisiçãoPOST sempre que um evento relevante ocorrer — início de jogo, gol, encerramento, escalação, e mais.
Cada entrega é assinada (HMAC-SHA256) para que você confirme que a requisição veio da Dados Futebol e não foi adulterada.
Webhooks estão disponíveis em todos os planos, com cota de endpoints ativos e de entregas mensais por plano. Configure-os no painel em
https://dadosfutebol.com.br/webhooks ou via API.Catálogo de eventos
Ao criar um webhook você escolhe quais eventos quer receber. O plano free recebe eventos apenas dos campeonatos aos quais tem acesso.
partida.placar_atualizado e partida.gol são complementares: o primeiro traz o placar novo, o segundo diz quem marcou e quando. Um gol dispara os dois.partida.gol
Além dos campos da partida, o payload traz o objeto gol com o lance que acabou de acontecer:
tipo é gol, gol_contra ou penalti. jogador pode vir null quando a fonte ainda não confirmou a autoria — o placar e o minuto seguem válidos.
Cartões e substituições não vão no webhook: para eles use
GET /v1/partidas/{id}/eventos, que durante o jogo traz todos os lances.Formato do payload
O corpo é sempre um JSON com este envelope:dados espelha o recurso correspondente da API (partida, rodada ou fase), acrescido de gols nos eventos de partida. Use o id/campeonato_id para buscar detalhes completos nos endpoints GET /v1/... quando precisar.
Em jogos de mata-mata os campos
rodada_* vêm nulos e fase traz id, nome e slug — por exemplo "Oitavas de Final". Em pontos corridos é o contrário. campeonato_id está sempre preenchido, venha o vínculo da rodada ou da fase.gols
Todos os eventos partida.* carregam a lista de gols da partida até aquele momento, ordenada por minuto — assim você monta a narração do jogo sem uma chamada extra à API. Cada item tem tipo (gol, gol_contra ou penalti), jogador, time_nome e minuto.
A chave está sempre presente: vem [] num 0 a 0 e também quando a fonte ainda não publicou os lances daquele jogo. O placar em placar_mandante/placar_visitante é quem desempata os dois casos.
Headers da requisição
Verificação da assinatura
Calcule o HMAC-SHA256 de"{X-DF-Timestamp}.{corpo_bruto}" usando o secret do seu webhook e compare, em tempo constante, com o header X-DF-Assinatura.
Entrega e retentativas
- O seu endpoint deve responder com status
2xx. Qualquer outro status (ou timeout) é tratado como falha. Redirecionamentos (3xx) não são seguidos. - Falhas temporárias (
5xx, timeout, falha de conexão,408,429) são reenviadas com backoff crescente (segundos → minutos → 1 hora) por algumas tentativas. - Falhas permanentes (
3xxe demais4xx— endereço errado, rota inexistente, método não aceito) não são retentadas: a entrega é marcada como falha na primeira resposta. - Após muitas falhas consecutivas o webhook é desativado automaticamente e religado no dia seguinte para uma nova chance.
- Se as falhas se acumularem sem nenhuma entrega bem-sucedida no meio, a desativação vira definitiva: você recebe um e-mail avisando, e o webhook só volta quando você corrigir o endpoint e reativá-lo no painel ou via
PATCH /v1/webhooks/{id}("ativo": true). Atualizar a URL também zera o histórico de falhas. - Cada entrega traz um
X-DF-Entregaúnico — armazene-o e ignore duplicatas (a entrega é at-least-once; a ordem não é garantida). - A URL precisa usar HTTPS e apontar para um host público.
Cota de entregas
Cada plano inclui uma cota mensal de entregas bem-sucedidas (respostas2xx). A contagem:
- Conta apenas entregas com resposta
2xx— retentativas por falha do seu endpoint não consomem a cota. - É compartilhada entre todos os seus webhooks (somada por conta) e reseta no dia 1º de cada mês (UTC).
- Eventos de gerenciamento via API (criar, listar, testar etc.) usam a cota de requisições normal, não a de entregas.
descartada (motivo Cota mensal de entregas excedida) e fica visível em GET /v1/webhooks/{id}/entregas. Nenhum POST é enviado ao seu endpoint.
Acompanhe o consumo no meta de GET /v1/webhooks:
entregas_mes_limite retorna null quando ilimitado.
Gerenciamento via API
Além do painel, você pode gerenciar webhooks pela API (autenticada por API Key):Criar um webhook
curl
Resposta
eventos (ou envie todos) para receber o catálogo completo.
Cotas por plano
Exceder a cota de endpoints ativos retorna
HTTP 422 na criação: