Pular para o conteúdo principal
Sim — dá para enviar botões e listas pela API sem template. Botões interativos e listas de seleção única são mensagens de serviço (texto livre) no mesmo endpoint que você já usa:
Nenhum template para criar, nenhuma revisão da Meta. Em números Meta Cloud API (oficiais) existe uma condição: a janela de atendimento de 24 horas precisa estar aberta — e ela sempre está quando o seu robô responde a uma mensagem que o cliente acabou de mandar. Em números não oficiais não há janela. Este é o formato de um robô típico: o cliente escreve, você responde com um menu, o cliente escolhe uma opção, você responde o próximo passo.

Escolha o tipo interativo certo

Todos exigem text — o corpo da mensagem acima dos botões ou do botão da lista. São mutuamente exclusivos: um tipo interativo por mensagem. (buttons também pode ir num envio de template; list, carousel e flow não.)

Enviar uma lista

A resposta é o 202 de sempre, com id e correlationId. Guarde o id: é ele que liga a escolha do cliente a este menu (veja Ligue a escolha ao menu abaixo). header e buttons não são permitidos junto com list.
Mais de 10 opções? Envie as 9 primeiras e use a 10ª linha como “Ver mais” (id: "pagina-2"). Quando o cliente escolher essa linha, envie a próxima lista. Dez é o limite da Meta, aplicado em todo tipo de número.

Enviar botões de resposta

Até 3 botões. Além de reply, um botão pode ser url, call ou copy — os formatos completos estão em Enviar interativos.
Em números Meta (oficiais), não misture um botão url com botões reply num envio de texto livre — uma ordem é recusada, a outra é aceita e nunca entregue. Mande o link numa mensagem separada. Detalhes em Enviar interativos.

Receber a escolha do cliente

A escolha chega no seu webhook como qualquer outra mensagem de entrada. O formato do payload depende de como o número foi conectado — a mesma regra de todos os outros eventos de entrada (Quais eventos o seu número envia).
Você recebe o envelope nativo da Meta (campo de webhook messages), com type: "interactive". O id que você definiu na linha ou no botão volta, e context.id é o wamid da mensagem que levou o menu.
Um botão de resposta chega do mesmo jeito, com "type": "button_reply" e "button_reply": { "id": "boleto:tit-2041", "title": "Boleto" }.Decida por interactive.list_reply.id / interactive.button_reply.id — é a chave do seu ERP, intacta.

Ligue a escolha ao menu

O seu robô costuma ter vários menus abertos com clientes diferentes. Para saber a qual menu uma escolha pertence, guarde um registro pequeno por menu enviado:
  1. POST /v1/messages/send devolve id → guarde { id, cliente, opções }.
  2. Descubra o id do WhatsApp desse menu: em números não oficiais, o message.sent traz id e messageId; em números oficiais, cada item de statuses[] traz o seu id em biz_opaque_callback_data, ao lado do wamid (statuses[].id).
  3. A escolha cita esse messageId — quotedMessageId (não oficial) ou context.id (oficial) — e você encontra o registro e a opção.
Se as suas opções se descrevem sozinhas ("id": "tit-2041"), o passo 2 é opcional: o id da linha — list_reply.id em números oficiais, buttonId nos não oficiais — já diz o que foi escolhido.

A janela de 24 horas e o custo (números oficiais)

  • Mensagens de texto livre — botões, listas, carrosséis, texto simples — só são entregues num número Meta enquanto a janela de atendimento de 24 horas estiver aberta, ou seja, até 24 h depois da última mensagem do cliente. Um robô que responde mensagens recebidas está sempre dentro dela.
  • Para iniciar a conversa você mesmo (um lembrete de vencimento, por exemplo), use primeiro um template aprovado. Quando o cliente responder, a janela abre e o robô continua com listas e botões.
  • Fora da janela o envio falha com META_OUTSIDE_24H_WINDOW. Você pode consultar a janela antes de enviar com GET /v1/service-window.
  • Mensagem de serviço não é mais sempre grátis. Desde 01/10/2026, a Meta dá 1.000 mensagens de serviço grátis por mês por número e cobra a tarifa de Utilidade do país depois disso. Quem cobra é a Meta, não a Pilot Status. Veja Preços.
Números não oficiais não têm janela nem cobrança da Meta.

Erros comuns

Próximos passos