Mensagens
Enviar Botões
Envia mensagem com até 3 botões interativos (REPLY, URL, CALL ou COPY) e header opcional de mídia
POST
Enviar Botões
Auth:
Envelope de erro:
TokenAccount ou TokenInstance • Rate-limit: Global (100/min) • Idempotente: não
Descrição
Envia uma mensagem com até 3 botões interativos (limite do WhatsApp). Os botões aceitam quatro tipos:REPLY (padrão, retorna o ID quando clicado), URL (abre link), CALL (disca número) e COPY (copia código). O header pode ser texto (headerText) ou mídia (mediaUrl + mediaType). Se mediaUrl for enviado, mediaType é obrigatório e deve ser maiúsculo: IMAGE, VIDEO ou DOCUMENT. Quando há mídia, headerText é ignorado (a mídia substitui o título).
Exemplos
3 botões REPLY
O botãoREPLY serve para responder uma mensagem específica dentro da conversa: quando o cliente toca, o WhatsApp envia uma resposta citando a mensagem original com o texto do botão (displayText), é isso que aparece no chat. Já no webhook/websocket, o que chega para sua aplicação é o id do botão clicado, permitindo identificar a opção sem depender do texto exibido.
Caso clássico de menu rápido. Cada botão retorna seu id no webhook quando clicado.
Com header de imagem
QuandomediaUrl está presente, mediaType é obrigatório e deve ser maiúsculo (IMAGE, VIDEO, DOCUMENT). headerText é ignorado neste caso.
Mix de URL + CALL + COPY
Combina três tipos diferentes de botão em uma só mensagem. Oid carrega valores semânticos distintos por tipo.
Resposta de sucesso
Ocontent retorna o contentText enviado, e o messageType é fixo em buttons. A definição dos botões em si não vem na resposta, guarde o messageId para correlacionar os cliques que chegam via webhook.
200 OK
Quando o usuário toca em um botão
REPLY, a resposta chega como mensagem de texto contendo o id do botão clicado, capture isso pelo webhook para encadear o fluxo.Parâmetros de rota
Nome da instância (ex.:
$Instance_Name).Headers
TokenAccount ou TokenInstance.application/jsonRequest body
Destino: telefone (
5511999999999) ou JID (@s.whatsapp.net, @lid, @g.us, @newsletter).Texto principal do corpo da mensagem (entre header e botões).
Lista de botões. Mínimo 1, máximo 3 (limite do WhatsApp). Cada botão tem:
id(string, obrigatório), semântica varia portype:REPLYretorna esse ID;URLabre essa URL;CALLdisca esse número;COPYcopia esse código.displayText(string, obrigatório), texto visível no botão.type(string),REPLY(padrão),URL,CALLouCOPY. Outro valor retorna400 Button N: Type must be one of: REPLY, URL, CALL, COPY.
Título exibido no topo da mensagem. Ignorado se
mediaUrl for fornecido (a mídia substitui o header).Texto opcional exibido abaixo dos botões.
URL de uma mídia (imagem, vídeo ou documento) para usar como header. Quando enviado,
mediaType torna-se obrigatório.Tipo da mídia em
mediaUrl. Obrigatório se mediaUrl estiver presente. Aceita apenas IMAGE, VIDEO ou DOCUMENT (maiúsculo). Outro valor retorna 400 MediaType must be one of: IMAGE, VIDEO, DOCUMENT.Tempo em segundos para aguardar antes de enviar. Durante o intervalo, o servidor envia o indicador de “digitando…” e dispara o “paused” antes do envio real.
ID da mensagem a ser citada (reply). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco.
Quando
true e replyTo aponta para uma mensagem originária de um grupo, a mensagem é redirecionada para o privado do autor original (mantendo a citação).Identificador de origem para rastreabilidade (ex.:
crm, bot-suporte, n8n). Salvo no registro da mensagem e propagado para webhooks.Notas
delayé em segundos (não milissegundos).- O WhatsApp aceita no máximo 3 botões por mensagem. Quatro ou mais retornam
400 Maximum of 3 buttons allowed. - Se
mediaUrlé enviado,headerTexté silenciosamente ignorado. mediaTypeé normalizado para maiúsculo internamente, envie sempreIMAGE,VIDEOouDOCUMENT.- Para botões
URL, garanta que o link comece comhttps://para evitar bloqueio pelo cliente. - Para botões
CALL, use formato internacional (+5511...). - Aparelhos antigos podem cair em fallback de texto e exibir os botões como mensagem comum.
Erros
| HTTP | Status interno | Mensagem |
|---|---|---|
| 400 | , | Instance name is required |
| 400 | , | Invalid request body: <detalhe> |
| 400 | , | Number is required |
| 400 | , | ContentText is required |
| 400 | , | At least one button is required |
| 400 | , | Maximum of 3 buttons allowed |
| 400 | , | MediaType is required when MediaURL is provided |
| 400 | , | MediaType must be one of: IMAGE, VIDEO, DOCUMENT |
| 400 | , | Button N: ID is required |
| 400 | , | Button N: DisplayText is required |
| 400 | , | Button N: Type must be one of: REPLY, URL, CALL, COPY |
| 400 | invalid_number | Invalid phone number format: <detalhe> |
| 400 | invalid_request | (motivo do request inválido detectado pelo serviço) |
| 404 | , | Instance not found |
| 500 | send_failed | Failed to send buttons message: <reason> |
| 503 | disconnected | Instance is not connected to WhatsApp |