POST for each event.
Create a webhook
- Dashboard
- API
Go to the Webhooks page (
/webhooks) in the dashboard, click New Webhook, enter your URL, and pick the events you want. Webhooks are scoped per number.PATCH with { "active": false }. The signing secret is never returned by any endpoint — to validate deliveries with it, see Verify the signature.
Example payload — message.received
mediaLink is a durable, publicly-fetchable URL to the media re-hosted on Pilot Status storage — for all providers (Evolution GO, Evolution v2, Meta Cloud API), including WhatsApp end-to-end-encrypted media decrypted server-side — alongside mediaType, mediaCaption, and mediaFilename. See the Events reference for every event and field.
Receiver examples
Return200 quickly and process the event asynchronously; deduplicate by data.id since retries can deliver an event more than once.
Replying to a received message
Reply withPOST /v1/messages/send using the sender’s number as the destination:
message.reply fires when a contact quotes one of your messages — use quotedMessageId to match it against the messageId from your original message.sent. message.read only fires when the recipient has read receipts enabled.