Configurar webhooks
Gerencie todo o ciclo de vida do webhook via API pública — ou use a página Webhooks do painel (/webhooks). Um webhook é configurado por número; uma vez configurado, os eventos são entregues automaticamente (não é necessário vincular chave de API).

A página de Webhooks — criar, editar, desativar ou excluir um webhook e inspecionar seus eventos de entrega.
Endpoints
Escopo por número
Um webhook pertence a um único número do WhatsApp.- Com uma chave com escopo de número, o número vem da própria chave; um
whatsappNumberIdno corpo deve corresponder a ele (caso contrário, 400NUMBER_MISMATCH). - Com uma chave com escopo de tenant, informe o número de destino pelo campo
whatsappNumberIddo corpo ou pelo cabeçalhox-whatsapp-number-id— omitir ambos retorna 400NUMBER_REQUIRED; um número fora do seu tenant retorna 404NUMBER_NOT_FOUND. GET /v1/webhookslista apenas os webhooks visíveis no escopo da chave (uma chave com escopo de número vê apenas os webhooks do seu próprio número). Um webhook fora do escopo da chave retorna 404WEBHOOK_NOT_FOUND.
Exemplos
Controle de eventos
- No
PATCH,eventssubstitui toda a lista de assinatura (não é uma mesclagem). - Eventos que o provedor do número não consegue emitir são descartados silenciosamente.
Regras e erros
O
secret de assinatura nunca é retornado por nenhum desses endpoints.Verifique a assinatura
O segredo de assinatura é configurado na página Webhooks do painel — ele não pode ser definido nem lido via/v1/webhooks (a API o remove de todas as respostas). Quando um segredo está definido, toda entrega inclui o cabeçalho x-pilot-status-signature: o HMAC-SHA256 do corpo bruto da requisição, codificado em hexadecimal e chaveado com o segredo. Calcule o HMAC sobre os bytes brutos exatamente como recebidos (antes de qualquer parse de JSON) e compare em tempo constante:
Node
Idempotency-Key — estável por evento — use-o para deduplicar retentativas.
Painel
Tudo acima também está disponível no painel em/webhooks: crie/edite webhooks por número, escolha eventos, pause/retome e inspecione os logs de entrega. A interface de Novo/Editar Webhook inclui o aviso de que message.read só dispara quando o destinatário tem os recibos de leitura do WhatsApp ativados.