Send Button Message
Send an interactive message with up to 3 quick-reply buttons to a customer. When the customer taps a button, you receive an inbound webhook carrying the button id and title, so you can route the conversation to the right flow without parsing free text.
Like every free-form message, this requires the customer to be inside the 24-hour customer service window.
Endpoint
POST https://apis.splashifypro.com/api/v1/public/messageHeaders
| Header | Value |
|---|---|
Authorization | Basic YOUR_API_KEY |
Content-Type | application/json |
Request body
{
"phoneNumber": "919876543210",
"callbackData": "feedback_prompt",
"type": "InteractiveButton",
"data": {
"message": {
"type": "button",
"body": {
"text": "Hello, please give your feedback."
},
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "id1", "title": "Ok" } },
{ "type": "reply", "reply": { "id": "id2", "title": "Good" } },
{ "type": "reply", "reply": { "id": "id3", "title": "Bad" } }
]
}
}
}
}| Field | Required | Notes |
|---|---|---|
type (top level) | yes | Must be "InteractiveButton" |
data.message.type | yes | Must be "button" |
data.message.body.text | yes | The body shown above the buttons. Max 1024 chars |
data.message.action.buttons | yes | Array of 1–3 reply buttons |
buttons[].type | yes | Must be "reply" |
buttons[].reply.id | yes | Stable identifier you choose — echoed back when the customer taps. Max 256 chars |
buttons[].reply.title | yes | Visible button label. Max 20 chars |
WhatsApp also supports an optional header (text/image/video/document) and footer (text). Add them under data.message.header and data.message.footer.text when needed.
Example
curl -X POST https://apis.splashifypro.com/api/v1/public/message \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "919876543210",
"callbackData": "some_callback_data",
"type": "InteractiveButton",
"data": {
"message": {
"type": "button",
"body": { "text": "Hello, please give your feedback." },
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "id1", "title": "Ok" } },
{ "type": "reply", "reply": { "id": "id2", "title": "Good" } },
{ "type": "reply", "reply": { "id": "id3", "title": "Bad" } }
]
}
}
}
}'Successful response — 201 Created
{
"result": true,
"message": "Message queued for sending via Splashify Pro. Check webhook for delivery status",
"id": "8a35b1e1-fac5-49b4-84d8-526eaa4c4d77"
}When the user taps a button
The reply arrives via your inbound message webhook with type: "button" and the matching id and title:
{
"type": "button",
"from": "919876543210",
"button_reply": {
"id": "id2",
"title": "Good"
}
}Use the id for routing — it’s stable, while titles can be translated or reworded later.