Pular para o conteúdo

Agendamento

Adicione scheduled_at a qualquer requisição de envio para entregar mais tarde. O e-mail é aceito imediatamente, recebe o status scheduled e um webhook email.scheduled é disparado.

Formato Exemplo
ISO 8601 2026-11-01T09:00:00Z, 2026-11-01T09:00:00+01:00
Linguagem natural in 30 seconds, in 10 minutes, in 2 hours, in 1 day, in 1 week

A linguagem natural segue o formato in <número> <unidade>, em que a unidade é second, sec, minute, min, hour, hr, day ou week (o s do plural é opcional). O texto não diferencia maiúsculas de minúsculas.

Outras regras:

  • No máximo 30 dias no futuro. Além disso, a API retorna 422 validation_error.
  • Um horário no passado, ou a menos de cerca de um segundo à frente, é tratado como enviar agora.
  • Strings ISO sem deslocamento de fuso horário são interpretadas pelo parser de datas do servidor; inclua sempre Z ou um deslocamento.
  • Tanto scheduled_at quanto scheduledAt são aceitos.
schedule.ts
import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);
const { data, error } = await spacepost.emails.send({
from: "Acme <hello@acme.com>",
to: "user@example.com",
subject: "Your trial ends tomorrow",
html: "<p>Reminder.</p>",
scheduledAt: "in 1 day", // or an ISO date: "2026-11-01T09:00:00Z"
});
if (error) console.error(error);
else console.log("Scheduled", data.id);

Somente e-mails com o status scheduled podem ser alterados. PATCH /emails/{id} substitui o horário; um novo job é enfileirado e o antigo passa a não fazer nada.

reschedule.ts
import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);
const { error } = await spacepost.emails.update({
id: "0192e1c4-7a3b-7c1e-9d2f-3b5a8e6f4c10",
scheduledAt: "in 2 hours",
});
if (error) console.error(error);
Response (200)
{ "object": "email", "id": "0192e1c4-7a3b-7c1e-9d2f-3b5a8e6f4c10" }
cancel.ts
import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);
const { error } = await spacepost.emails.cancel("0192e1c4-7a3b-7c1e-9d2f-3b5a8e6f4c10");
if (error) console.error(error); // 422 validation_error if it is no longer scheduled

O status passa a ser canceled e o e-mail nunca é enviado. Cancelar ou reagendar um e-mail que já não está scheduled retorna 422 validation_error (“Only scheduled emails can be canceled”).

Defina o cabeçalho X-SpacePost-Scheduled-At com uma data ISO ou um valor em linguagem natural. Veja Relay SMTP.