Let customers tap up to three quick replies instead of typing — ideal for yes/no questions, confirmations, and simple choices inside an active chat.

At a glance

ItemDetail
typebuttons
Channel supportOfficial and unofficial
UnofficialMay be delivered as formatted fallback text
SessionTypically used inside the customer service window

Request body

FieldRequiredDescription
channel_idYesSender channel ID
toYesRecipient phone number
typeYesbuttons
content.bodyYesMessage text above the buttons
content.buttonsYesArray of { "id", "title" }

Example

curl -X POST "https://api.wazapin.com/v1/messages" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channel_id": "wzp_abc123",
    "to": "6281234567890",
    "type": "buttons",
    "content": {
      "body": "Would you like to proceed?",
      "buttons": [
        {"id": "btn_yes", "title": "Yes"},
        {"id": "btn_no", "title": "No"}
      ]
    }
  }'
When the user replies, see Handle inbound text or Handle interactive replies.

Endpoint

POST https://api.wazapin.com/v1/messages Authenticate with X-Api-Key. See Authentication.

Response

On success, the API returns 201 Created with a message record (status often starts as queued).
201 Created
{
  "data": {
    "id": "9f1fd66d-c37a-4b50-a8c2-b4dca523f9c8",
    "channel_id": "wzp_abc123",
    "to_phone": "6281234567890",
    "type": "text",
    "status": "queued",
    "created_at": "2026-03-04T06:20:10Z",
    "updated_at": "2026-03-04T06:20:10Z"
  }
}
Track delivery with Webhooks or GET /v1/messages/.