Skip to main content
Todo o conteúdo de saída passa por um único método:
  • to — o do destinatário (5511999999999@s.whatsapp.net, um grupo ...@g.us, etc.). Veja Helpers de JID para construí-los.
  • content — uma string, um objeto de conteúdo tipado ou um Proto.IMessage bruto.
  • options — citação, menções, encaminhamento, visualização única, edições e mais.
A promise resolve para um WaMessagePublishResult assim que o servidor envia o ack:

Texto simples

O conteúdo mais simples é uma string:
Para mais controle, use a forma de objeto de texto — ela permite anexar context info e ajustar as prévias de link:

Respondendo (citação)

Passe o evento da mensagem original (ou uma referência) como options.quote:
A citação é renderizada como um balão de resposta referenciando a mensagem original.

Menções

options.mentions é uma lista de JIDs para marcar. Inclua o texto @número correspondente no corpo para que o WhatsApp renderize a menção:
O comportamento da prévia de link é controlado por mensagem através do campo linkPreview do objeto de texto:
Configure o fetcher padrão globalmente com a opção linkPreview do client.

Encaminhamento

Defina options.forward para marcar uma mensagem como encaminhada:

Referência de opções de envio

WaSendMessageOptions (terceiro argumento) inclui:
Para enviar uma única mensagem sem expiração para um grupo com disappearing-mode ligado, prefira disableGroupEphemeralAutoInject: true em vez de expirationSeconds: 0 — o último ainda grava expiration=0 no contextInfo de saída. Mesma história para disableDirectEphemeralAutoInject em chats 1:1.

Enviando pra um username

Um handle de username (@alice) não é um JID endereçável sozinho. Resolva pro LID da conta com client.profile.resolveUsername primeiro, e depois envie pra esse JID — a API de envio recebe o JID exatamente como qualquer outro destinatário 1:1. resolveUsername retorna uma union discriminada em que você tem que switchar. Cada caso tem um próximo passo:
resolveUsername lança antes de qualquer round-trip quando o handle ou a chave falham na validação local (caracteres inválidos, comprimento errado, palavra reservada, chave que não tem exatamente 4 dígitos) — então uma chamada que retorna passou nas regras locais, e o status reflete o resultado do servidor.

A union de conteúdo

content aceita qualquer WaSendMessageContent. As variantes tipadas estão documentadas ao longo destes guias:

Mídia

Imagens, vídeo, áudio, documentos, figurinhas.

Enquetes e reações

Enquetes, votos, reações, fixações, edições, revogações, eventos.
Você sempre pode recorrer a um Proto.IMessage bruto para qualquer coisa não coberta por um builder tipado:
Tipos de conteúdo sem um builder tipado ainda — localizações, cartões de contato vCard e cards de pagamento Business PIX / review-and-pay — estão documentados em Envios proto brutos. O conjunto completo de campos Proto.IMessage reconhecidos (localização, localização ao vivo, contatos, convite de grupo, produto, pedido, …) está na referência de tipos de mensagem.
Última modificação em 19 de agosto de 2026