Skip to main content

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 header kycert-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.

Retries

O kycert tenta reenviar com backoff exponencial: +30s, +5min, +1h, +6h (5 tentativas no total). Consulte a política completa de retry.