Skip to main content
POST
Sends an interactive message to a contact: reply buttons, a list menu, a call-to-action URL button, a swipeable carousel of image or video cards, or a request for a delivery address. It can also send a location pin. Important: This endpoint requires an open 24-hour Meta session window (the user must have messaged your business within the last 24 hours). If the session has expired, use a Template Message instead.

Message types

header and footer are optional (60 characters each) for every type except location and carousel. body can be up to 1024 characters.

Choosing the recipient

Send either recipientPhoneNumber with countryCode, or an existing conversationId or contactId. When you send a conversation or contact ID, the recipient is resolved for you. When you authenticate with an API key, the message is sent from the channel the key is bound to. You do not need to send channel_id.

Examples

Reply buttons
List
CTA URL
Ask for address
Send location
A carousel shows a row of cards the customer can swipe. body is the message above the cards. Each item in cards has: Each card has either one URL button or one or more quick-reply buttons, never both. All cards must use the same kind of button and the same number of buttons. The API returns a 400 error before sending if the cards do not match. When a customer taps a quick-reply button, you receive an incoming interactive reply that carries that button’s id.
Carousel with URL buttons
Carousel with quick replies

Asking for an address

An address_message shows the customer a Provide address button that opens WhatsApp’s address form. The form works for India (IN) and Singapore (SG) numbers only. Use addressValues to pre-fill fields such as name, city, state and in_pin_code (or sg_post_code). Set autoFillAddress to true to pre-fill the contact’s name and the last address they shared in the conversation; this needs conversationId. When the customer submits the form, their answer arrives as an incoming interactive message and appears in the conversation as an address card.

Authorizations

X-API-Key
string
header
required

Body

application/json
interactiveType
enum<string>
required

button for reply buttons, list for a list menu, cta_url for a call-to-action link button, address_message to ask the customer for a delivery address, location to send a map pin. carousel to send 2 to 10 swipeable image or video cards.

Available options:
button,
list,
cta_url,
address_message,
carousel,
location
channel_id
string<uuid>

Optional when you authenticate with an API key, because the key is already bound to a channel.

conversationId
string

Existing conversation ID. When sent, the recipient is resolved from the conversation.

contactId
string

Existing contact ID. When sent, the recipient is resolved from the contact.

recipientPhoneNumber
string

7-15 digits, without country code. Required unless conversationId or contactId is sent.

Example:

"9876543210"

countryCode
string

Country code, with or without +. Required unless conversationId or contactId is sent.

Example:

"+91"

body
string

Main message text. Required for every type except location.

Maximum string length: 1024
header
string

Optional header text. Used for list and cta_url; for button it is sent only when provided. Not supported for carousel.

Maximum string length: 60

Optional footer text. Not supported for carousel.

Maximum string length: 60
buttons
object[]

Required for button. WhatsApp allows at most 3 reply buttons.

Required array length: 1 - 3 elements
buttonText
string

Required for list and cta_url. Label of the button that opens the list or link. Not used for carousel; set the button on each card instead.

Maximum string length: 20
Example:

"Choose"

sections
object[]

Required for list.

Required array length: 1 - 10 elements
cards
object[]

Required for carousel. 2 to 10 cards. Every card needs the same kind of button: either one URL button on all cards, or the same number of quick-reply buttons on all cards.

Required array length: 2 - 10 elements
url
string<uri>

Required for cta_url. Must include https:// or http://.

Example:

"https://example.com"

addressCountry
enum<string>
default:IN

For address_message. Country of the address form. WhatsApp supports India and Singapore.

Available options:
IN,
SG
addressValues
object

For address_message. Optional values to pre-fill in the customer's address form. phone_number defaults to the recipient's number.

autoFillAddress
boolean
default:false

For address_message. Pre-fill from the customer's last shared address in the conversation (requires conversationId) and the contact name. Values in addressValues take priority.

latitude
number

Required for location.

Required range: -90 <= x <= 90
Example:

18.5204

longitude
number

Required for location.

Required range: -180 <= x <= 180
Example:

73.8567

locationName
string

For location. Place name.

Maximum string length: 100
locationAddress
string

For location. Street address.

Maximum string length: 200
contextMessageId
string

WhatsApp message ID to reply to.

Response

Message sent successfully

success
boolean
Example:

true

message
string
Example:

"Message sent successfully"

data
object