waiaconnect

Documentación / Completo

Plantillas propuestas por tu cliente

POST /v1/template-links

Tu cliente sabe mejor que vos qué necesita decir — pero no entra al panel. Con un enlace de propuesta él arma la plantilla y vos la aprobás. El flujo: generás el enlace (desde Propuestas → Generar enlace, o POST /v1/template-links con connectionId) acotado a UN número; se lo mandás; tu cliente abre una página con tu marca, elige una plantilla del catálogo, la edita con una vista previa tipo WhatsApp y el pre-chequeador corriendo en lenguaje simple, y la envía. Te llega como borrador a la bandeja Propuestas (y por el webhook template.draft_submitted), con la categoría sugerida. La revisás, ajustás la categoría si hace falta y Aprobás → recién ahí se crea en Meta (PENDING).

La categoría tiene consecuencia económica (MARKETING sale más caro que UTILITY) y por eso NO se la pedimos a tu cliente: la sugiere el sistema y la decidís vos al aprobar. Podés aprobar varias de una.

Hay un interruptor por número, 'Requiere mi aprobación', encendido por defecto. Si confiás en un cliente, lo apagás (Números → el número → General) y sus propuestas van directo a Meta sin pasar por la bandeja.

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

El enlace es de un solo número: tu cliente no puede proponer para otro de tus números.

El cliente NUNCA entra al panel ni ve nuestra marca (PRODUCTO §7). La página es sin login, con tu marca.

El motivo de rechazo es interno (para tu registro): tu cliente no lo ve en el producto. Si querés que sepa, decíselo por tu canal.

Podés limitar cuántas propuestas admite cada enlace (draftLimit) y ponerle un mensaje y un rubro sugerido.

El sync de Meta nunca pisa un borrador: hasta que aprobás, vive solo en Connect.