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

# Enviando Mensagens

## Respondendo Mensagens

Para responder a mensagens já enviadas ou recebidas, utilize a propriedade `reply_to`. Isso permite que sua resposta seja vinculada diretamente à mensagem original, proporcionando um contexto claro na conversa (como mostrado na imagem abaixo).

<img src="https://mintcdn.com/zapsterapi/hkJBRd8211Vh6izL/pt-BR/v1/api-reference/messages/reply_to.png?fit=max&auto=format&n=hkJBRd8211Vh6izL&q=85&s=a1fbdc33cc8f32601b31d9279a524b37" alt="reply_to parameter" width="679" height="162" data-path="pt-BR/v1/api-reference/messages/reply_to.png" />

<Warning>
  **Limitação:** Atualmente, só é possível responder a mensagens que foram enviadas/recebidas nos últimos 7 dias.
</Warning>

## Agendando mensagens

Para agendar uma mensagem para envio futuro, adicione o campo `send_at` ao body da requisição com a data e hora no formato ISO 8601.

Quando `send_at` está presente, a resposta muda:

* Status HTTP **201** (em vez de 200)
* Corpo com `message_id`, `status: "scheduled"` e `send_at` em UTC

O campo `send_at` é opcional. Quando não informado, a mensagem é enviada imediatamente como sempre.

<Note>
  O `send_at` deve ser no mínimo 1 minuto no futuro. O limite máximo depende do seu plano.
  Veja os [limites por plano](/pt-BR/v1/concepts/scheduled-messages#limites-por-plano).
</Note>

Para cancelar uma mensagem agendada, veja [Cancelar mensagem](/pt-BR/v1/api-reference/messages/cancel-message).
Para listar e rastrear todas as mensagens, veja [Listar mensagens](/pt-BR/v1/api-reference/messages/list-messages).


## OpenAPI

````yaml POST /wa/messages
openapi: 3.1.0
info:
  title: Zapster API
  description: ''
  version: 1.0.0
servers:
  - url: https://api.zapsterapi.com/v1
    description: Produção
security: []
tags: []
paths:
  /wa/messages:
    post:
      tags: []
      summary: Enviando Mensagens
      parameters:
        - name: X-Instance-ID
          in: header
          description: Obrigatório se `instance_id` não estiver presente no `body`.
          required: false
          example: ozj35qv418rpmlrb
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                recipient:
                  type: string
                  examples:
                    - group:123456789987654321
                  description: >-
                    Número ou ID do grupo para onde será enviada a mensagem. Em
                    caso de grupo o ID deve ser prefixado com o texto `group:`
                    (Ex. `group:123456789987654321`).
                text:
                  type: string
                  description: >-
                    Texto a ser enviado para o `recipient` (destinatário), no
                    caso de envio de mídias esta propriedade não é obrigatória.
                instance_id:
                  type: string
                  example: ozj35qv418rpmlrb
                  description: >-
                    ID da instância, obrigatório se `X-Instance-ID` não for
                    informado nos cabeçalhos.
                auto_delete:
                  type: boolean
                  default: false
                  description: >-
                    Opção válida apenas quando o `recipient` não é um grupo. Se
                    `true` então o chat/conversa será excluído após o envio da
                    mensagem.
                auto_mention:
                  type: boolean
                  default: true
                  description: >
                    Opção válida apenas quando o `recipient` é um grupo. Se
                    `true` então todo "@" seguido de um número será tratado como
                    uma menção, então se no `text` ou `media.caption` tiver algo
                    como "Olá @5599123451234" então tentaremos encontrar o
                    número no grupo e fazer a menção/marcação automática.


                    O formato do número após o **@** deve ser internacional,
                    **DDI + DDD + Número**.
                view_once:
                  type: boolean
                  default: false
                  description: >
                    Opção válida apenas para mensagens de **áudio**, **imagens**
                    e **vídeos**. Se `true` então só será possível visualizar a
                    mensagem uma única vez.
                reply_to:
                  type: string
                  example: 3EB04E7F387C999A0DD61D
                  description: >
                    Para responder a uma mensagem específica, informe o ID da
                    mensagem que deseja responder. Ao utilizar essa
                    funcionalidade corretamente, sua resposta será vinculada à
                    mensagem original, marcando-a de forma clara na conversa.
                link_preview:
                  type: boolean
                  example: false
                  default: true
                  description: >
                    Quando `false` desabilitará a pre-visualização de links que
                    estão presentes na mensagem.
                mentions:
                  description: >
                    Há duas formas de mencionar pessoas em um grupo, você pode
                    informar o valor `everyone` e todos presentes no grupo
                    (`recipient`) serão mencionados, ou você pode especifica-los
                    manualmente informando uma lista de número que deverão ser
                    mencionados.
                  oneOf:
                    - type: string
                      enum:
                        - everyone
                    - type: array
                      example:
                        - 5599123451234
                        - 5599123451234
                      items:
                        type: string
                buttons:
                  type: array
                  maxItems: 3
                  description: >
                    Lista de botões interativos (máximo 3). Para mais detalhes
                    sobre tipos e modos, veja o [guia de mensagens com
                    botões](/pt-BR/v1/guides/messages-with-buttons).
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        maxLength: 20
                        description: Texto exibido no botão (máximo 20 caracteres)
                        example: Sim, quero!
                      type:
                        type: string
                        enum:
                          - reply
                          - call
                          - url
                          - copyable
                        description: |
                          Tipo de ação do botão:
                          - `reply`: resposta rápida com texto pré-definido
                          - `call`: inicia ligação para o número informado
                          - `url`: abre um link no navegador
                          - `copyable`: permite copiar um texto
                        example: reply
                      id:
                        type: string
                        maxLength: 256
                        description: ID único do botão (opcional, máximo 256 caracteres)
                      phone_number:
                        type: string
                        description: >-
                          Número de telefone no formato internacional.
                          Obrigatório quando `type` é `call`.
                        example: '+5511999999999'
                      url:
                        type: string
                        format: uri
                        description: URL válida. Obrigatório quando `type` é `url`.
                        example: https://exemplo.com/produto
                      copy_code:
                        type: string
                        description: >-
                          Texto que será copiado. Obrigatório quando `type` é
                          `copyable`.
                        example: PROMO2024
                buttons_mode:
                  type: string
                  enum:
                    - auto
                    - interactive
                  default: auto
                  description: >
                    Modo de exibição dos botões:

                    - `auto` (padrão): o sistema escolhe automaticamente com
                    base nos tipos de botão

                    - `interactive`: força o modo interativo com destaque visual


                    No modo `auto`, se pelo menos um botão for do tipo `call`,
                    `url` ou `copyable`, o modo interativo é usado
                    automaticamente.
                template:
                  type: object
                  description: >
                    Template de mensagem (apenas para instâncias WABA). Quando
                    informado, os campos `text` e `media` são ignorados.
                  properties:
                    name:
                      type: string
                      description: Nome do template cadastrado na Meta
                      example: payment_reminder
                    language:
                      type: string
                      description: Código do idioma do template
                      example: pt_BR
                    components:
                      type: array
                      description: Componentes do template com variáveis preenchidas
                      items:
                        type: object
                        properties:
                          type:
                            type: string
                            description: Tipo do componente (header, body, button)
                            example: body
                          parameters:
                            type: array
                            description: Parâmetros/variáveis do componente
                            items:
                              type: object
                  required:
                    - name
                    - language
                send_at:
                  type: string
                  format: date-time
                  description: >
                    Data e hora para envio agendado no formato ISO 8601 com
                    timezone.

                    Quando informado, a mensagem é agendada em vez de enviada
                    imediatamente.

                    Deve ser no mínimo 1 minuto no futuro. O limite máximo
                    depende do seu plano.
                  example: '2026-03-30T09:00:00-03:00'
                media:
                  type: object
                  properties:
                    url:
                      type: string
                      format: uri
                      description: URL do arquivo ou mídia que será enviado.
                      examples:
                        - >-
                          https://images.unsplash.com/photo-1721332155567-55d1b12aa271?q=80&w=920&format=jpeg&fit=crop
                    base64:
                      type: string
                      description: Arquivo ou mídia codidificado no formato `base64`
                      examples:
                        - >-
                          iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
                    caption:
                      type: string
                      description: >-
                        Legenda que irá aparecer junto da imagem, vídeo ou
                        documento quando enviado, `text` será usado caso a
                        legenda não seja fornecida.
                    playback:
                      type: boolean
                      default: false
                      description: >-
                        Válida apenas para vídeos, e quando `true` faz um loop
                        de repetição estilo GIF.
                    ptt:
                      type: boolean
                      default: true
                      description: >-
                        Válida apenas para áudios, e quando `true` (o padrão) o
                        áudio será enviado como Push-to-Talk (gravação nativa).
                    ptv:
                      type: boolean
                      default: false
                      description: >
                        Válido apenas para vídeos, e quanto `true` o video será
                        enviado como um [video
                        note](https://faq.whatsapp.com/1291153701793079/?helpref=hc_fnav&cms_platform=web).


                        ![video note example](/images/video-note-ptv.png)
                    sticker:
                      type: string
                      default: false
                      description: >-
                        Válida apenas para imagens, quando `true` a mídia será
                        enviada como um Sticker (figurinha).
                    fileName:
                      type: string
                      description: >
                        Geralmente usado para arquivos (PDF, XLSX, Arquivos de
                        texto) onde o nome do arquivo irá aparecer junto da
                        mensagem no Whatsapp.


                        O uso da extensão é recomendada (Ex. `arquivo.xml`), mas
                        não obrigatória, quando a extensão é fornecida é usada
                        como fallback caso não seja possível a identificação do
                        arquivo através do `media.base64` ou `media.url`.
              required:
                - recipient
                - text
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  message_id:
                    type: string
                    description: ID usado para depuração interna
                required:
                  - message_id
        '201':
          description: Mensagem agendada com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  message_id:
                    type: string
                    description: Identificador único da mensagem agendada
                    example: msg_k7m2nxp9q4
                  status:
                    type: string
                    enum:
                      - scheduled
                    description: Status da mensagem
                    example: scheduled
                  send_at:
                    type: string
                    format: date-time
                    description: Data e hora de envio em UTC
                    example: '2026-03-30T12:00:00.000Z'
        '422':
          description: Erro de validação do agendamento
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Código do erro
                    enum:
                      - max_scheduled_messages_reached
                      - schedule_too_far_ahead
                    example: max_scheduled_messages_reached
                  message:
                    type: string
                    description: Descrição do erro
                    example: >-
                      You have reached the maximum of 10 scheduled messages.
                      Cancel pending messages or upgrade your plan.
      deprecated: false
      security:
        - bearer: []
components:
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````