API de Disparos
Contatos e tags, campanhas para uma lista de contatos e automações que recebem pessoas a qualquer hora, pelo seu sistema. Os envios seguem o mesmo ritmo e as mesmas regras da tela.
Endereço base: https://www.protectzap.com.br/api/v1/disparos
O que dá para fazer
- Contatos: manter a base em dia com o seu sistema, criando ou mesclando pelo telefone, e organizar por tags.
- Campanhas: criar uma campanha para as tags escolhidas, simular a duração e o risco, disparar ou agendar, acompanhar o relatório e ajustar com ela rodando.
- Automações: colocar uma pessoa na fila de uma automação no momento em que algo acontece no seu sistema (compra aprovada, carrinho abandonado, assinatura vencendo), com os dados dela nas variáveis da mensagem. A automação em si (mensagem, números, horário, ritmo) é criada na tela, em Disparos › Automações.
- Avisos: receber no seu sistema o que aconteceu com cada mensagem de automação, quem pediu para sair e o andamento das campanhas e da cota.
Para usar, a conta precisa de um plano pago do Disparos e de uma chave com o produto Disparos (veja Chaves e autenticação).
A mensagem
A campanha leva o objeto mensagem. O tipo é texto, imagem, video, audio, documento, botoes ou lista:
texto: o corpo. Em imagem, vídeo e documento sem botões, o texto vai emlegenda.midia_urlenome_arquivo: o arquivo, enviado antes porPOST /api/v1/disparos/midia. Áudio sai como mensagem de voz, sem texto.botoes: até 3, cada um comtexto,tipo(resposta,urloutelefone) evalor(o endereço ou o telefone).lista:titulo_botaoesecoes, cada seção comtituloeitens(id,titulo,descricao).tem_optout: acrescenta no fim a linha para a pessoa responder SAIR.salvar_contatos: o número salva a pessoa como contato antes de mandar.
Variações no formato {{opção 1/opção 2}} fazem cada pessoa receber uma versão (recomendado). Variáveis: {{nome}}, {{primeiro_nome}}, {{saudacao}} (bom dia, boa tarde ou boa noite) e os campos personalizados dos contatos. Nas automações, valem também as variáveis de cada evento, definidas na tela (até 20 por automação).
{
"tipo": "imagem",
"midia_url": "https://.../catalogo.jpg",
"legenda": "{{Oi/Olá}} {{primeiro_nome}}, o catálogo novo chegou",
"tem_optout": true
}Contatos e tags
Quem recebe as campanhas. O telefone identifica o contato: mandar um telefone que já existe mescla os dados, como a importação de planilha da tela.
/api/v1/disparos/contatosPermissão: leituraListar contatos
Contatos da conta em páginas (?pagina=, ?por_pagina= até 200), com o filtro da tela: ?busca= (nome, telefone ou e-mail), ?tags=a,b (com qualquer uma), ?tags_excluir= e ?situacao= (pode_receber, sem_whatsapp, pediu_sair ou bloqueado).
/api/v1/disparos/contatosPermissão: leitura e escritaCriar ou mesclar um contato
Cria o contato ou, com um telefone que já existe, mescla: as tags se somam, os campos personalizados se juntam por chave, nome e e-mail novos substituem os antigos e campo vazio nunca apaga. Bloqueio e pedido de saída nunca mudam por aqui. Telefone sem DDI recebe o 55 (ddi_padrao muda isso).
{
"telefone": "5511999990000",
"nome": "Ana Souza",
"email": "ana@exemplo.com",
"tags": ["clientes"],
"campos_personalizados": { "cidade": "Campinas" }
}/api/v1/disparos/contatos/lotePermissão: leitura e escritaCriar ou mesclar em lote
Até 1.000 contatos por chamada (contatos), com as mesmas regras. Cada um volta com a situação (criado, atualizado, sem_alteracao ou recusado) e o motivo. Pesa 1 chamada a cada 10 contatos no limite por minuto.
{ "contatos": [{ "telefone": "5511999990000", "nome": "Ana Souza", "tags": ["clientes"] }] }/api/v1/disparos/contatos/{id}Permissão: leituraUm contato
Dados, tags, campos personalizados, situação e o bloqueio com o motivo (ctt_...).
/api/v1/disparos/contatos/{id}Permissão: leitura e escritaMudar um contato
Muda nome, telefone (a conferência do WhatsApp recomeça), email, tags (a lista inteira, que substitui a atual) e campos_personalizados. Bloquear e desbloquear têm endereço próprio.
{ "tags": ["clientes", "vip"] }/api/v1/disparos/contatos/{id}Permissão: leitura e escritaApagar um contato
Apaga o contato. O histórico de envios das campanhas continua, sem o vínculo com ele.
/api/v1/disparos/contatos/{id}/bloquearPermissão: leitura e escritaBloquear
A pessoa deixa de receber campanhas e automações da conta. Quem pediu para sair continua com esse motivo.
/api/v1/disparos/contatos/{id}/desbloquearPermissão: leitura e escritaDesbloquear
Tira o bloqueio, inclusive o de quem pediu para sair. A decisão é do dono da conta.
/api/v1/disparos/tagsPermissão: leituraTags
As tags da conta com quantos contatos têm cada uma, e o total de contatos.
Campanhas
Uma mensagem para os contatos de uma ou mais tags, enviada pelos números escolhidos no ritmo do modo (Seguro ou Intenso), dentro do horário e do teto por dia. O caminho é criar o rascunho, simular e disparar ou agendar.
/api/v1/disparos/campanhasPermissão: leituraListar campanhas
A que está rodando primeiro, depois a mais nova. ?filtro= (todas, andamento, interrompidas, concluidas, rascunhos ou arquivadas), ?busca= pelo nome, ?pagina= e ?por_pagina= (até 100), com a contagem de cada filtro.
/api/v1/disparos/campanhasPermissão: leitura e escritaCriar rascunho
Cria a campanha como rascunho, com as regras da tela: números da conta e dentro do plano, horário no mesmo dia e teto que os números dão conta de cumprir. modo é seguro (padrão) ou intenso, com cadencia_intenso (intervalo_mensagens_segundos, intervalo_lotes_segundos). Exige o cabeçalho Idempotency-Key: a mesma chave devolve a mesma campanha.
Aceita simular; criar exige Idempotency-Key.
{
"nome": "Promoção de novembro",
"modo": "seguro",
"mensagem": { "tipo": "texto", "texto": "{{Oi/Olá}} {{primeiro_nome}}, a promoção começa hoje", "tem_optout": true },
"tags_incluir": ["clientes"],
"tags_excluir": ["pediu-pausa"],
"numeros": ["num_..."],
"horario": { "inicio": "08:00", "fim": "20:00", "dias_semana": [1, 2, 3, 4, 5] },
"teto_diario": 200
}/api/v1/disparos/campanhas/{id}Permissão: leituraUma campanha
A mensagem (com a versao), as tags do público, os números, o horário, o teto e os contadores (dsp_...).
/api/v1/disparos/campanhas/{id}Permissão: leitura e escritaMudar rascunho
Muda um rascunho ou uma campanha agendada, com os mesmos campos da criação. Campanha rodando muda por /ajustar (teto, números, horário) e por /mensagem (o texto).
/api/v1/disparos/campanhas/{id}/simularPermissão: leituraSimular
Antes de disparar: quantas pessoas recebem, em quantos dias termina, quantas por dia, se os números dão conta do teto no horário, o risco e o que impediria o disparo agora (pronta e impedimentos). Não grava nada e aceita chave de leitura.
/api/v1/disparos/campanhas/{id}/agendarPermissão: leitura e escritaDisparar ou agendar
Sem agendar_para, começa agora; com ele (ISO 8601, até 90 dias), agenda. Passa pelas travas da tela: mensagem pronta, público, números da conta, horário, teto, cota do mês e plano. Agendar de novo uma campanha agendada só troca a data.
{ "agendar_para": "2026-11-10T09:00:00-03:00" }/api/v1/disparos/campanhas/{id}/pausarPermissão: leitura e escritaPausar
Cancela o que está na fila e deixa a campanha interrompida, pronta para /retomar. Vale para campanha agendada ou rodando.
/api/v1/disparos/campanhas/{id}/retomarPermissão: leitura e escritaRetomar
Retoma uma campanha interrompida ou pausada de onde parou: quem já recebeu não recebe de novo. numeros escolhe os números; sem ele, ficam os da campanha.
{ "numeros": ["num_...", "num_..."] }/api/v1/disparos/campanhas/{id}/ajustarPermissão: leitura e escritaAjustar campanha rodando
Muda teto_diario, numeros e horario (inicio e fim) de uma campanha em andamento. A fila é refeita a partir de agora, e quem já recebeu ou está recebendo não recebe de novo.
{ "teto_diario": 150, "horario": { "inicio": "09:00", "fim": "18:00" } }/api/v1/disparos/campanhas/{id}/mensagemPermissão: leitura e escritaEditar o texto com a campanha rodando
Troca o texto (ou a legenda) de uma campanha em andamento ou pausada; vale para quem ainda não recebeu. Exige a versao da mensagem que você leu: se outra edição entrou antes, a resposta é 409 conflito. Variável que não existe nos contatos volta como aviso, com 409 confirmar_avisos; para aplicar assim mesmo, mande confirmar_avisos: true.
{ "texto": "{{Oi/Olá}} {{primeiro_nome}}, a promoção vai até sexta", "versao": 2 }/api/v1/disparos/campanhas/{id}/relatorioPermissão: leituraRelatório
Total, enviados, erros, interrompidos, pendentes e o percentual, o resultado por número e se algum número teve restrição do WhatsApp durante a campanha (com ela, parte dos enviados pode não ter chegado a quem nunca falou com o número).
/api/v1/disparos/campanhas/{id}/enviosPermissão: leituraEnvios pessoa a pessoa
Do mais novo ao mais antigo. ?situacao= (pendente, enviado, erro ou abortado), ?pagina= e ?por_pagina= (até 200).
Automações e eventos
Uma automação tem a mensagem e as regras fixas, configuradas na tela (Disparos › Automações), e recebe pessoas a qualquer hora: cada pessoa é um evento, que entra na fila e sai no ritmo da automação, dentro do horário dela. Pela API, o seu sistema coloca pessoas na fila e acompanha o resultado.
/api/v1/disparos/automacoesPermissão: leituraListar automações
As automações da conta, com a situação (ligada ou pausada, com o motivo), as regras, o movimento de hoje e dos 7 dias e se a fila está atrasada.
/api/v1/disparos/automacoes/{id}Permissão: leituraUma automação
A mensagem, as variáveis que cada evento precisa trazer, os números, o horário, o teto por dia, a validade, a prioridade e o movimento (aut_...).
/api/v1/disparos/automacoes/{id}/{acao}Permissão: leitura e escritaPausar ou retomar
Pausar para os envios; quem chegar enquanto isso espera na fila até a validade. Retomar religa com as mesmas travas da tela (mensagem pronta, números, plano e cota).
Ações: pausar, retomar
/api/v1/disparos/automacoes/pausar-todasPermissão: leitura e escritaPausar todas
Pausa todas as automações ligadas da conta de uma vez, para uma emergência.
/api/v1/disparos/automacoes/{id}/eventosPermissão: leitura e escritaAceita a Chave de EventosColocar pessoas na fila
Um evento (telefone, nome, variaveis, identificador) ou um lote (eventos, até 500). O identificador (o número do pedido, por exemplo) torna o pedido repetível: o mesmo identificador devolve o mesmo evento, e a pessoa recebe uma mensagem só. Num evento sozinho sem identificador, vale o cabeçalho Idempotency-Key. enviar_a_partir_de adia o envio (até 60 dias) e validade_ate diz até quando a mensagem ainda vale para essa pessoa, no lugar da validade da automação. Quem não entra (telefone inválido, variável obrigatória faltando, pediu para sair, repetição, cota) volta como descartado, com o motivo. Até 20 eventos, a resposta traz a previsão de envio de cada um. O lote pesa 1 chamada a cada 10 eventos no limite por minuto.
{
"telefone": "5511999990000",
"nome": "Ana Souza",
"identificador": "pedido-88231",
"variaveis": { "produto": "Tênis Corrida", "link": "https://loja.exemplo.com/c/88231" }
}/api/v1/disparos/automacoes/{id}/eventosPermissão: leituraHistórico
Os eventos da automação, do mais novo ao mais antigo, com a contagem por situação. ?situacao= (aguardando, agendado, enviando, enviado, falhou, expirado, descartado ou cancelado), ?de= e ?ate= (ISO 8601), ?limite= (até 200) e ?cursor= com o proximo da página anterior.
/api/v1/disparos/automacoes/{id}/eventosPermissão: leitura e escritaAceita a Chave de EventosCancelar pelo identificador
?identificador=pedido-88231: cancela o evento antes de sair. Serve para quando o motivo da mensagem deixou de existir (a compra foi paga, o carrinho foi concluído). Evento que já saiu ou está saindo não pode ser cancelado.
/api/v1/disparos/automacoes/{id}/filaPermissão: leituraFila
Quem está na fila, com a previsão de envio de cada um e quem não cabe na validade com as regras de hoje (vao_expirar). Até 1.000 pessoas, com o total.
/api/v1/disparos/eventos/{id}Permissão: leituraUm evento
A situação, o motivo, o número que mandou e os horários de um evento (evt_...).
/api/v1/disparos/eventos/{id}Permissão: leitura e escritaCancelar um evento
Cancela o evento antes de sair. Evento que já saiu ou está saindo agora não pode ser cancelado (409 conflito).
Como as pessoas chegam a uma automação
Uma automação recebe pessoas por quatro caminhos, que valem juntos. Os três primeiros servem para integrar.
- API, com a chave da conta: uma chave com o produto Disparos e permissão de leitura e escrita chama
POST /api/v1/disparos/automacoes/{id}/eventosde qualquer automação da conta. - API, com a Chave de Eventos: criada na aba Entrada da automação, só coloca pessoas na fila daquela automação e cancela pelo identificador. Não lê nada da conta, então serve para plataformas de terceiros. Vale por 365 dias, até 5 por automação.
- Endereço de Entrada, sem chave: um endereço secreto da automação (
https://www.protectzap.com.br/e/...), também criado na aba Entrada, que recebe POST em JSON ou formulário, até 256 KB, como os avisos de plataformas de venda. O primeiro evento que chega vira exemplo: na tela você escolhe qual campo é o telefone, o nome, o identificador e cada variável. Até escolher, nada entra na fila. - Lista: uma planilha enviada pela tela, com a coluna do telefone.
Por qualquer caminho, a pessoa que pediu para sair, está bloqueada ou já recebeu dentro da repetição da automação não entra: o evento é guardado como descartado, com o motivo, e aparece no histórico e no aviso disparos.evento.descartado.
Uso do mês e mídia
Quanto da cota do plano já foi usado e como subir os arquivos das mensagens.
/api/v1/disparos/usoPermissão: leituraUso do mês
Mensagens do mês (campanhas e automações somadas) contra a cota do plano (limite nulo é sem limite) e os disparos de cada número nos últimos 30 dias.
/api/v1/disparos/midiaPermissão: leitura e escritaSubir um arquivo
Devolve um upload_url (suba o arquivo com PUT e o mesmo Content-Type) e o url_publica, que vai em mensagem.midia_url. Imagem (JPEG, PNG, GIF, WEBP), vídeo MP4, áudio (MP3, OGG, M4A), PDF, DOCX ou XLSX, até 50 MB.
{ "nome_arquivo": "catalogo.pdf", "tipo_mime": "application/pdf", "tamanho_bytes": 2400000 }Webhooks
Avisos para o seu sistema quando algo acontece. O cadastro é da conta: o mesmo webhook aparece na API de Grupos e pode pedir avisos dos dois produtos que a conta usa.
/api/v1/disparos/webhooksPermissão: leituraListar
Os webhooks da conta com o resumo das últimas 24 horas. O segredo nunca volta aqui.
/api/v1/disparos/webhooksPermissão: leitura e escritaCriar
url https pública, eventos e descricao opcional. A resposta é a única vez em que o segredo aparece. Até 5 por conta, e o dono é avisado no painel.
{ "url": "https://seu-sistema.com/protectzap", "eventos": ["disparos.evento.enviado", "disparos.evento.descartado"] }/api/v1/disparos/webhooks/{id}Permissão: leituraUm webhook
Endereço, avisos pedidos, situação e as falhas recentes (whk_...).
/api/v1/disparos/webhooks/{id}Permissão: leitura e escritaMudar
Muda url, eventos, descricao ou ativo. Religar entrega o que ficou na fila.
/api/v1/disparos/webhooks/{id}Permissão: leitura e escritaApagar
Apaga o webhook e o histórico de entregas dele.
/api/v1/disparos/webhooks/{id}/entregasPermissão: leituraEntregas
Os últimos avisos (até 200, 30 dias de histórico) com a situação e a resposta de cada um.
/api/v1/disparos/webhooks/{id}/testarPermissão: leitura e escritaTestar
Manda um webhook.teste agora e devolve o que o endereço respondeu.
/api/v1/disparos/webhooks/{id}/segredoPermissão: leitura e escritaTrocar o segredo
Gera um segredo novo; o antigo deixa de valer na hora. A resposta é a única vez em que ele aparece.
/api/v1/disparos/webhooks/entregas/{id}/reenviarPermissão: leitura e escritaReenviar um aviso
Manda de novo um aviso (whe_...) com o mesmo id, para o seu sistema descartar se já recebeu.
/api/v1/disparos/webhooks/eventosPermissão: leituraCatálogo
Os avisos do Disparos que um webhook pode pedir.
Limites do Disparos
- Cota de mensagens do mês (Brasília), somando campanhas e automações: 1.500 no Básico, 5.000 no Pro e sem limite no Pro+. O uso aparece em
GET /api/v1/disparos/uso, e os avisosdisparos.cota.alerta(80%) edisparos.cota.esgotadachegam no seu sistema. Acabou, campanhas e automações param até o mês seguinte. - Por pessoa: cada pessoa recebe até 3 mensagens das automações por dia, somadas as automações da conta. O número muda em Configurações › Disparos.
- Lotes: até 1.000 contatos e até 500 eventos por chamada, e cada lote conta 1 chamada a cada 10 itens no limite por minuto.
- Ritmo: campanhas e automações saem no ritmo do modo escolhido (Seguro ou Intenso), dentro do horário e do teto por dia de cada uma. Colocar mil pessoas na fila de uma vez não faz a automação mandar mais rápido.
Avisos de webhook do Disparos
Os avisos que um webhook pode pedir para o Disparos. Como funcionam a entrega e a assinatura está em Webhooks.
| Aviso | Quando chega |
|---|---|
| disparos.evento.enviado | Uma mensagem de automação saiu para a pessoa |
| disparos.evento.falhou | Uma mensagem de automação não pôde ser enviada (número sem WhatsApp ou erro do envio), com o motivo |
| disparos.evento.expirado | Uma pessoa saiu da fila da automação sem receber, porque não coube na validade |
| disparos.evento.descartado | Uma pessoa não entrou na fila ou saiu dela sem receber (pediu para sair, bloqueada, repetição, variável faltando, limite por pessoa), com o motivo |
| disparos.automacao.fila_atrasada | A fila de uma automação passou a não caber na validade: parte das pessoas vai expirar sem receber |
| disparos.automacao.pausada | Uma automação foi pausada automaticamente (excesso de eventos, plano inativo ou cota do mês), com o motivo |
| disparos.contato.saiu | Uma pessoa pediu para não receber mais mensagens da conta (vale para campanhas e automações) |
| disparos.campanha.concluida | Uma campanha terminou |
| disparos.campanha.pausada | Uma campanha parou sozinha (número desconectado, sem número conectado ou cota do mês), com o motivo |
| disparos.cota.alerta | A conta passou de 80% da cota de mensagens do mês (campanhas e automações somadas) |
| disparos.cota.esgotada | A cota de mensagens do mês acabou: campanhas e automações param até o mês seguinte ou até um plano maior |
Ferramentas do MCP do Disparos
Uma chave com o produto Disparos mostra estas ferramentas no servidor MCP. As que planejam devolvem um código, e só a ferramenta confirmar executa (veja MCP). Pessoas aparecem só com o final do telefone.
disparos_resumoResumo dos DisparosPermissão: leituraUso do mês contra a cota do plano, campanhas rodando ou agendadas, automações (ligadas, pausadas com o motivo e com a fila atrasada) e os números com os disparos dos últimos 30 dias.
disparos_campanhasCampanhas do DisparosPermissão: leituraCampanhas da conta, a que está rodando primeiro, com situação, público, enviados, erros e a contagem de cada filtro. Use os ids dsp_ daqui em disparos_relatorio e disparos_planejar_pausa.
Parâmetros: filtro, busca, pagina
disparos_relatorioRelatório de uma campanhaPermissão: leituraResultado de uma campanha: total, enviados, erros, interrompidos, pendentes e o percentual, o resultado por número e se algum número teve restrição do WhatsApp durante a campanha.
Parâmetros: campanha
disparos_automacoesAutomaçõesPermissão: leituraAutomações da conta com a situação (ligada ou pausada e o motivo), as regras, o movimento de hoje e dos 7 dias e se a fila está atrasada (pessoas que não cabem na validade com as regras de hoje). Use os ids aut_ daqui em disparos_fila e disparos_planejar_eventos.
disparos_filaFila de uma automaçãoPermissão: leituraQuem está na fila de uma automação, com a previsão de envio de cada um e quem não cabe na validade. As pessoas aparecem só com o final do telefone.
Parâmetros: automacao, limite
disparos_contatosBuscar contatosPermissão: leituraBusca nos contatos da conta por nome, telefone ou e-mail, por tag e pela situação (pode receber, sem WhatsApp, pediu para sair, bloqueado). Devolve o total e até 50 contatos, com o final do telefone.
Parâmetros: busca, tags, situacao, pagina
disparos_planejar_campanhaPlanejar uma campanhaPermissão: leituraConfere uma campanha nova com as mesmas regras da tela (números da conta e do plano, horário, teto diário, mensagem pronta, público pelas tags, cota do mês) e mostra o público, a duração prevista, o ritmo por dia e o risco. Nada é criado: devolve um codigo_confirmacao (15 min) e só confirmar cria e dispara (ou agenda, com agendar_para).
Parâmetros: nome, modo, mensagem, tags_incluir, tags_excluir, numeros, horario, teto_diario, agendar_para
disparos_planejar_eventosColocar pessoas numa automaçãoPermissão: leituraConfere quem entraria na fila de uma automação (até 100 pessoas por vez) com as mesmas regras da API: telefone, variáveis obrigatórias, repetição, pedido de saída, bloqueio e cota. Mostra quantas entram e quem fica de fora com o motivo. Nada é gravado: devolve o código, e só confirmar coloca na fila.
Parâmetros: automacao, pessoas
disparos_planejar_pausaPausar campanha ou automaçãoPermissão: leituraPlaneja pausar uma campanha que está rodando ou agendada, uma automação ligada ou todas as automações da conta de uma vez. Informe só um alvo. Devolve o código para confirmar. Retomar volta a enviar e é feito pela tela ou pela API.
Parâmetros: campanha, automacao, todas_automacoes
Erros do Disparos
Além dos erros que valem para toda a API:
| Status | Código | Quando |
|---|---|---|
| 409 | confirmar_avisos | O texto novo usa variável que não existe nos contatos. Os avisos vêm em detalhes; para aplicar assim mesmo, repita com confirmar_avisos: true. |
| 400 | cota_esgotada | A cota de mensagens do mês acabou: a campanha não dispara nem retoma, e a automação não religa, até o mês seguinte ou um plano maior. |
| 400 | mensagem_incompleta | A mensagem ainda não tem o que o envio precisa (texto, arquivo ou item da lista). |
| 400 | numero_fora_da_conta | Algum número escolhido não é desta conta. |
| 400 | sem_numero | A automação não tem número para enviar. |
| 400 | telefone_invalido | O telefone do contato não é válido. |
| 409 | telefone_repetido | Outro contato da conta já tem esse telefone. |
| 400 | tipo_nao_permitido | Tipo de arquivo que a mensagem não aceita. |
| 400 | arquivo_grande | Arquivo acima de 50 MB. |