Skip to main content

Por que webhooks

Webhooks eliminam a necessidade de polling. Em vez de consultar o status repetidamente, o kycert notifica o seu servidor assim que o run é concluído. O endpoint recebe uma requisição POST com o resultado completo — você processa e responde em milissegundos.

Configuração

No dashboard kycert, vá em Integrações & API → Webhooks e cadastre a URL do seu endpoint. Alternativamente, passe webhook_url diretamente no POST /runs para sobrescrever o padrão por requisição.

Requisitos do endpoint

  • HTTPS obrigatório em produção (HTTP aceito apenas em sandbox)
  • Responder 2xx em até 30 segundos
  • Idempotente — o mesmo evento pode ser entregue mais de uma vez

Eventos disponíveis

Runs reprovados por regra crítica chegam via run.completed com status: "blocked" e decision: "rejected". O evento run.failed indica exclusivamente falhas técnicas — nunca reprovações por regra de negócio.

Estrutura do payload

run.completed — aprovado

run.completed — reprovado por regra crítica (blocked)

run.failed — falha técnica irrecuperável

run.failed indica falha técnica irrecuperável — o run não produziu resultado de decisão. Investigue antes de reenviar. Nunca é emitido para reprovações por regra de negócio; essas chegam como run.completed com status: "blocked".

Política de retry

Se o seu endpoint retornar um status fora de 2xx ou não responder em 30 segundos, o kycert tenta novamente com backoff linear: Após 3 tentativas sem sucesso (total ~15 min), o evento é marcado como failed e nenhuma nova tentativa é realizada. O histórico de tentativas fica disponível no dashboard em Integrações & API → Webhooks → Entregas.
Retorne sempre 200 — mesmo se o processamento falhar internamente. O kycert retenta em qualquer status fora de 2xx (incluindo 4xx e 5xx). Se o seu código falhar após receber um evento válido, responda 200 e trate o erro de forma assíncrona — evitando consumir o orçamento de 3 tentativas desnecessariamente.

Deduplicação

O campo id do evento é único. Armazene os IDs processados para ignorar duplicatas em caso de retry:

Headers do webhook

Cada requisição de webhook inclui os seguintes headers:

Verificação de assinatura

Todo webhook inclui o header kycert-signature. Sempre verifique — qualquer servidor pode fazer POST para o seu endpoint. Consulte Segurança para o procedimento completo de verificação com exemplos em 3 linguagens.

Sandbox

Em sandbox, os webhooks são entregues normalmente. Use um serviço como webhook.site ou ngrok durante o desenvolvimento. O campo livemode: false identifica eventos de sandbox.
Serviços como webhook.site possuem limites de requisições no plano gratuito. Se o seu endpoint retornar 429, o kycert vai retentar — mas esgotará as 3 tentativas e marcará a entrega como failed. Em produção, use um endpoint real sem rate limit.