Envio de mensagens

Envie mensagens de texto e templates (HSM) da Meta via WhatsApp. O contato é criado automaticamente se ainda não existir. O connection_id é opcional — sem ele, a conexão padrão da empresa é usada.

escopo: messages:send

Envia uma mensagem de texto via WhatsApp (UAZAPI ou Meta Cloud).

Modelo de envio

Corpo da requisição
{
  "to": "5548999990000",
  "message": "Olá! Seu pedido foi confirmado.",
  "connection_id": "<opcional — UUID da conexão>"
}

Resposta (200)

Corpo da resposta
{
  "success": true,
  "data": {
    "wamid": "<id-da-meta-ou-provider>",
    "provider": "uazapi",
    "message_id": "<uuid>",
    "contact_id": "<uuid>"
  }
}

Erros

StatusCódigoQuando ocorre
400MISSING_FIELDCampo obrigatório ausente no corpo (to, message)
400INVALID_PHONENúmero de telefone não pôde ser normalizado
404NOT_FOUNDconnection_id enviado não pertence à empresa
502PROVIDER_ERRORFalha no envio pelo provedor (UAZAPI/Meta)

Exemplo

curl
curl -s -X POST -H "Authorization: Bearer <sua-key>" -H "Content-Type: application/json" \
  -d '{"to":"5548999990000","message":"Olá! Seu pedido foi confirmado.","connection_id":"<opcional — UUID da conexão>"}' \
  https://www.prosalab.com/api/v1/send/message
escopo: messages:send

Envia uma mensagem de template/HSM aprovado na Meta Cloud. Template com variável (corpo, cabeçalho ou botão de URL) exige o array components — sem ele a Meta recebe o template sem preenchimento.

  • components é repassado à Meta EXATAMENTE como enviado — esta rota não monta, valida nem completa nenhum componente. Template com variável enviado sem components chega à Meta sem preenchimento; a falha é da Meta, não desta rota.
  • Botão de URL dinâmica: a Meta aceita UMA variável por botão, e apenas no FIM de uma URL já aprovada — o valor enviado em parameters[0].text é concatenado à base aprovada. index é a posição do botão no template ("0" para o primeiro), enviado como STRING. URL fora da base aprovada faz a Meta rejeitar o envio inteiro.
  • Não há endpoint para listar templates aprovados, e template_name/language_code NÃO são validados contra o catálogo antes do envio. Nome inexistente, idioma errado ou template não aprovado só falham na Meta e voltam como 502 PROVIDER_ERROR genérico — confira o nome e o idioma no Gerenciador da Meta antes de disparar.
  • Exige conexão WhatsApp Meta Cloud. Informando connection_id, ele PRECISA ser Meta Cloud; sem ele, a conexão Meta Cloud conectada da empresa é resolvida automaticamente. Conexão de outro tipo também volta como 502, não 400.

Modelo de envio

Corpo da requisição
{
  "to": "5548999990000",
  "template_name": "renovacao_proposta",
  "language_code": "pt_BR",
  "connection_id": "<opcional — UUID da conexão>",
  "components": [
    {
      "type": "body",
      "parameters": [
        {
          "type": "text",
          "text": "Maria"
        }
      ]
    },
    {
      "type": "button",
      "sub_type": "url",
      "index": "0",
      "parameters": [
        {
          "type": "text",
          "text": "aB3xK9"
        }
      ]
    }
  ]
}

Resposta (200)

Corpo da resposta
{
  "success": true,
  "data": {
    "wamid": "<id-da-meta>",
    "provider": "meta_cloud",
    "message_id": "<uuid>",
    "contact_id": "<uuid>"
  }
}

Erros

StatusCódigoQuando ocorre
400MISSING_FIELDCampo obrigatório ausente (to, template_name, language_code)
400INVALID_PHONENúmero de telefone não pôde ser normalizado
404NOT_FOUNDconnection_id enviado não pertence à empresa
502PROVIDER_ERRORFalha no envio pela Meta — template/idioma não aprovado, components inválido, URL fora da base aprovada ou conexão que não é Meta Cloud

Exemplo

curl
curl -s -X POST -H "Authorization: Bearer <sua-key>" -H "Content-Type: application/json" \
  -d '{"to":"5548999990000","template_name":"renovacao_proposta","language_code":"pt_BR","connection_id":"<opcional — UUID da conexão>","components":[{"type":"body","parameters":[{"type":"text","text":"Maria"}]},{"type":"button","sub_type":"url","index":"0","parameters":[{"type":"text","text":"aB3xK9"}]}]}' \
  https://www.prosalab.com/api/v1/send/template
Envio de mensagens — Prosalab Developers