POST /send-cta-url
Envia uma mensagem WhatsApp com 1 botão que abre um link externo. Útil pra link de pagamento, agendamento, página de produto.
| Campo | Valor |
|---|---|
| URL | https://api.wevi.chat/functions/v1/send-cta-url |
| Método | POST |
| Auth | Authorization: Bearer wevi_... |
| Content-Type | application/json |
| Rate limit | 60 req/min por API key |
| Plano necessário | Pro ou Ultra |
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
connection_id |
string (uuid) | sim | ID da conexão WhatsApp. |
to |
string | sim | Telefone destino. |
body |
string | sim | Texto principal. Max 1024. |
footer |
string | não | Rodapé. Max 60. |
header |
object | não | { type, text/image_url/video_url/document_url, filename? }. |
button |
object | sim | { text: string (max 20), url: string (http/https) }. |
contact_id |
string (uuid) | não | Vincula ao contato. |
idempotency_key |
string | não | Idempotência. |
Exemplo
curl -X POST https://api.wevi.chat/functions/v1/send-cta-url \
-H "Authorization: Bearer wevi_abc..." \
-H "Content-Type: application/json" \
-d '{
"connection_id": "conn-uuid",
"to": "+5511999999999",
"body": "Seu pedido está pronto pra pagamento.",
"footer": "Link expira em 30 min",
"button": { "text": "Pagar agora", "url": "https://pay.exemplo.com/abc123" }
}'
await fetch("https://api.wevi.chat/functions/v1/send-cta-url", {
method: "POST",
headers: { "Authorization": "Bearer wevi_abc...", "Content-Type": "application/json" },
body: JSON.stringify({
connection_id: "conn-uuid",
to: "+5511999999999",
body: "Seu pedido está pronto pra pagamento.",
button: { text: "Pagar agora", url: "https://pay.exemplo.com/abc123" },
}),
});
Resposta
Sucesso (200)
{ "id": "envio-uuid", "wamid": "wamid.HBgN...", "status": "sent" }
Erros principais
| Status | error |
|---|---|
| 400 | body is required, button.text is required, button.url is required ou button.url is invalid |
| 400 | button.url must be http(s) |
| 401 | Invalid API key |
| 404 | Connection not found |
Diferença pro template com URL button
Templates já permitem botões URL (estáticos ou com placeholder). Use /send-cta-url quando:
- Quer enviar dentro da janela de 24h sem template aprovado.
- A URL muda a cada envio e você não quer criar template novo no Meta.
Fora da janela de 24h, use `POST /send-template` com um template aprovado.
Próximo
/send-location-request