Skip to main content

Enviar Template

Envie uma mensagem a partir de um template cadastrado na instância. O endpoint detecta automaticamente o provider da instância (Meta oficial via Hub Message ou Z-API) — você não precisa informar de qual tipo é o template.
POST https://wapi.stegia.com.br/functions/v1/send-template-message
Para templates Meta, é a única forma de enviar mensagens fora da janela de 24h. O template precisa estar com meta_status = APPROVED e sincronizado (meta_template_id preenchido).

Headers

HeaderValor
Content-Typeapplication/json
apikeysua publishable key
AuthorizationBearer {seu_token}

Parâmetros do Body

CampoTipoObrigatórioDescrição
templateIdstring (uuid)ID do template em message_templates
instanceIdstring⚠️ID da instância. Opcional se o template já estiver vinculado a uma única instância
phonestringDestinatário (5511999999999, sem + ou formatação)
variablesobjectMapa de variáveis para preencher BODY, HEADER e BUTTONS

O que vai automático (não precisa enviar)

Tudo que faz parte do template aprovado pela Meta vai automaticamente em todo envio — você não precisa repetir na requisição:
  • Cabeçalho de TEXTO sem variável (ex.: "Boas-vindas!")
  • Rodapé (sempre estático)
  • Botões fixos: QUICK_REPLY, PHONE_NUMBER, URL sem variável
Se o template é totalmente estático, basta enviar templateId, instanceId e phone — o variables pode ser {} ou omitido.

O que precisa em variables

Só os elementos dinâmicos do template aprovado:
ChaveQuando usar
nome, telefoneAuto-preenchidas a partir do contato (sobrescritíveis)
headerCabeçalho de TEXTO com {{1}} ou cabeçalho de mídia (IMAGE/VIDEO/DOCUMENT) — informe a URL pública (ou { id, link }) do arquivo
button_1, button_2, button_3Sufixo dinâmico de botões URL que contêm {{1}} no final (numerado pela posição do botão, 1-based)
button_1_payloadPayload de botão QUICK_REPLY (raramente usado)
Nomes do corpo (pedido, valor, …) ou "1", "2"Substituem as variáveis do BODY conforme o parameter_format
A função detecta automaticamente o parameter_format do template:
  • POSITIONAL → use chaves numéricas: { "1": "João", "2": "12345" }
  • NAMED → use os próprios nomes: { "nome": "João", "pedido": "12345" }
A Meta não permite misturar {{1}} e {{nome}} no mesmo template.

Exemplos

Template Meta NAMED com header de imagem

curl -X POST https://wapi.stegia.com.br/functions/v1/send-template-message \
  -H "Content-Type: application/json" \
  -H "apikey: $SUPABASE_ANON_KEY" \
  -H "Authorization: Bearer $SUPABASE_ANON_KEY" \
  -d '{
    "templateId": "00000000-0000-0000-0000-000000000000",
    "instanceId": "INSTANCE_ID",
    "phone": "5511999999999",
    "variables": {
      "nome": "João",
      "pedido": "12345",
      "header": "https://cdn.exemplo.com/banner.jpg",
      "button_1": "https://app.exemplo.com/track/12345"
    }
  }'

Template Meta POSITIONAL simples

curl -X POST https://wapi.stegia.com.br/functions/v1/send-template-message \
  -H "Content-Type: application/json" \
  -H "apikey: $SUPABASE_ANON_KEY" \
  -H "Authorization: Bearer $SUPABASE_ANON_KEY" \
  -d '{
    "templateId": "00000000-0000-0000-0000-000000000000",
    "phone": "5511999999999",
    "variables": { "1": "João", "2": "12345" }
  }'

Template totalmente estático (sem variáveis)

curl -X POST https://wapi.stegia.com.br/functions/v1/send-template-message \
  -H "Content-Type: application/json" \
  -H "apikey: $SUPABASE_ANON_KEY" \
  -H "Authorization: Bearer $SUPABASE_ANON_KEY" \
  -d '{
    "templateId": "00000000-0000-0000-0000-000000000000",
    "instanceId": "INSTANCE_ID",
    "phone": "5511999999999"
  }'

Template Z-API (texto livre)

curl -X POST https://wapi.stegia.com.br/functions/v1/send-template-message \
  -H "Content-Type: application/json" \
  -H "apikey: $SUPABASE_ANON_KEY" \
  -H "Authorization: Bearer $SUPABASE_ANON_KEY" \
  -d '{
    "templateId": "00000000-0000-0000-0000-000000000000",
    "phone": "5511999999999",
    "variables": { "nome": "João", "pedido": "12345" }
  }'

Respostas

Sucesso (200)

{
  "success": true,
  "provider": "meta",
  "templateId": "uuid",
  "templateName": "boas_vindas",
  "phone": "5511999999999",
  "messageId": "wamid.HBgN..."
}

Erros

StatuserrorQuando ocorre
400templateId and phone are requiredBody inválido
400template_not_synced_with_metaTemplate Meta sem meta_template_id
400template_not_approvedStatus do template Meta ≠ APPROVED
400missing_variablesFaltou variável (campo missing[] lista quais)
400meta_outbound_channel_not_configuredInstância Meta sem instance_id
403Template does not belong to this instanceinstanceId divergente do template
404Template not found / Instance not foundIDs inválidos
502meta_template_send_failedFalha vinda da Hub Message (campo details)