Pré-requisitos
https://gateway.crmspark.com.br, com o prefixo /v1.
Como funciona
Toda campanha nasce como rascunho e é iniciada numa segunda chamada:POST /v1/campaignssalva a campanha emdraft, com modelo, plataforma, cadência e filtros.POST /v1/campaigns/{id}/startconfere as variáveis manuais, monta o público e começa o envio.
audience-preview. As variáveis manuais do modelo são informadas só no início, como no diálogo “Iniciar” do painel.
Não há agendamento nem pausa. Um rascunho é iniciado uma vez, e uma campanha em andamento pode ser cancelada.
Endpoints
Os modelos de mensagem usados nas campanhas são gerenciados pelos endpoints de modelos de mensagem. A referência interativa documenta cada campo, código de erro e exemplo.
Passo a passo
1
Escolha o modelo de mensagem
Liste os modelos e anote o
id do que você vai usar:isOfficial: true indica um modelo oficial, aprovado pela Meta. Modelos oficiais só podem ser usados com platform igual a whatsapp ou instagram.2
Consulte as variáveis do modelo
Veja quais variáveis manuais você vai precisar informar:Cada item de
commonVariables é uma variável manual. As variáveis automáticas, como o nome do chat, não aparecem na lista: o Spark preenche para cada destinatário.3
Monte os filtros de público
Consulte o catálogo de campos:Estime o tamanho do público antes de criar a campanha:Se
estimatedCount for 0, revise os filtros.4
Crie a campanha
campaignId para as próximas chamadas.5
Inicie o envio
Envie Se o modelo não tiver variáveis manuais, envie
commonVariables se o modelo tiver variáveis manuais:{}.6
Acompanhe o progresso
Consulte a execução até Consulte a cada 10 a 30 segundos.
status ser completed, failed ou canceled:Plataforma
O campoplatform define o canal de envio, a velocidade máxima e quais modelos podem ser usados:
Telegram não é aceito em campanhas novas.
No WhatsApp Business, só modelos oficiais aprovados chegam a contatos fora da janela de 24 horas. Modelos internos funcionam como mensagens comuns e só são entregues dentro da janela de atendimento do canal.
Um modelo oficial com
platform: "whatsapp_lite" é recusado com CAMPAIGN_TEMPLATE_PLATFORM_MISMATCH.
Cadência
cadence é o número de mensagens por minuto que a campanha tenta enviar: um inteiro maior ou igual a 1. Com "cadence": 10, a campanha envia até 10 mensagens por minuto, em intervalos iguais.
Valores acima da velocidade máxima da plataforma (veja a tabela acima) não aceleram o envio. O Spark respeita esse teto para reduzir o risco de bloqueio dos números.
Variáveis do modelo
Os modelos podem ter trechos variáveis ({{1}}, {{2}}, …) de dois tipos.
Variáveis manuais (commonVariables)
Você informa o valor uma vez, no início, e ele vale para todos os destinatários da execução.
GET /v1/message-templates/{id} e leia commonVariables. Cada item tem key (por exemplo var1), label (nome da variável) e required.
Se faltar alguma variável manual, o início falha com CAMPAIGN_MISSING_COMMON_VARIABLES.
Variáveis automáticas
São as variáveis configuradas como “Automático — dados do chat” (nome, contato, aniversário ou campo personalizado). O Spark preenche cada uma com os dados de cada destinatário no momento do envio. Não envie essas variáveis no corpo.Se um chat não tiver o dado (por exemplo, sem nome ou com o campo personalizado vazio), a variável sai em branco. Antes de um disparo grande, confira os dados ou use filtros para excluir chats incompletos.
Exemplo com os dois tipos
Modelo:"Olá {{1}}, aproveite {{2}} com desconto exclusivo!"
{{1}}: automática (nome do chat). Não envie.{{2}}: manual (nome da promoção). Envie como"var2": "Black Friday".
"Olá Maria, aproveite Black Friday com desconto exclusivo!". “Maria” vem do chat e “Black Friday” é igual para todos.
Filtros de público
Os filtros definem quais chats recebem a campanha. A estrutura é a mesma dos filtros do painel de disparos.Estrutura
Regras de combinação
Exemplo: chats com a etiqueta VIP ou Premium, desde que sejam do WhatsApp Business.
Campos
A lista atualizada está sempre emGET /v1/campaigns/filters/schema.
Os IDs (
tag_…, funnel_step_…, wa_entrypoint_… e outros) são os mesmos devolvidos pela API.
Operadores por tipo
exists e not-exists não usam value. between e not-between usam value e value2.
Exemplos de filtros
Só WhatsApp Business:Estimar o público
POST /v1/campaigns/audience-preview calcula quantos chats atendem aos filtros, sem criar campanha e sem enviar mensagens. Aceita os mesmos filtros de POST /v1/campaigns.
filters, a contagem inclui todos os chats da organização.
Status e acompanhamento
Status da campanha
Detalhe com execuções
GET /v1/campaigns/{id} retorna a campanha e o histórico de execuções:
Progresso de uma execução
GET /v1/campaigns/{id}/executions/{executionId}:
Cancelar
204 No Content. Só campanhas em processing podem ser canceladas. As mensagens ainda na fila não são enviadas; as que já estavam sendo enviadas podem chegar ao destino.
Limite de destinatários
Cada campanha tem um tamanho máximo, igual a 24 horas de envio na velocidade máxima da plataforma: cerca de 21.600 chats no WhatsApp Business e no Instagram e 4.800 no WhatsApp Lite. O limite é conferido depois do início. Se o público passar dele, a execução termina emfailed sem enviar mensagens e a campanha volta para draft. Use audience-preview antes de iniciar e, para públicos maiores, divida o envio em campanhas com filtros diferentes (por etiqueta, funil ou data).
Exemplo completo com o SDK TypeScript
Erros comuns
As respostas de erro seguem o formato{ statusCode, code, message }. Use code na lógica do seu código, não a mensagem.
Boas práticas
- Segmente o público com etiquetas, funil e datas. Públicos menores e relevantes respondem melhor.
- Chame
audience-previewantes de criar a campanha, para evitar público vazio ou maior do que o esperado. - Consulte
GET /v1/message-templates/{id}antes de iniciar. Erros de variável só aparecem no início. - Fora da janela de atendimento, use modelos oficiais. Modelos internos só chegam dentro da janela.
- Acompanhe
failedCount. Falhas podem indicar chats fora da janela, números inválidos ou problemas no modelo. - Comece com cadência de 5 a 10 mensagens por minuto e ajuste conforme os resultados.
- Use nomes únicos e descritivos, como “Promoção maio VIP”.
- Se o início falhar por timeout de rede, consulte
GET /v1/campaigns/{id}antes de tentar de novo. Se a campanha já estiver emprocessing, a nova tentativa devolveCAMPAIGN_NOT_DRAFT.
Leitura adicional
- Disparos: campanhas no painel.
- Modelos de mensagem: variáveis manuais e automáticas, modelos oficiais e internos.
- Modelos de mensagem pela API: criar e editar modelos.
- Modo Desenvolvedores: chaves e ambiente de API.
- SDK TypeScript: cliente oficial
sparkcrm.

