Controlar campanha de envio em massa
POST /sender/edit
Permite controlar campanhas de envio de mensagens em massa através de diferentes ações:
Ações Disponíveis:
🛑 stop - Pausar campanha
- Pausa uma campanha ativa ou agendada
- Altera o status para "paused"
- Use quando quiser interromper temporariamente o envio
- Mensagens já enviadas não são afetadas
▶️ continue - Continuar campanha
- Retoma uma campanha pausada
- Altera o status para "scheduled"
- Use para continuar o envio após pausar uma campanha
- Campanha pausada antes do horário volta para o horário marcado; para enviar na hora, use
send_now - Não funciona em campanhas já concluídas ("done")
🗑️ delete - Deletar campanha
- Remove completamente a campanha
- Deleta apenas mensagens NÃO ENVIADAS (status "scheduled")
- Mensagens já enviadas são preservadas no histórico
- Operação é executada de forma assíncrona
🕒 reschedule - Alterar horário
- Só para campanha com status "scheduled"
- Muda o
scheduled_forda campanha e o horário das mensagens que ainda não saíram, na mesma ordem: a primeira fica emscheduled_for+ 1 ms, como na criação scheduled_foraceita o mesmo formato da criação (timestamp em ms ou s, ou minutos a partir de agora)
⏩ send_now - Enviar agora
- Para campanha com status "scheduled" ou "paused"
- Antecipa a campanha para agora; a pausada volta a "scheduled" e começa na hora
- Os delays entre as mensagens continuam valendo
Status de Campanhas:
- scheduled: Agendada para envio
- sending: Enviando mensagens
- paused: Pausada pelo usuário
- done: Concluída (não pode ser alterada)
- deleting: Sendo deletada (operação em andamento)
Autenticação
[
{
"token": []
}
]
{
"token": {
"name": "token",
"type": "apiKey",
"in": "header"
}
}
Corpo da requisição
{
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"folder_id": {
"type": "string",
"description": "Identificador único da campanha de envio",
"example": "folder_123"
},
"action": {
"type": "string",
"enum": [
"stop",
"continue",
"delete",
"reschedule",
"send_now"
],
"description": "Ação a ser executada na campanha:\n- **stop**: Pausa a campanha (muda para status \"paused\")\n- **continue**: Retoma campanha pausada (muda para status \"scheduled\"), no horário marcado se ele ainda não chegou\n- **delete**: Remove campanha e mensagens não enviadas (assíncrono)\n- **reschedule**: Muda o horário de uma campanha agendada (exige `scheduled_for`)\n- **send_now**: Envia agora uma campanha agendada ou pausada\n",
"example": "stop"
},
"scheduled_for": {
"type": "integer",
"format": "int64",
"description": "Novo horário, obrigatório na ação `reschedule`. Timestamp em milissegundos ou segundos,\nou minutos a partir de agora (até 10.080), como no `/sender/simple`.\n",
"example": 1767225600000
}
},
"required": [
"folder_id",
"action"
]
}
}
}
}
Respostas
{
"200": {
"description": "Ação realizada com sucesso",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"title": "Resposta para ação 'stop'",
"properties": {
"status": {
"type": "string",
"enum": [
"paused"
],
"description": "Status da campanha após pausar",
"example": "paused"
}
}
},
{
"type": "object",
"title": "Resposta para ação 'continue'",
"properties": {
"status": {
"type": "string",
"enum": [
"scheduled"
],
"description": "Status da campanha após retomar",
"example": "scheduled"
},
"message": {
"type": "string",
"description": "Mensagem de confirmação",
"example": "Folder resumed successfully"
}
}
},
{
"type": "object",
"title": "Resposta para ação 'delete'",
"properties": {
"status": {
"type": "string",
"enum": [
"deleting"
],
"description": "Status indicando que a deleção foi iniciada",
"example": "deleting"
},
"message": {
"type": "string",
"description": "Mensagem informando que a deleção é assíncrona",
"example": "Folder deletion has been initiated"
}
}
},
{
"type": "object",
"title": "Resposta para ações 'reschedule' e 'send_now'",
"properties": {
"status": {
"type": "string",
"enum": [
"scheduled"
],
"description": "Status da campanha, que continua agendada",
"example": "scheduled"
},
"scheduled_for": {
"type": "integer",
"format": "int64",
"description": "Novo horário da campanha, em milissegundos",
"example": 1767225600000
},
"messages_updated": {
"type": "integer",
"description": "Quantas mensagens ainda não enviadas mudaram de horário",
"example": 120
}
}
}
]
}
}
}
},
"400": {
"description": "Requisição inválida",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "folder is required"
}
}
}
}
}
},
"404": {
"description": "Campanha não encontrada para esta instância",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Folder not found"
}
}
}
}
}
},
"409": {
"description": "A ação `reschedule` foi pedida para uma campanha que não está agendada (status diferente de \"scheduled\"), ou `send_now` para uma que não está agendada nem pausada",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "folder is not scheduled"
}
}
}
}
}
}
}