Retorna todos os detalhes de uma campanha específica, incluindo estatísticas de envio em tempo real.
Token de acesso da empresa
Path Parameters
curl -X GET https://api.disparador.com/api/campaigns/123 \
-H "X-Access-Token: seu-access-token"
Response
A estrutura de resposta inclui todos os detalhes da campanha:
Campos Principais
Status atual da campanha
DRAFT
- Rascunho
SCHEDULED
- Agendada
ACTIVE
- Em execução
PAUSED
- Pausada
COMPLETED
- Concluída
CANCELLED
- Cancelada
FAILED
- Falhou
Tipo da campanha (TEXT, MEDIA, POLL)
Data/hora de agendamento (se aplicável)
Data/hora que iniciou o envio
Data/hora que foi concluída
Data/hora que foi pausada (se aplicável)
Estatísticas
Total de contatos na campanha
Quantidade de mensagens enviadas com sucesso
Quantidade de envios que falharam
Quantidade de contatos pendentes
Percentual de progresso (0-100)
Taxa de sucesso em percentual
Estimativa de conclusão (se em execução)
Dados da Campanha
Conteúdo da mensagem enviada
Tipo de mídia (image, video, audio, document)
Instância Evolution usada
Intervalo mínimo entre mensagens (segundos)
Intervalo máximo entre mensagens (segundos)
Telefone para notificação de conclusão
Dados da enquete (se for campanha de enquete)
Configuração Evolution completa usada
Mensagem de erro (apenas em caso de falha)
{
"id": 123,
"name": "Promoção Black Friday",
"description": null,
"status": "ACTIVE",
"type": "MEDIA",
"createdAt": "2024-01-20T14:00:00",
"scheduledFor": null,
"startedAt": "2024-01-20T14:01:00",
"completedAt": null,
"pausedAt": null,
"totalContacts": 500,
"sentContacts": 234,
"failedContacts": 5,
"pendingContacts": 261,
"progressPercentage": 46.8,
"successRate": 97.86,
"estimatedCompletion": "2024-01-20T16:30:00",
"messageContent": "🎉 Black Friday chegou! Até 70% OFF em todos os produtos. Acesse: www.exemplo.com",
"mediaType": "image",
"mediaUrl": "https://exemplo.com/black-friday.jpg",
"fileName": "black-friday-promo.jpg",
"evolutionInstance": "whatsapp-01",
"minInterval": 5,
"maxInterval": 10,
"notificationPhone": "5511999999999",
"pollData": null,
"evolutionConfig": {
"id": 1,
"name": "WhatsApp Principal",
"url": "https://evolution-api.exemplo.com",
"instance": "whatsapp-01"
}
}
Monitoramento em Tempo Real
// Função para monitorar progresso da campanha
async function monitorCampaign(campaignId, accessToken) {
const checkProgress = async () => {
const response = await fetch(
`https://api.disparador.com/api/campaigns/${campaignId}`,
{
headers: { 'X-Access-Token': accessToken }
}
);
const campaign = await response.json();
if (campaign.status === 'ACTIVE') {
console.log(`[${new Date().toLocaleTimeString()}] ${campaign.name}`);
console.log(`Status: ${campaign.status}`);
console.log(`Progresso: ${campaign.progressPercentage}% (${campaign.sentContacts}/${campaign.totalContacts})`);
console.log(`Taxa de sucesso: ${campaign.successRate}%`);
console.log(`Falhas: ${campaign.failedContacts}`);
console.log(`Estimativa de conclusão: ${campaign.estimatedCompletion || 'Calculando...'}`);
console.log('---');
// Continuar monitorando
setTimeout(checkProgress, 30000); // 30 segundos
} else {
console.log(`Campanha finalizada com status: ${campaign.status}`);
console.log(`Total enviado: ${campaign.sentContacts}`);
console.log(`Taxa de sucesso final: ${campaign.successRate}%`);
}
};
checkProgress();
}
// Usar
monitorCampaign(123, 'seu-access-token');
Cálculo de Métricas
function calculateCampaignMetrics(campaign) {
const metrics = {
successRate: campaign.successRate || 0,
failureRate: 0,
progress: campaign.progressPercentage || 0,
estimatedTimeRemaining: null,
messagesPerMinute: 0
};
// Taxa de falha
if (campaign.sentContacts > 0) {
metrics.failureRate = (campaign.failedContacts / campaign.sentContacts * 100).toFixed(2);
}
// Velocidade de envio
if (campaign.startedAt && campaign.sentContacts > 0) {
const elapsedMinutes = (new Date() - new Date(campaign.startedAt)) / 60000;
metrics.messagesPerMinute = (campaign.sentContacts / elapsedMinutes).toFixed(2);
// Tempo restante estimado
const remaining = campaign.pendingContacts;
if (metrics.messagesPerMinute > 0) {
metrics.estimatedTimeRemaining = Math.ceil(remaining / metrics.messagesPerMinute);
}
}
return metrics;
}
// Exemplo de uso
const metrics = calculateCampaignMetrics(campaign);
console.log(`Mensagens por minuto: ${metrics.messagesPerMinute}`);
console.log(`Tempo restante estimado: ${metrics.estimatedTimeRemaining} minutos`);
Observações
- A campanha deve pertencer à empresa do token para ser acessada
- As estatísticas são atualizadas em tempo real durante o envio
- Campanhas antigas mantêm o histórico completo de execução
- A estimativa de conclusão é calculada com base na velocidade média de envio