Skip to main content

Messages

The messages endpoint lets you send any type of content to WhatsApp numbers.

Endpoint

POST /v1/messages

Available types

TypeSubtypeDescription
textPlain text with optional link preview
imageJPEG or PNG image
videoMP4 or 3GP video
audioAudio file or voice note (OGG/OPUS)
documentPDF, Word, Excel, and others
stickerAnimated or static sticker (.webp)
locationMap location pin
contactsOne or more contact cards
reactionEmoji reaction to a received message
interactivecta_urlButton that opens a URL
interactivebuttonUp to 3 quick-reply buttons
interactivelistScrollable list of options
interactivelocation_request_messageRequest user's location

For Meta-approved templates, use the POST /v1/messages/template endpoint.

Base structure

Every message includes waba_id, to, type, and a field named after the type:

{
"waba_id": "your_waba_id",
"to": "+5511999999999",
"type": "text",
"text": { "body": "Hello!" }
}

The phone_id field is optional — when omitted, the WABA's default phone number is used.

Response

{
"messaging_product": "whatsapp",
"contacts": [{ "input": "+5511999999999", "wa_id": "5511999999999" }],
"messages": [{ "id": "wamid.HBgL..." }]
}

messages[0].id is the wamid — use it to correlate status webhooks.

Customer service window

Non-template types can only be sent within the 24-hour window after the user's last message. Outside this window, use templates.