Skip to main content

Discover the template

Templates are listed as Meta holds them, with the placeholders each one expects, so your code can discover what to send without opening WhatsApp Manager. The list is cached for five minutes.

Send

Every placeholder the template declares is required, extra keys are refused, and values are strings of 1 to 1024 characters without newlines or control characters. Give lang when the template exists in more than one language.
The answer is 202 Accepted. Meta has taken the message; the status arrives afterwards.
Send an Idempotency-Key per business event and retry a 502 or a network error with the same key. A replay returns the original 202 with Idempotent-Replayed: true and sends nothing. See Reliability.

Statuses and webhooks

accepted then sent, delivered, read, or failed from any of the first three. Statuses arrive from Meta within about a minute, are applied in order and never go backwards. A message stops being tracked 48 hours after the send and keeps its last status. Read the current state with GET /v1/whatsapp/messages/{id}:
Or receive one webhook per status change, at the application’s webhook URL, signed and retried exactly like verification.* events. Only the status reached is announced: a message that jumps straight to read gets one message.read. to is masked in webhooks the way the console shows it, so keep your own copy of the destination next to the returned id or your reference.
Signature verification is the same as for verification events: see Webhooks.