Campanhas
Lista campanhas de WhatsApp e cria rascunhos com template, variáveis e público.
Listar campanhas
Devolve todas as campanhas com os contadores de envio. Sem paginação.
/api/v1/admin/whatsapp-confluence/campaignsAdminLista campanhas
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/campaigns" \
-H "Authorization: Bearer $TOKEN"Resposta
200Campanhas
json
{
"campaigns": [
{
"id": "9a1b2c3d-4e5f-4061-8a7b-c8d9e0f1a2b3",
"name": "Volta às aulas",
"template_name": "promo_volta_as_aulas",
"template_language": "pt_BR",
"params_template": {
"body": [
"{{nome}}",
"20%"
]
},
"cta_kind": "S",
"audience_filter": {
"source": "S",
"opted_in_only": true
},
"status": "D",
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"clicked": 0,
"created_at": "2026-10-10T18:00:00Z"
}
]
}Campos da resposta
campaignsarrayCampanhas. Lista vazia se não houver.
campaigns[].iduuidId da campanha.
campaigns[].namestringNome interno.
campaigns[].template_namestringTemplate usado.
campaigns[].template_languagestringIdioma do template.
campaigns[].params_templateobjectVariáveis do corpo:
body, lista de textos na ordem de {{1}}, {{2}}. O texto {{nome}} (ou {{name}}) vira o nome do contato, ou cliente se não houver.campaigns[].cta_kindstringNKSCBotão de ação anexado.
campaigns[].audience_filterobjectPúblico:
source, q, opted_in_only.campaigns[].statusstringDQRCXESituação.
campaigns[].scheduled_atstringAgendamento. Ausente se não agendada.
campaigns[].totalintegerDestinatários.
campaigns[].sentintegerEnviadas.
campaigns[].deliveredintegerEntregues.
campaigns[].readintegerLidas.
campaigns[].failedintegerFalhas.
campaigns[].clickedintegerCliques no botão.
campaigns[].created_atstringCriação.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 500 | Falha ao consultar. | {"error":"..."} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
Criar um rascunho
Grava uma campanha em estado de rascunho (D). Nada é enviado.
/api/v1/admin/whatsapp-confluence/campaignsAdminCria um rascunho de campanha
Corpo da requisição
namestringNome interno, para você reconhecer.
template_namestringobrigatórioNome de um template aprovado. Obrigatório.
template_languagestringIdioma do template (
pt_BR).params_templateobjectVariáveis:
{"body": ["{{nome}}", "20%"]}.cta_kindstringpadrão: NNKSCBotão de ação:
N nenhum, K abre o carrinho na mini-loja, S abre a mini-loja, C abre o catálogo nativo.audience_filterobjectPúblico entre os contatos importados:
source (S ou H), q (trecho de nome ou telefone) e opted_in_only (só quem aceitou receber).Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/campaigns" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Volta às aulas", "template_name": "promo_volta_as_aulas", "template_language": "pt_BR", "params_template": {"body": ["{{nome}}", "20%"]}, "cta_kind": "S", "audience_filter": {"source": "S", "opted_in_only": true}}'Resposta
200Rascunho criado
json
{
"id": "9a1b2c3d-4e5f-4061-8a7b-c8d9e0f1a2b3",
"name": "Volta às aulas",
"template_name": "promo_volta_as_aulas",
"template_language": "pt_BR",
"params_template": {
"body": [
"{{nome}}",
"20%"
]
},
"cta_kind": "S",
"audience_filter": {
"source": "S",
"opted_in_only": true
},
"status": "D",
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"clicked": 0,
"created_at": "2026-10-10T18:00:00Z"
}Campos da resposta
(corpo)objectA campanha criada, com os campos de Listar campanhas.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | template_name vazio ou JSON inválido. | {"error":"template_name required"} |
| 500 | Falha ao gravar. | {"error":"..."} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |