---
title: "Send buttons"
description: "Send interactive button messages on WhatsApp."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.wazapin.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Send buttons

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

| Item | Detail |
| --- | --- |
| `type` | `buttons` |
| Channel support | Official and unofficial |
| Unofficial | May be delivered as formatted fallback text |
| Session | Typically used inside the customer service window |

## Request body

| Field | Required | Description |
| --- | --- | --- |
| `channel_id` | Yes | Sender channel ID |
| `to` | Yes | Recipient phone number |
| `type` | Yes | `buttons` |
| `content.body` | Yes | Message text above the buttons |
| `content.buttons` | Yes | Array of `{ "id", "title" }` |

## Example

### cURL

```bash
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"}
  ]
}
  }'
```
### TypeScript

```typescript
import { WazapinClient, buttonsMessage } from "@wazapin/sdk";

const wazapin = new WazapinClient({ apiKey: process.env.WAZAPIN_API_KEY! });

await wazapin.messages.send(
  buttonsMessage({
channel_id: "wzp_abc123",
to: "6281234567890",
body: "Would you like to proceed?",
buttons: [
  { id: "btn_yes", title: "Yes" },
  { id: "btn_no", title: "No" },
],
  }),
);
```
### Python

```python
import requests

requests.post(
"https://api.wazapin.com/v1/messages",
headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
    "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"},
        ],
    },
},
timeout=30,
).raise_for_status()
```

:::info
When the user replies, see [Handle inbound text](/guides/handle-inbound-text) or [Handle interactive replies](/guides/handle-interactive-replies).
:::

Source: https://docs.wazapin.id/getting-started/send-buttons/index.mdx
