waiaconnect

Documentação / Completo

Templates propostos pelo seu cliente

POST /v1/template-links

Markdown

O seu cliente sabe melhor que você o que precisa dizer — mas não entra no painel. Com um link de proposta ele monta o template e você aprova. O fluxo: você gera o link (em Propostas → Gerar link, ou POST /v1/template-links com connectionId) restrito a UM número; manda para ele; o seu cliente abre uma página com a sua marca, escolhe um template do catálogo, edita com uma pré-visualização estilo WhatsApp e o pré-verificador rodando em linguagem simples, e o envia. Chega a você como rascunho na caixa Propostas (e pelo webhook template.draft_submitted), com a categoria sugerida. Você revisa, ajusta a categoria se for preciso e Aprova → só então ele é criado na Meta (PENDING).

A categoria tem consequência econômica (MARKETING sai mais caro que UTILITY) e por isso NÃO a pedimos ao seu cliente: o sistema sugere e você decide ao aprovar. Você pode aprovar várias de uma vez.

Há um interruptor por número, 'Requer a minha aprovação', ligado por padrão. Se você confia num cliente, desligue-o (Números → o número → Geral) e as propostas dele vão direto para a Meta sem passar pela caixa.

curl -X POST https://api.waiaconnect.com/v1/template-links \
  -H "Authorization: Bearer wc_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connectionId":"conn_…","suggestedRubro":"salud","resellerMessage":"Proponé el recordatorio de turno","draftLimit":5,"lang":"es"}'
# → { "url": "https://…/ct/<token>", "expiresAt": "…", "publicId": "onb_…" }
# Send url to your customer. They propose a template for THIS number; it arrives in your
# panel (and as template.draft_submitted) for you to approve. They never enter the panel.
const res = await fetch("https://api.waiaconnect.com/v1/template-links", {
  method: "POST",
  headers: { "Authorization": "Bearer wc_live_YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
  "connectionId": "conn_…",
  "suggestedRubro": "salud",
  "resellerMessage": "Proponé el recordatorio de turno",
  "draftLimit": 5,
  "lang": "es"
})
});
const { url } = await res.json(); // https://…/ct/<token> — send it to your customer
<?php
$ch = curl_init("https://api.waiaconnect.com/v1/template-links");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer wc_live_YOUR_API_KEY", "Content-Type: application/json"],
  CURLOPT_POSTFIELDS => json_encode(["connectionId" => "conn_…","suggestedRubro" => "salud","resellerMessage" => "Proponé el recordatorio de turno","draftLimit" => 5,"lang" => "es"]),
]);
$out = json_decode(curl_exec($ch), true);
echo $out["url"]; // https://…/ct/<token> — send it to your customer
import requests
res = requests.post("https://api.waiaconnect.com/v1/template-links",
  headers={"Authorization": "Bearer wc_live_YOUR_API_KEY", "Content-Type": "application/json"},
  json={"connectionId":"conn_…","suggestedRubro":"salud","resellerMessage":"Proponé el recordatorio de turno","draftLimit":5,"lang":"es"})
res.raise_for_status()
print(res.json()["url"])  # https://…/ct/<token> — send it to your customer

O link é de um só número: o seu cliente não pode propor para outro dos seus números.

O cliente NUNCA entra no painel nem vê a nossa marca. A página é sem login, com a sua marca.

O motivo da recusa é interno (para o seu registro): o seu cliente não o vê no produto. Se quiser que ele saiba, diga pelo seu canal.

Você pode limitar quantas propostas cada link admite (draftLimit) e pôr uma mensagem e um segmento sugerido.

A sincronização com a Meta nunca sobrescreve um rascunho: até você aprovar, ele vive só no Connect.

Aprovar ou recusar FECHA o aviso dessa proposta (só o dessa: você pode ter várias abertas sobre o mesmo número). Antes o aviso ficava aberto para sempre e o contador nunca baixava.

Os links de proposta também vivem na seção Links, com quantas propostas cada um trouxe e se o seu cliente o abriu.