Introdução
Um webhook é uma ferramenta que permite a comunicação entre aplicações, possibilitando
o envio de dados para uma aplicação A imediatamente após a ocorrência de um
evento na aplicação B.
Também chamados de callbacks, os webhooks substituem a abordagem chamada polling, onde uma
aplicação fica solicitando de tempos em tempos o status de uma ocorrência. Com o
uso de webhooks, a comunicação entre sistemas diferentes torna-se muito mais simples.
Na ZapperAPI, há webhooks para notificar sua aplicação das seguintes ações no
WhatsApp:
- Recebimento de mensagens
- Recebimento de reações em mensagens
Como usar
Para cadastrar uma URL para receber os webhooks da ZapperAPI, consulte a
Seção Webhooks na
documentação de referência da API.
Além da url
, você deverá informar qual a secretKey
que a ZapperAPI deve enviar
para autenticar que é a ZapperAPI que está disparando a requisição. A secret
será enviada no cabeçalho da requisição, no formato de Authorization Bearer
.
IMPORTANTE
A secretKey
é a única maneira de garantir que as requisições que sua aplicação
recebe são oriundas do webhook da ZapperAPI. Você é o responsável por executar
a validação da informação, bem como proteger sua aplicação com outras regras de
segurança, como rate limits e SSL. Nunca forneça a sua secretKey
, e sempre
que possível, faça uma rotação regular de seu valor.
INFORMAÇÃO
Os arquivos recebidos pelos Webhooks da ZapperAPI ficam armazenados em nossos
servidores pelo prazo de 7 dias.
Exemplos de payload
A seguir, iremos listar os exemplos de payload dos webhooks da ZapperAPI, para
os diferentes tipos de mensagens recebidas no WhatsApp:
Recebimento de mensagens
Tipo: messages.upsert
Mensagem de texto
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "3AB16AB78CD9012E89A0"
},
"messageTimestamp": 1744398716,
"pushName": "John Doe",
"broadcast": false,
"message": {
"conversation": "Hello world from ZapperAPI",
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "aBCd1234==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "ZyXpto1234==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "abcdef123456/9876Xpto="
}
}
}
Mensagem de áudio
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "78AD14337B2A86AFCC956A4C728481EB"
},
"messageTimestamp": 1744399258,
"pushName": "John Doe",
"broadcast": false,
"message": {
"audioMessage": {
"url": "https://mmg.whatsapp.net/v/test_url?mms3=true",
"mimetype": "audio/ogg; codecs=opus",
"fileSha256": "AbcDefGh12345=",
"fileLength": "8500",
"seconds": 4,
"ptt": true,
"mediaKey": "yXpto1234=",
"fileEncSha256": "aBC/DeFGh1234/6g788afrgHDs1234=",
"directPath": "/v/t62.7117-24/avcd_12r4fs.enc?ccb=12-5oh=f34urjfhei&oe=15f6d&_nc_sid=5a12a0",
"mediaKeyTimestamp": "1744399255",
"waveform": "AAAAABBBBB12234=="
},
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "iDads+fds3D==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "Cefgr+df==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "LRfsdg3rg21fdg3eY="
}
},
"mediaUrl": "https://storage.zapperapi.com/media/551245678900/5512912345678/1744399258603-548723645df463782eacd43.oga"
}
Envio de documento
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "195AE8577DAD7DA921BE6AEA4255E196"
},
"messageTimestamp": 1744400179,
"pushName": "Will Smith",
"broadcast": false,
"message": {
"documentMessage": {
"url": "https://mmg.whatsapp.net/v/t62.7119-24/12345694_4321098765412345_8789897654456789907_n.enc?ccb=11-4&oh=01_Q5Aa1QFSK-_SYsySdefsfsfz5w6HceIfsdfhBaT7A2o-oQ&oe=682fsdf84B&_nc_sid=5fsa3e0&mms3=true",
"mimetype": "application/pdf",
"fileSha256": "MNg59Afdsfsfs9dqyifSwsdgfsDk2s=",
"fileLength": "23025",
"pageCount": 12,
"mediaKey": "OLOuiVpfewdfgsdKBXY38lfsdfswlWPoVuLuooQ=",
"fileName": "senhas-pati.pdf",
"fileEncSha256": "Ig+efdf32ferfwefsdYjteErfvJfdsfsW+CKCl6dqE=",
"directPath": "/v/t62.7119-24/12345694_4321098765412345_8789897654456789907_n.enc?ccb=11-4&oh=01_fv2zV3bq-P1dHWGgdfgdfgYPFgXO0ZvgfdgsdAdN5FHQ-oQ&oe=682550E337&_nc_sid=5103e0",
"mediaKeyTimestamp": "1744400177",
"thumbnailDirectPath": "/v/t62.36145-24/2345678_1234567890_198765432101234567_n.enc?ccb=11-4&oh=01_fv2zV3bq-P1dHWGgdfgdfgYPFgXO0ZvgfdgsdAdN5FHQ&oe=682550E337&_nc_sid=5103e0",
"thumbnailSha256": "qQmdwefkerswgfrwe3=",
"thumbnailEncSha256": "qqpl+fdsafasf=",
"jpegThumbnail": "/9j/fdsfsdfdsADds+fed3==",
"thumbnailHeight": 480,
"thumbnailWidth": 370,
"caption": "Documentação em anexo"
},
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "fdsi+WderiDJqg==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "Cifre3f9d==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "OHJdikejwoxi+ferDsd="
}
},
"mediaUrl": "https://storage.zapperapi.com/media/551245678900/5512912345678/1744400179958-ad37655efdc1489a987d6f698c9e87.pdf"
}
Envio de imagem
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "7B3F1FA5E211E42FEDFA1F2143A102D6"
},
"messageTimestamp": 1744400576,
"pushName": "Will Smith",
"broadcast": false,
"message": {
"imageMessage": {
"url": "https://mmg.whatsapp.net/v/t62.7118-24/321561_156151_651651_n.enc?ccb=11-4&oh=gfdgdfgd&oe=126456&_nc_sid=5e03e0&mms3=true",
"mimetype": "image/jpeg",
"fileSha256": "fhjd0jieruygvj0wer9+Fo=",
"fileLength": "12525",
"height": 640,
"width": 480,
"mediaKey": "gdfgds+erggdfg+hSKU=",
"fileEncSha256": "Hfewghjsodgfhj=",
"directPath": "/v/t62.7118-24/123456_123456_15645.enc?ccb=11-4&oh=4g65sd1g6sd5&oe=f1sdf3s&_nc_sid=5e03e0",
"mediaKeyTimestamp": "1744363528",
"jpegThumbnail": "/9j/FIRWEUGFH93RUGH/sfhjsdf/2c7Z//////////////fdfg3/Zztn////////////////gsdfgs/sfds/dd/AAAA/AAAA+gfg3+",
"scansSidecar": "fdf3erfgs+gs==",
"scanLengths": [
1234,
4321
],
"midQualityFileSha256": "sdfsdf/fdf/df/sdfsaf="
},
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "d+dfsfs==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "fr3sdfg==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "g3gre+gr34gdfgsgs="
}
},
"mediaUrl": "https://storage.zapperapi.com/media/551245678900/5512912345678/1744400577105-12c2b82fdebc64a249a2182e9eb57b170.jpeg"
}
Envio de vídeo
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "9A9BA7815141EAA71DB9986A32AEFE67"
},
"messageTimestamp": 1744401275,
"pushName": "Will Smith",
"broadcast": false,
"message": {
"videoMessage": {
"url": "https://mmg.whatsapp.net/v/t62.1212-24/123456_654321_1234567.enc?ccb=11-4&oh=ferw3fe3&oe=1wf6&_nc_sid=5e03e0&mms3=true",
"mimetype": "video/mp4",
"fileSha256": "fer3fwfw+9Gu4H+A=",
"fileLength": "295632",
"seconds": 1,
"mediaKey": "e+rewfw+/fewf=",
"height": 850,
"width": 474,
"fileEncSha256": "efwf/mSHj4nfwefkCghDfwefwOVGWWCjc9ok=",
"directPath": "/v/t62.7161-24/26006495_651803170909509_8692356198490887094_n.enc?ccb=11-4&oh=01_Q5Aa1QHJBZcffHnD3ISle6otMfGXyqD77WWjDGnFpdrs3TWEtA&oe=6820F12F&_nc_sid=5e03e0",
"mediaKeyTimestamp": "1744401273",
"jpegThumbnail": "hfirfhue/f98vyei=",
"contextInfo": {},
"streamingSidecar": "Vfdesfwef="
},
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "fs+fsd==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "sdf23fc==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "fwe3rtw+werga="
}
},
"mediaUrl": "https://storage.zapperapi.com/media/551246787585/5512912345678/1744401275832-ad71abe8547533259a3274d4af8711c3.mp4"
}
Envio de contato
{
"type": "messages.upsert",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "E6189A524889DE724D911AAA2F837AB1"
},
"messageTimestamp": 1744401096,
"pushName": "Jane Doe",
"broadcast": false,
"message": {
"contactMessage": {
"displayName": "John Doe",
"vcard": "BEGIN:VCARD\nVERSION:3.0\nN:;John;;;\nFN:John Doe\nitem1.TEL;waid=555599995555:+55 55 9999-5555\nitem1.X-ABLabel:Celular\nEND:VCARD"
},
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "dsa+das==",
"senderTimestamp": "1744145094",
"recipientKeyHash": "dasfw==",
"recipientTimestamp": "1744348039"
},
"deviceListMetadataVersion": 2,
"messageSecret": "fsdfgwdgsd="
}
}
}
Recebimento de reações em mensagens
Tipo: messages.reaction
Envio de reação
key
: Dados da mensagem que recebeu a reação
reaction.key
: Dados de quem enviou a reação
reaction.text
: Emoji utilizado
{
"type": "messages.reaction",
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "78AE2812AC5A62A1CB8A5A1D967572A0"
},
"reaction": {
"key": {
"remoteJid": "5512912345678@s.whatsapp.net",
"fromMe": false,
"id": "4D2AAEC025A74710866EF732A614AABA"
},
"text": "❤️",
"senderTimestampMs": {
"low": 642979577,
"high": 406,
"unsigned": false
}
}
}