Skip to Content
Public APISend Button Message

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/message

Headers

HeaderValue
AuthorizationBasic YOUR_API_KEY
Content-Typeapplication/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" } } ] } } } }
FieldRequiredNotes
type (top level)yesMust be "InteractiveButton"
data.message.typeyesMust be "button"
data.message.body.textyesThe body shown above the buttons. Max 1024 chars
data.message.action.buttonsyesArray of 1–3 reply buttons
buttons[].typeyesMust be "reply"
buttons[].reply.idyesStable identifier you choose — echoed back when the customer taps. Max 256 chars
buttons[].reply.titleyesVisible 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.