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_for da campanha e o horário das mensagens que ainda não saíram, na mesma ordem: a primeira fica em scheduled_for + 1 ms, como na criação
  • scheduled_for aceita 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"
            }
          }
        }
      }
    }
  }
}

Guias relacionados

Autenticação · Erros e retries · Server URL