KernosDevelopers
Sair
Receba eventos da Kernos
Eventos e webhooks

Receba eventos da Kernos

Cadastre um endereço HTTPS e a Kernos manda um POST assinado a cada evento: package.close, pix.paid, receipt.close, return.close, sales_order.finish_packing, shipment.dispatch.

Para agentes e terminalEsta página em Markdown: /guias/receber-eventos.mdÍndice das páginas: /llms.txt

Configure o endereço

O endereço precisa ser HTTPS, público e sem usuário e senha. Um por empresa.

curlNodePythonPHPJavaC#GoRust
Cadastrar o webhook
curl -X PUT "https://stag.kernos.com.br/v1/webhook-endpoint" \
  -H "Authorization: Bearer ksk_test_…" \
  -H "Kernos-Version: 2026-10-03" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://seu-sistema.com.br/kernos/webhook",
    "events": ["sales_order.finish_packing", "shipment.dispatch"]
  }'

Na primeira gravação a resposta traz o secret (whsec_…). Ele aparece uma vez. GET /v1/webhook-endpoint lê o endereço, os eventos e as últimas 50 entregas.

Confira a assinatura

Cada entrega traz Kernos-Signature: t=<unix>,v1=<hex>, com v1 = HMAC-SHA256(segredo, "<t>.<corpo cru>"). Confira antes de confiar no corpo, com o corpo CRU, e recuse t velho (mais de 5 minutos): é o que barra o replay.

Não mexa no corpo cru

A assinatura vale sobre o texto exato que chegou. Se o seu framework reparseia o JSON antes de você conferir, a conferência falha.

curlNodePythonPHPJavaC#GoRust
Conferir a assinatura
# Sem SDK, confira à mão: v1 = HMAC-SHA256(segredo, "<t>.<corpo cru>"), em hexadecimal.
# O cabeçalho é: Kernos-Signature: t=<unix>,v1=<hex>  (na troca do segredo vêm dois v1: aceite qualquer um)

Responda 2xx logo e faça o trabalho pesado depois. O Kernos-Event-Id é o id do fato e é o mesmo em cada nova tentativa: use-o para não processar duas vezes.

Teste sem esperar o galpão

POST /v1/webhook-endpoint/ping manda um evento de teste ao seu endereço, assinado como em produção, com data de exemplo e test: true. Sem type, é um ping; com ele, um dos eventos públicos.

curlNodePythonPHPJavaC#GoRust
Mandar um evento de teste
curl -X POST "https://stag.kernos.com.br/v1/webhook-endpoint/ping" \
  -H "Authorization: Bearer ksk_test_…" \
  -H "Kernos-Version: 2026-10-03" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "type": "ping" }'

Depure as entregas

Cada entrega é Entregue, Pendente ou Falhou, com o status HTTP e a hora da próxima tentativa.

Resposta do seu servidorCausaO que fazer
Não conectouA Kernos não alcançou o seu servidor.Confira se o domínio é público e responde na internet.
3xxO seu servidor redirecionou. Redirecionamento conta como falha.Cadastre o endereço final, sem redirecionar.
4xxO endereço recusou o POST.Aceite POST e deixe a rota sem login.
5xxO seu código falhou ao processar.Veja o log do seu servidor e responda 2xx antes do trabalho pesado.
Tempo esgotadoO endereço demorou mais de 10 s.Responda na hora e processe numa fila.

Como a entrega se comporta

Os eventos têm uma página cada, com o corpo e o exemplo. Para o endereço lido: GET /v1/webhook-endpoint.