Envio agendado
Qualquer envio aceita um campo scheduled_at (RFC3339). O bZapper guarda a
mensagem e a dispara no momento exato — sem cron no seu servidor, sem manter
processo no ar.
Como funciona
Adicione scheduled_at a qualquer endpoint de envio (/messages/text,
/messages/image, etc.). O resto do payload é igual a um envio normal.
curl -X POST https://api.bzapper.com.br/messages/text \
-H "Authorization: Bearer $BZ_KEY" -H "X-Project-Id: $PROJECT" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511999990000",
"body": "Bom dia! ☀️",
"scheduled_at": "2026-07-01T09:00:00Z"
}'
Resposta 202:
{ "scheduled_id": "...", "status": "scheduled", "scheduled_at": "2026-07-01T09:00:00Z" }
O número é escolhido na hora do envio
A seleção do número (afinidade/rotação) acontece na promoção, não no agendamento — então a mensagem nunca cai num número que ficou offline depois.
Janela de agendamento por plano
| Plano | Antecedência máxima |
|---|---|
| Free | 24 horas |
| Pro | 30 dias |
| Pro + add-on "Agendamento estendido" | 1 ano |
Passar do limite devolve 400 scheduled_too_far. OTP não pode ser agendado
(a validade é curta).
Listar e cancelar
# lista os agendamentos do projeto
curl https://api.bzapper.com.br/messages/scheduled \
-H "Authorization: Bearer $BZ_KEY" -H "X-Project-Id: $PROJECT"
# cancela um agendamento ainda pendente
curl -X DELETE https://api.bzapper.com.br/messages/scheduled/$SCHEDULED_ID \
-H "Authorization: Bearer $BZ_KEY" -H "X-Project-Id: $PROJECT"
Endpoints
| Método | Rota | O que faz |
|---|---|---|
| POST | /messages/* com scheduled_at | Agenda o envio (202 scheduled) |
| GET | /messages/scheduled | Lista os agendamentos |
| DELETE | /messages/scheduled/{id} | Cancela um agendamento pendente |