---
title: "Send a button message"
method: POST
path: "/send/button"
tags: ["Send Message"]
---

# Send a button message

`POST /send/button`

Send an interactive message with buttons. Each button has a `type`: `reply`, `copy`, `url`, `call` or `pix`.

Combination rules enforced by the server:
- Up to 3 `reply` buttons per message.
- `reply` buttons cannot be mixed with any other type.
- `pix` button must be sent ALONE (no other button in the same message).

WhatsApp client rendering quirks (NOT enforced by the server, but verified in the field):
- WhatsApp Web: only `reply`-only messages (up to 3) OR CTAs grouped together (`copy` + `url` + `call`) render correctly.
- Do NOT mix `reply` with CTA buttons (`copy`/`url`/`call`) — the message will not appear on WhatsApp Web.

Required body fields: `number`, `title`, `description`, `footer`, `buttons`.

## Request body

- GithubComEvolutionAPIEvolutionGoPkgSendMessageServiceButtonStruct
  - `buttons` GithubComEvolutionAPIEvolutionGoPkgSendMessageServiceButton[] — Buttons array. See combination rules on the parent type description.
    - `copyCode` string — Code placed in the clipboard when type=copy.
    - `currency` string — ISO currency code for type=pix (e.g. BRL).
    - `displayText` string — Label rendered inside the button (reply / copy / url / call). Ignored for pix.
    - `id` string — Callback payload for `reply` or code-to-copy internal id for `copy`.
    - `key` string — Pix key value matching the keyType.
    - `keyType` 'phone' | 'email' | 'cpf' | 'cnpj' | 'random' — Pix key type. One of: phone, email, cpf, cnpj, random.
    - `name` string — Merchant display name shown on the Pix sheet.
    - `phoneNumber` string — Destination phone number (E.164) when type=call.
    - `type` 'reply' | 'copy' | 'url' | 'call' | 'pix' — Button kind. One of: reply, copy, url, call, pix.
    - `url` string — Target URL when type=url.
  - `delay` integer — Typing delay (milliseconds) applied before sending the message.
  - `description` string — Body description text (required).
  - `footer` string — Footer text (required).
  - `formatJid` boolean — If false, skips automatic formatting/validation of `number` into a JID.
  - `imageUrl` string — Optional image URL used as header for reply-only buttons.
  - `mentionAll` boolean — Mention every participant (groups only).
  - `mentionedJid` string[] — JIDs to mention inside the body text.
  - `number` string — Destination phone number.
  - `quoted` GithubComEvolutionAPIEvolutionGoPkgSendMessageServiceQuotedStruct
    - `messageId` string
    - `participant` string
  - `title` string — Header title (required).
  - `videoUrl` string — Optional video URL used as header for reply-only buttons.

## Response `200`

success

- GinH

## Other responses

- `400` — Error on validation
- `500` — Internal server error

---

[API](https://skmtc.dev/evolution-foundation/apis/evolution-go.md) · [All operations](https://skmtc.dev/evolution-foundation/apis/evolution-go/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/evolution-foundation/evolution-go/revisions/8e9c4d7d1dab/schema)
