Campanhas
Crie e gerencie campanhas de marketing e broadcast para enviar mensagens em massa para contatos segmentados via WhatsApp, email ou outros canais.
Tipos de Campanha
Campanhas podem ser one-off (envio unico) ou ongoing (campanhas continuas ativadas por triggers como visita ao site ou evento).
Listar Campanhas
/api/v1/accounts/{account_id}/campaignsLista todas as campanhas da conta.
curl -s "https://chat.seudominio.com/api/v1/accounts/1/campaigns" \
-H "api_access_token: YOUR_TOKEN" | jq .{
"data": [
{
"id": 1,
"title": "Promocao de Janeiro",
"description": "Ofertas especiais para clientes ativos",
"campaign_type": "one_off",
"inbox": { "id": 1, "name": "WhatsApp Business" },
"scheduled_at": "2026-02-01T09:00:00Z",
"audience": [
{ "type": "Label", "id": 12 }
],
"message": "Ola {{contact.name}}! Temos ofertas especiais para voce este mes.",
"enabled": true,
"campaign_status": "completed",
"created_at": "2026-01-25T10:00:00Z"
}
]
}/api/v1/accounts/{account_id}/campaignsCria uma nova campanha. Body envolto em campaign.
Body envolto em campaign — campaign_type e derivado
Os campos devem estar dentro do wrapper campaign. O campaign_typenao e enviado pelo cliente — o backend o define automaticamente: campanha com scheduled_at vira one_off, sem ele vira ongoing.
Body (campaign)
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
title | string | Sim | Titulo da campanha |
description | string | Nao | Descricao |
inbox_id | integer | Sim | ID da inbox de envio |
message | string | Sim | Mensagem (suporta variaveis {{contact.name}}, etc.) |
scheduled_at | string | Nao | Data de envio (ISO 8601). Define a campanha como one_off. |
audience | array | Nao | Array de objetos { type, id } para segmentacao (ex: por label) |
sender_id | integer | Nao | ID do agente remetente |
enabled | boolean | Nao | Campanha ativa(default: true) |
trigger_only_during_business_hours | boolean | Nao | Disparar apenas em horario comercial (campanhas ongoing) |
message_interval_seconds | integer | Nao | Intervalo entre mensagens em segundos |
trigger_rules | object | Nao | Regras de gatilho para campanhas ongoing |
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/campaigns" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"campaign": {
"title": "Boas-vindas novos contatos",
"inbox_id": 1,
"message": "Ola {{contact.name}}! Bem-vindo a nossa comunidade.",
"audience": [{ "type": "Label", "id": 12 }]
}
}'/api/v1/accounts/{account_id}/campaigns/{id}Retorna detalhes de uma campanha com metricas de envio.
/api/v1/accounts/{account_id}/campaigns/{id}Atualiza uma campanha. Body envolto em campaign. O {id} na URL e o display_id da campanha (per-account).
Body (campaign)
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
title | string | Nao | Titulo |
message | string | Nao | Mensagem |
enabled | boolean | Nao | Ativar/desativar |
scheduled_at | string | Nao | Reagendar |
/api/v1/accounts/{account_id}/campaigns/{id}Remove uma campanha.
Escopo de conta
O {id} e o display_id da campanha — um identificador sequencial por conta, nao um ID global. A campanha e resolvida com Current.account.campaigns.find_by(display_id:); campanhas de outras contas nunca sao alcancadas. A remocao e definitiva.