Pular para o conteúdo principal

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

PlanoAntecedência máxima
Free24 horas
Pro30 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étodoRotaO que faz
POST/messages/* com scheduled_atAgenda o envio (202 scheduled)
GET/messages/scheduledLista os agendamentos
DELETE/messages/scheduled/{id}Cancela um agendamento pendente