> ## Documentation Index
> Fetch the complete documentation index at: https://developer.z-api.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Send action buttons

> Send a message with action buttons (link, call or reply)

## Overview

With this method you can send text messages with action buttons that redirect to links, initiate calls, or provide standard responses.

<Warning>
  Button sending is currently available, but there are some decisive factors for it to work. Check the [button status](/en/tips/button-status) topic for more information.
</Warning>

<Danger>
  **ATTENTION**

  Sending all three button types simultaneously causes an error on WhatsApp Web. Combine CALL and URL buttons together, and send REPLY buttons separately.
</Danger>

***

#### Example on WhatsApp

<div style={{ display: "flex", justifyContent: "center" }}>
  <img src="https://mintcdn.com/z-api-8aa3bb40/c1Sn38QJwMBwsVRm/images/send-button-actions-eng.jpeg?fit=max&auto=format&n=c1Sn38QJwMBwsVRm&q=85&s=cbee2468252ff38f49d3bbdadcf0661d" width="400" data-path="images/send-button-actions-eng.jpeg" />
</div>

***

## Attributes

### Header

<ParamField path="instanceId" type="string" required>
  Your instance ID. Available in the Z-API panel under **Instances**.
</ParamField>

<ParamField path="token" type="string" required>
  Your Z-API instance token.
</ParamField>

### Required

<ParamField body="phone" type="string" required>
  Recipient's phone number (or group ID for group messages) in DDI DDD NUMBER format. E.g.: 551199999999
</ParamField>

<ParamField body="message" type="string" required>
  Message text
</ParamField>

<ParamField body="buttonActions" type="array" required>
  Array of action buttons

  <Expandable title="Properties">
    <ParamField body="id" type="string">
      Button identifier
    </ParamField>

    <ParamField body="type" type="string" required>
      Button type: `CALL`, `URL` or `REPLY`
    </ParamField>

    <ParamField body="label" type="string" required>
      Text displayed on the button
    </ParamField>

    <ParamField body="phone" type="string">
      Phone number (required for CALL type)
    </ParamField>

    <ParamField body="url" type="string">
      Link URL (required for URL type, must start with http\:// or https\://).

      **Tip:** WhatsApp has a specific link for copying text. By passing this link in the `url` attribute, your button becomes a copy button: `https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otpyourcode`
    </ParamField>
  </Expandable>
</ParamField>

### Optional

<ParamField body="title" type="string">
  Message title
</ParamField>

<ParamField body="footer" type="string">
  Message footer
</ParamField>

<ParamField body="image" type="string">
  Image link or Base64
</ParamField>

***

## Request Body

**CALL and URL buttons (together):**

```json theme={"theme":{"light":"github-light","dark":"poimandres"}}
{
  "phone": "551199999999",
  "message": "a message",
  "title": "if you want to add a title",
  "footer": "if you want to add a footer",
  "image": "https://app.z-api.io/logos/zapi-dark.png",
  "buttonActions": [
    {
      "id": "1",
      "type": "CALL",
      "phone": "554498398733",
      "label": "Contact us"
    },
    {
      "id": "2",
      "type": "URL",
      "url": "https://z-api.io",
      "label": "Visit our website"
    }
  ]
}
```

**REPLY button (separate):**

```json theme={"theme":{"light":"github-light","dark":"poimandres"}}
{
  "phone": "551199999999",
  "message": "a message",
  "title": "if you want to add a title",
  "footer": "if you want to add a footer",
  "image": "https://app.z-api.io/logos/zapi-dark.png",
  "buttonActions": [
    {
      "id": "3",
      "type": "REPLY",
      "label": "Talk to an agent"
    }
  ]
}
```

***

## Response

### 200

```json theme={"theme":{"light":"github-light","dark":"poimandres"}}
{
  "zaapId": "3999984263738042930CD6ECDE9VDWSA",
  "messageId": "D241XXXX732339502B68",
  "id": "D241XXXX732339502B68"
}
```

### 405

Make sure you are correctly sending the method specification, that is, verify that you sent POST or GET as specified at the beginning of this topic.

### 415

If you receive a 415 error, make sure to add the "Content-Type" header to your request, which in most cases is "application/json".
