Configurar webhook
Cada instância tem uma URL de webhook para onde a ZapDev entrega os eventos do WhatsApp. Configure essa URL pela API, o mesmo que você faz no painel, e leia o segredo usado na assinatura.
O :instanceId é o Instance ID da instância dona do token. O token no header Authorization já identifica a instância, então o :instanceId da URL precisa ser o dela, veja Autenticação.
Obter a configuração
Seção intitulada “Obter a configuração”200 OK com a configuração atual do webhook da instância.
| Campo | Tipo | Descrição |
|---|---|---|
instanceId |
string | Instance ID da instância |
url |
string | null | URL de entrega dos eventos. null se nenhuma foi configurada. |
secret |
string | Segredo do HMAC. Use para validar o header X-ZapDev-Signature. |
active |
boolean | true quando há uma URL configurada |
Resposta
curl https://api.zapdev.com.br/v1/webhooks/ins_abc123 \ -H "Authorization: Bearer zd_live_..."{ "data": { "instanceId": "ins_abc123", "url": "https://seuapp.com/webhooks/zapdev", "secret": "whsec_9f2a...", "active": true }}Atualizar a URL
Seção intitulada “Atualizar a URL”Envie a nova URL no corpo. Ela passa a valer para os próximos eventos, entregas já enfileiradas seguem para a URL anterior.
| Campo | Tipo | Descrição |
|---|---|---|
url (obrig.) |
string | URL HTTPS pública que recebe os eventos (POST) |
Requisição
curl -X PUT https://api.zapdev.com.br/v1/webhooks/ins_abc123 \ -H "Authorization: Bearer zd_live_..." \ -H "Content-Type: application/json" \ -d '{ "url": "https://seuapp.com/webhooks/zapdev" }'{ "data": { "instanceId": "ins_abc123", "url": "https://seuapp.com/webhooks/zapdev", "secret": "whsec_9f2a...", "active": true }}| HTTP | error.code |
Quando |
|---|---|---|
| 401 | invalid_token |
token ausente ou inválido |
| 404 | instance_not_found |
o :instanceId não é o da instância do token |
| 400 | invalid_request |
url ausente ou sem protocolo (http/https) |
| 429 | rate_limit_exceeded |
acima de 100 req/min na instância |
Envelope completo em Erros.
Como funciona a entrega
Seção intitulada “Como funciona a entrega”Depois de configurada, cada evento é entregue com POST na sua URL, assinado com o secret no header X-ZapDev-Signature. Se ela não responder 2xx, a ZapDev reenvia com backoff (1s, 5s, 30s, 2min, 10min). Detalhes do payload, da assinatura e do retry em Webhooks.