Agendar envios
Crie a correspondência hoje e escolha o dia em que ela será cobrada e enviada para produção.
Com o campo send_date, você cria a correspondência agora e escolhe a data em que ela entra em produção. Serve para lembretes de consulta, renovações, aniversários e qualquer envio que já tem data marcada.
Como funciona
Você cria a correspondência com send_date
A API valida tudo na hora: o endereço, o documento e as opções de impressão. Se algo estiver errado, a resposta 422 lista os problemas e nada é criado. Se estiver tudo certo, a correspondência nasce com status scheduled.
Até a data, nada é cobrado
O saldo não precisa cobrir o preço na criação. A correspondência fica em scheduled, e você pode cancelar sem custo.
Na data do envio, a CartaFlow cobra o saldo
Se o saldo cobre o preço, o valor é debitado e a correspondência passa para received. Daí em diante ela segue o mesmo caminho de qualquer correspondência: in_production, printed e posted.
Se o saldo não cobre o preço, a correspondência passa para canceled, com cancellation_reason: insufficient_balance. Nada é cobrado.
Agendar uma correspondência
Envie o mesmo corpo de Criar uma correspondência, com send_date no formato AAAA-MM-DD. Vale para as duas formas de envio: em JSON, como abaixo, ou com o PDF como arquivo em multipart/form-data, com send_date como mais uma parte do formulário. Veja Documento e área do endereço.
curl -X POST "https://api.cartaflow.com.br/v1/letters" \
-H "Authorization: Bearer $CARTAFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: lembrete-revisao-2291" \
-d '{
"to": {
"name": "Destinatário Exemplo",
"postal_code": "01001-000",
"number": "128",
"complement": "Ap. 52"
},
"document": {
"type": "url",
"url": "https://arquivos.exemplo.com.br/lembretes/revisao-2291.pdf"
},
"send_date": "2026-10-20",
"reference": "lembrete-revisao-2291"
}'A resposta é uma correspondência com status: scheduled, send_date: "2026-10-20" e received_at: null. O campo price já mostra o preço calculado no plano de hoje.
Regras de send_date
- Formato
AAAA-MM-DD, só a data. O horário não é escolhido: a cobrança acontece às 06:00 de Brasília (fusoAmerica/Sao_Paulo) no dia marcado. - A data vai de amanhã até 180 dias à frente. Uma data fora desse intervalo recebe 422, com o problema apontado em
send_date. - Para enviar na hora, não envie o campo. Não existe agendamento para hoje.
- A data não muda depois da criação. Para escolher outro dia, cancele e crie de novo.
O que a CartaFlow confere na criação e na data
| Na criação | Na data do envio | |
|---|---|---|
| Endereço e documento | Validados. O PDF é guardado como será impresso. | Nada muda. O PDF não é baixado de novo: mudar o arquivo da URL depois da criação não afeta a correspondência. |
| Saldo | Não precisa cobrir o preço. | Precisa cobrir o preço, senão a correspondência é cancelada. |
| Preço | Calculado com o plano de hoje, em price. | Calculado de novo com o plano da conta nesse dia, e cobrado. |
Cancelar uma correspondência agendada
Enquanto ela estiver em scheduled, cancele com POST /v1/letters/{letter_id}/cancel. Nada foi cobrado, então não há devolução. A correspondência passa para canceled com cancellation_reason: requested. Veja Correspondências e status.
Alterar uma correspondência agendada
Pela API, uma correspondência não muda depois de criada: para mudar algo, cancele (sem custo enquanto ela estiver agendada) e crie outra. No painel, em Envios, uma correspondência agendada pode mudar de data, de endereço, de arquivo, de variáveis, de impressão, de serviços dos Correios e de referência, sem custo, ou ser enviada na hora, quando é cobrada. Veja Correspondências e status.
Eventos
Uma correspondência agendada gera estes eventos, em ordem:
letter.scheduledna criação.letter.updatedsempre que ela for alterada no painel antes da data, com a correspondência como ficou (a novasend_date, por exemplo).letter.receivedna data do envio, depois da cobrança, ou na hora em que ela for enviada pelo painel. Ouletter.canceledcomcancellation_reason: insufficient_balance, se o saldo não cobriu o preço na data.letter.in_production,letter.printedeletter.posted, como em qualquer correspondência.
Boas práticas
- Mantenha o saldo em dia. Antes de uma data com muitos envios, some os preços das correspondências agendadas e confira o saldo com GET /v1/balance.
- Ouça
letter.canceled. Quando o motivo forinsufficient_balance, avise a sua equipe ou recarregue o saldo e crie a correspondência de novo. - Liste o que está agendado com GET /v1/letters?status=scheduled. Combine com
created_afterecreated_beforepara ver um período.
Saldo não é reservado
Agendar não separa dinheiro do saldo. Na data, cada correspondência é cobrada pelo saldo disponível naquele momento.