MAZAM WABA Connector
API

Mensagens

Endpoints de envio de mensagens via Meta Cloud API (Graph API v25.0)


Mensagens

Todos os endpoints de envio de mensagens do WABA Connector. As mensagens sao enviadas pela Meta WhatsApp Cloud API (Graph API v25.0).

Autenticacao

Todos os endpoints requerem o header de autenticacao:

Authorization: Bearer <API_KEY>

Resposta padrao

Todas as respostas de sucesso retornam:

{
  "success": true,
  "wamid": "wamid.HBgNNTU..."
}

O campo wamid e o identificador unico da mensagem no WhatsApp (WhatsApp Message ID).


POST /send/text

Envia uma mensagem de texto simples. Suporta resposta a uma mensagem existente via reply_to.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI (ex: "5511999998888")
bodystringsimTexto da mensagem
reply_tostringnaoWAMID da mensagem a ser respondida (quote)

Exemplo

curl -X POST http://localhost:8200/send/text \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "body": "Ola! Como posso ajudar?"
  }'

Exemplo com reply

curl -X POST http://localhost:8200/send/text \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "body": "Respondendo sua mensagem",
    "reply_to": "wamid.HBgNNTU..."
  }'

POST /send/image

Envia uma imagem. A midia pode ser referenciada por id (media_id previamente enviado via upload) ou por link (URL publica).

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
mediaobjectsim{"id": "media_id"} ou {"link": "https://..."}
captionstringnaoLegenda da imagem
filenamestringnaoNome do arquivo
curl -X POST http://localhost:8200/send/image \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"link": "https://example.com/foto.jpg"},
    "caption": "Confira este documento"
  }'

Exemplo com media_id

curl -X POST http://localhost:8200/send/image \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"id": "1234567890"}
  }'

POST /send/document

Envia um documento (PDF, planilha, etc). O campo filename e obrigatorio.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
mediaobjectsim{"id": "media_id"} ou {"link": "https://..."}
filenamestringsimNome do arquivo com extensao (ex: "contrato.pdf")
captionstringnaoLegenda do documento

Exemplo

curl -X POST http://localhost:8200/send/document \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"link": "https://example.com/contrato.pdf"},
    "filename": "contrato.pdf",
    "caption": "Segue o contrato para assinatura"
  }'

POST /send/audio

Envia um arquivo de audio. Formatos suportados: AAC, AMR, MP3, MP4 audio, OGG (com codec opus).

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
mediaobjectsim{"id": "media_id"} ou {"link": "https://..."}

Exemplo

curl -X POST http://localhost:8200/send/audio \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"link": "https://example.com/mensagem.ogg"}
  }'

POST /send/video

Envia um video. Formatos suportados: MP4, 3GPP. Tamanho maximo: 16 MB.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
mediaobjectsim{"id": "media_id"} ou {"link": "https://..."}
captionstringnaoLegenda do video

Exemplo

curl -X POST http://localhost:8200/send/video \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"link": "https://example.com/video.mp4"},
    "caption": "Veja o tutorial"
  }'

POST /send/sticker

Envia um sticker. Formato suportado: WebP. Tamanho maximo: 100 KB (estatico) ou 500 KB (animado).

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
mediaobjectsim{"id": "media_id"} ou {"link": "https://..."}

Exemplo

curl -X POST http://localhost:8200/send/sticker \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "media": {"link": "https://example.com/sticker.webp"}
  }'

POST /send/location

Envia uma localizacao no mapa.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
latitudefloatsimLatitude (ex: -23.5505)
longitudefloatsimLongitude (ex: -46.6333)
namestringnaoNome do local
addressstringnaoEndereco do local

Exemplo

curl -X POST http://localhost:8200/send/location \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "latitude": -23.5505,
    "longitude": -46.6333,
    "name": "MAZAM Escritorio",
    "address": "Av. Paulista, 1000 - Sao Paulo, SP"
  }'

POST /send/contacts

Envia um ou mais cartoes de contato (vCard).

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
contactsarraysimLista de objetos de contato no formato vCard da Meta

Cada objeto de contato segue o formato da Meta Cloud API:

{
  "name": {
    "formatted_name": "Joao Silva",
    "first_name": "Joao",
    "last_name": "Silva"
  },
  "phones": [
    {
      "phone": "+5511999998888",
      "type": "CELL"
    }
  ],
  "emails": [
    {
      "email": "joao@exemplo.com",
      "type": "WORK"
    }
  ]
}

Exemplo

curl -X POST http://localhost:8200/send/contacts \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "contacts": [
      {
        "name": {
          "formatted_name": "Suporte MAZAM",
          "first_name": "Suporte",
          "last_name": "MAZAM"
        },
        "phones": [
          {"phone": "+5511888887777", "type": "WORK"}
        ]
      }
    ]
  }'

POST /send/reaction

Envia uma reacao (emoji) a uma mensagem existente. Para remover uma reacao, envie emoji como string vazia.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
message_idstringsimWAMID da mensagem a ser reagida
emojistringsimEmoji da reacao (ex: "\ud83d\udc4d") ou "" para remover

Exemplo

curl -X POST http://localhost:8200/send/reaction \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "message_id": "wamid.HBgNNTU...",
    "emoji": "\ud83d\udc4d"
  }'

POST /send/template

Envia uma mensagem de template aprovado pela Meta. Templates sao necessarios para iniciar conversas fora da janela de 24 horas.

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
template_namestringsimNome do template aprovado (ex: "hello_world")
languagestringnaoCodigo do idioma (padrao: "pt_BR")
componentsarraynaoComponentes com variaveis do template

Exemplo simples (template sem variaveis)

curl -X POST http://localhost:8200/send/template \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "template_name": "hello_world",
    "language": "pt_BR"
  }'

Exemplo com variaveis

curl -X POST http://localhost:8200/send/template \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "template_name": "confirmacao_proposta",
    "language": "pt_BR",
    "components": [
      {
        "type": "body",
        "parameters": [
          {"type": "text", "text": "Joao"},
          {"type": "text", "text": "R$ 5.000,00"},
          {"type": "text", "text": "12x de R$ 450,00"}
        ]
      }
    ]
  }'

POST /send/interactive

Envia uma mensagem interativa. Suporta tres tipos: buttons (botoes de resposta rapida), list (menu de lista) e cta_url (botao com link).

Request body

CampoTipoObrigatorioDescricao
tostringsimNumero do destinatario com DDI
typestringsimTipo da mensagem: "buttons", "list" ou "cta_url"
bodystringsimTexto principal da mensagem
headerobjectnaoCabecalho (ex: {"type": "text", "text": "Titulo"})
footerstringnaoTexto do rodape
buttonsarraynaoLista de botoes (para type="buttons")
button_textstringnaoTexto do botao do menu (para type="list", padrao: "Menu")
sectionsarraynaoSecoes do menu (para type="list")
display_textstringnaoTexto do botao CTA (para type="cta_url", padrao: "Acessar")
urlstringnaoURL de destino (para type="cta_url")

Exemplo: Botoes de resposta rapida

Maximo de 3 botoes. Cada botao tem type: "reply", um id e um title (ate 20 caracteres).

curl -X POST http://localhost:8200/send/interactive \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "type": "buttons",
    "body": "Deseja prosseguir com a simulacao de FGTS?",
    "header": {"type": "text", "text": "Simulacao FGTS"},
    "footer": "MAZAM Credito",
    "buttons": [
      {"type": "reply", "reply": {"id": "sim", "title": "Sim, prosseguir"}},
      {"type": "reply", "reply": {"id": "nao", "title": "Nao, obrigado"}},
      {"type": "reply", "reply": {"id": "duvidas", "title": "Tenho duvidas"}}
    ]
  }'

Exemplo: Menu de lista

curl -X POST http://localhost:8200/send/interactive \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "type": "list",
    "body": "Escolha o produto de seu interesse:",
    "button_text": "Ver opcoes",
    "sections": [
      {
        "title": "Produtos",
        "rows": [
          {"id": "fgts", "title": "Antecipacao FGTS", "description": "Saque-aniversario"},
          {"id": "econsignado", "title": "E-Consignado", "description": "Credito consignado CLT"},
          {"id": "info", "title": "Mais informacoes", "description": "Falar com atendente"}
        ]
      }
    ]
  }'

Exemplo: Botao CTA com URL

curl -X POST http://localhost:8200/send/interactive \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999998888",
    "type": "cta_url",
    "body": "Acesse o link abaixo para assinar o contrato digitalmente.",
    "display_text": "Assinar contrato",
    "url": "https://assinatura.mazam.com.br/contrato/abc123"
  }'

Observacoes importantes

Janela de 24 horas

  • Dentro da janela (cliente enviou mensagem nas ultimas 24h): voce pode enviar qualquer tipo de mensagem (texto, midia, interativo) gratuitamente.
  • Fora da janela: apenas mensagens de template aprovado (POST /send/template) podem ser enviadas. Mensagens de template sao cobradas por entrega.

Formato do campo media

O campo media aceita dois formatos:

  • Por ID: {"id": "media_id"} -- use quando ja fez upload via POST /media/upload
  • Por link: {"link": "https://url-publica.com/arquivo.ext"} -- a URL deve ser acessivel publicamente

Formato do numero to

Sempre use o formato internacional sem simbolos: apenas digitos com DDI. Exemplos:

  • Brasil: "5511999998888" (55 = DDI, 11 = DDD, 9xxxx = numero)
  • Portugal: "351912345678"

Este guia foi útil?

Última atualização: 7 de abril de 2026

On this page