Skip to main content
PUT
/
api
/
campaigns
/
{id}
/
resume
curl -X PUT https://api.disparador.com/api/campaigns/123/resume \
  -H "X-Access-Token: seu-access-token"
{
  "id": 123,
  "name": "Campanha de Vendas",
  "description": null,
  "status": "ACTIVE",
  "type": "TEXT",
  "createdAt": "2024-01-20T10:00:00",
  "scheduledFor": null,
  "startedAt": "2024-01-20T10:01:00",
  "completedAt": null,
  "pausedAt": null,
  "totalContacts": 500,
  "sentContacts": 234,
  "failedContacts": 5,
  "pendingContacts": 261,
  "progressPercentage": 46.8,
  "successRate": 97.86,
  "estimatedCompletion": "2024-01-20T18:30:00",
  "messageContent": "Aproveite nossa promoção especial!",
  "mediaType": null,
  "mediaUrl": null,
  "fileName": null,
  "evolutionInstance": "whatsapp-01",
  "minInterval": 5,
  "maxInterval": 10,
  "notificationPhone": null,
  "pollData": null,
  "evolutionConfig": {
    "id": 1,
    "name": "WhatsApp Principal",
    "url": "https://evolution-api.exemplo.com",
    "instance": "whatsapp-01"
  },
  "message": null
}
Retoma o envio de mensagens de uma campanha que foi pausada anteriormente.

Headers

X-Access-Token
string
required
Token de acesso da empresa

Path Parameters

id
number
required
ID da campanha a ser retomada
curl -X PUT https://api.disparador.com/api/campaigns/123/resume \
  -H "X-Access-Token: seu-access-token"

Response

Retorna os dados completos atualizados da campanha após retomar.

Campos Principais

id
number
ID da campanha
name
string
Nome da campanha
description
string
Descrição da campanha
status
string
Novo status (será “ACTIVE”)
type
string
Tipo da campanha (TEXT, MEDIA, POLL)
startedAt
string
Data/hora do início original
pausedAt
string
Será null após retomar

Estatísticas

totalContacts
number
Total de contatos na campanha
sentContacts
number
Mensagens já enviadas
failedContacts
number
Mensagens que falharam
pendingContacts
number
Mensagens ainda pendentes
progressPercentage
number
Percentual de progresso
successRate
number
Taxa de sucesso atual
estimatedCompletion
string
Nova estimativa de conclusão

Outros Campos

Todos os demais campos da estrutura CampaignResponse também são retornados, incluindo:
  • messageContent
  • mediaType
  • mediaUrl
  • evolutionInstance
  • evolutionConfig
  • etc.
message
string
Mensagem de erro (apenas em caso de falha)
{
  "id": 123,
  "name": "Campanha de Vendas",
  "description": null,
  "status": "ACTIVE",
  "type": "TEXT",
  "createdAt": "2024-01-20T10:00:00",
  "scheduledFor": null,
  "startedAt": "2024-01-20T10:01:00",
  "completedAt": null,
  "pausedAt": null,
  "totalContacts": 500,
  "sentContacts": 234,
  "failedContacts": 5,
  "pendingContacts": 261,
  "progressPercentage": 46.8,
  "successRate": 97.86,
  "estimatedCompletion": "2024-01-20T18:30:00",
  "messageContent": "Aproveite nossa promoção especial!",
  "mediaType": null,
  "mediaUrl": null,
  "fileName": null,
  "evolutionInstance": "whatsapp-01",
  "minInterval": 5,
  "maxInterval": 10,
  "notificationPhone": null,
  "pollData": null,
  "evolutionConfig": {
    "id": 1,
    "name": "WhatsApp Principal",
    "url": "https://evolution-api.exemplo.com",
    "instance": "whatsapp-01"
  },
  "message": null
}

Regras de Negócio

  • Apenas campanhas com status PAUSED podem ser retomadas
  • A campanha continua exatamente de onde parou
  • Mensagens já enviadas não são reenviadas
  • O intervalo entre mensagens é mantido
  • O campo pausedAt volta a ser null após retomar

Continuação do Envio

Ao retomar uma campanha:
  1. Fila preservada - Contatos não enviados permanecem na ordem original
  2. Estatísticas mantidas - Contadores de sucesso/falha continuam
  3. Configurações iguais - Intervalos e parâmetros são preservados
  4. Sem duplicação - Sistema garante que não há reenvios

Exemplo de Gerenciamento

// Sistema de pausa/retomada automática por horário
async function manageBusinessHours(campaignId, accessToken) {
  const now = new Date();
  const hour = now.getHours();
  
  // Horário comercial: 9h às 18h
  const isBusinessHour = hour >= 9 && hour < 18;
  
  // Verificar status atual
  const statusResponse = await fetch(
    `https://api.disparador.com/api/campaigns/${campaignId}`,
    {
      headers: { 'X-Access-Token': accessToken }
    }
  );
  
  const campaign = await statusResponse.json();
  
  if (!isBusinessHour && campaign.status === 'ACTIVE') {
    // Pausar fora do horário comercial
    await fetch(
      `https://api.disparador.com/api/campaigns/${campaignId}/pause`,
      {
        method: 'PUT',
        headers: { 'X-Access-Token': accessToken }
      }
    );
    console.log('Campanha pausada - fora do horário comercial');
    
  } else if (isBusinessHour && campaign.status === 'PAUSED') {
    // Retomar no horário comercial
    const resumeResponse = await fetch(
      `https://api.disparador.com/api/campaigns/${campaignId}/resume`,
      {
        method: 'PUT',
        headers: { 'X-Access-Token': accessToken }
      }
    );
    const resumed = await resumeResponse.json();
    console.log('Campanha retomada - horário comercial');
    console.log(`Nova estimativa de conclusão: ${resumed.estimatedCompletion}`);
  }
}

// Executar a cada 30 minutos
setInterval(() => manageBusinessHours(123, 'seu-token'), 1800000);

Boas Práticas

Verificar Status

Sempre verifique o status antes de tentar retomar

Logs e Notificações

Registre quando e por que campanhas foram pausadas/retomadas

Horários Adequados

Retome campanhas em horários apropriados para melhor engajamento

Monitorar Após Retomar

Acompanhe métricas para garantir que tudo está funcionando
I