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

# Enviar botões

> Envia uma mensagem interativa com botões de resposta ou de ação (URL, ligação, copiar código, Pix). Limites: até 3 botões REPLY; REPLY não pode ser misturado com outros tipos; PIX precisa ser o único botão. Retorna `{ messageId }`.



## OpenAPI

````yaml /pt-br/api-reference/openapi.json post /messages/send-button
openapi: 3.1.0
info:
  title: Zapfy API
  description: >-
    API de WhatsApp multi-tenant. Envie mensagens e gerencie webhooks por uma
    superfície única.
  version: 1.0.0
servers:
  - url: https://api.zapfy.io/v1
security:
  - accountToken: []
paths:
  /messages/send-button:
    post:
      tags:
        - Mensagens
      summary: Enviar botões
      description: >-
        Envia uma mensagem interativa com botões de resposta ou de ação (URL,
        ligação, copiar código, Pix). Limites: até 3 botões REPLY; REPLY não
        pode ser misturado com outros tipos; PIX precisa ser o único botão.
        Retorna `{ messageId }`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendButtonBody'
      responses:
        '200':
          $ref: '#/components/responses/MessageAccepted'
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '502':
          $ref: '#/components/responses/Error'
      security:
        - instanceToken: []
components:
  schemas:
    SendButtonBody:
      type: object
      required:
        - to
        - title
        - description
        - footer
        - buttons
      properties:
        to:
          $ref: '#/components/schemas/Recipient'
          description: >-
            Destinatário da mensagem: telefone em E.164 (ex.: 5511999998888) ou
            id de grupo.
        title:
          type: string
          description: Título do cabeçalho.
          example: Oferta especial
        description:
          type: string
          description: Texto do corpo.
          example: Confira as condições abaixo
        footer:
          type: string
          description: Texto do rodapé.
          example: Zapfy
        buttons:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Button'
          description: >-
            Botões a renderizar. Limites: até 3 botões REPLY; REPLY não mistura
            com outros tipos; PIX precisa estar sozinho.
        mentionedPhones:
          type: array
          items:
            type: string
            example: '5511999998888'
          description: Telefones a mencionar no texto do corpo.
        mentionAll:
          type: boolean
          description: Menciona todos os participantes (apenas em grupos).
        delay:
          $ref: '#/components/schemas/Delay'
        quoted:
          $ref: '#/components/schemas/Quoted'
    Recipient:
      type: string
      description: >-
        Destinatário: um telefone em E.164 (aceita com ou sem `+`, espaços ou
        máscara, ex. `5511999998888` ou `+55 11 99999-8888`) ou o id de um
        grupo. Para enviar a um grupo, use o id do grupo (obtido em `GET
        /groups`).
      example: '5511999998888'
    Button:
      type: object
      required:
        - type
      description: >-
        Um botão dentro de uma mensagem /messages/send-button. Quais campos se
        aplicam depende do `type`.
      properties:
        type:
          type: string
          enum:
            - REPLY
            - COPY
            - URL
            - CALL
            - PIX
          description: >-
            Tipo do botão. REPLY = resposta rápida; URL = abre um link; CALL =
            liga para um número; COPY = copia um código; PIX = pagamento Pix.
            Enviado em MAIÚSCULAS.
        displayText:
          type: string
          description: Rótulo exibido no botão (REPLY/COPY/URL/CALL). Ignorado para PIX.
          example: Quero saber mais
        id:
          type: string
          description: Payload de callback devolvido via webhook quando type=REPLY.
          example: btn_info
        copyCode:
          type: string
          description: Código copiado para a área de transferência quando type=COPY.
          example: PROMO2026
        url:
          type: string
          description: Link de destino quando type=URL.
          example: https://zapfy.io
        phoneNumber:
          type: string
          description: Número a discar quando type=CALL.
          example: '+5511999998888'
        currency:
          type: string
          description: 'Código de moeda ISO quando type=PIX (ex.: BRL).'
          example: BRL
        name:
          type: string
          description: Nome do recebedor exibido na tela do Pix (type=PIX).
          example: Minha Loja
        keyType:
          type: string
          enum:
            - PHONE
            - EMAIL
            - CPF
            - CNPJ
            - RANDOM
          description: Tipo da chave Pix (type=PIX). Enviado em MAIÚSCULAS.
        key:
          type: string
          description: Valor da chave Pix correspondente ao `keyType` (type=PIX).
          example: '12345678900'
    Delay:
      type: integer
      description: >-
        Atraso opcional em milissegundos antes do envio; o WhatsApp mostra
        "digitando…" nesse intervalo.
    Quoted:
      type: object
      description: Cita (responde) uma mensagem anterior.
      required:
        - messageId
      properties:
        messageId:
          type: string
          description: '`messageId` da mensagem citada.'
          example: 3EB0C767D4...
        participant:
          type: string
          description: Em grupo, quem enviou a mensagem citada.
    MessageHandle:
      type: object
      description: >-
        Identificador da mensagem enviada. Guarde o `messageId`: com o mesmo
        `to` do envio, é o que `/messages/delete` e `/messages/edit` pedem.
      properties:
        messageId:
          type: string
          description: ID da mensagem no WhatsApp.
          example: 3EB0C767D4...
  responses:
    MessageAccepted:
      description: Mensagem aceita pelo WhatsApp.
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                $ref: '#/components/schemas/MessageHandle'
    Error:
      description: Erro.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                example: Instance not found
  securitySchemes:
    accountToken:
      type: http
      scheme: bearer
      description: Token de conta (`zpfy_acct_...`) — gerencia instâncias e webhooks.
    instanceToken:
      type: http
      scheme: bearer
      description: Token de instância (`zpfy_inst_...`) — envia mensagens.

````