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

GET/api/v1/accounts/{account_id}/campaigns

Lista todas as campanhas da conta.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/campaigns" \
  -H "api_access_token: YOUR_TOKEN" | jq .
200Lista de campanhas
json
{
  "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"
    }
  ]
}
POST/api/v1/accounts/{account_id}/campaigns

Cria 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)

NomeTipoObrigatorioDescricao
titlestringSimTitulo da campanha
descriptionstringNaoDescricao
inbox_idintegerSimID da inbox de envio
messagestringSimMensagem (suporta variaveis {{contact.name}}, etc.)
scheduled_atstringNaoData de envio (ISO 8601). Define a campanha como one_off.
audiencearrayNaoArray de objetos { type, id } para segmentacao (ex: por label)
sender_idintegerNaoID do agente remetente
enabledbooleanNaoCampanha ativa(default: true)
trigger_only_during_business_hoursbooleanNaoDisparar apenas em horario comercial (campanhas ongoing)
message_interval_secondsintegerNaoIntervalo entre mensagens em segundos
trigger_rulesobjectNaoRegras 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 }]
    }
  }'
GET/api/v1/accounts/{account_id}/campaigns/{id}

Retorna detalhes de uma campanha com metricas de envio.

PATCH/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)

NomeTipoObrigatorioDescricao
titlestringNaoTitulo
messagestringNaoMensagem
enabledbooleanNaoAtivar/desativar
scheduled_atstringNaoReagendar
DELETE/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.