Webhooks
O kycert envia webhooks para a URL configurada na chave de API ao final de cada run de bureau e ao final de cada rodada de verificação facial.Estrutura do envelope
Todo evento segue o mesmo envelope raiz:Eventos disponíveis
run.completed
Disparado quando um run finaliza — com sucesso, bloqueio por short-circuit ou pendência de revisão. Cobre os status completed, blocked, pending_review e partial. Ver campo status para o significado de cada um.
run.failed
Disparado quando um run falha por erro técnico (status: "failed") antes de completar qualquer análise significativa. decision será null. Não é esperado em operação normal — monitore e investigue se aparecer com frequência.
biometric_check.completed
Disparado quando uma rodada de verificação facial (Face Match + Passive Liveness) termina — pelo onboarding público, pelo reenvio manual de um analista no dashboard, ou pelo job assíncrono disparado por POST /customers/{id}/documents. Uma rodada dispara um único evento, com o resultado dos dois checks juntos — nunca um evento por check. Não é disparado para verificações feitas via POST /api/v1/verificacoes/facial (endpoint standalone e síncrono — o resultado já volta na própria resposta HTTP).
Requer marcar biometric_check.completed em “Eventos assinados” na configuração do endpoint (/developer/webhooks) — diferente de run.completed/run.failed, que hoje são sempre entregues ao endpoint ativo independente da seleção.
Campos do payload e exemplo completo na seção “Verificação facial” mais abaixo nesta página.
Campos de data
O objeto data contém um run com os seguintes campos:
status
decision
Decisão de negócio calculada pelo motor KYC com base nos resultados das fontes e nas regras do template.
checks_summary
Contagem agregada dos resultados de todos os checks executados no run.
valid + invalid + no_data + error = total
Exemplo de payload
Verificação facial
Campos de data — biometric_check.completed
Assinado com o mesmo secret do endpoint (kycert-signature, mesmo formato HMAC-SHA256) usado para os eventos de bureau — não há segredo separado por tipo de evento.
Exemplo de payload
Segurança
Verificar a assinatura HMAC-SHA256 no headerkycert-signature:
webhook_secret é usado como string crua no HMAC — não faça hex-decode antes de assinar/verificar.
Consulte o guia de segurança de webhook para exemplos de verificação em Node.js, Python e Go.