Aller au contenu

Planification

Ajoutez scheduled_at à n’importe quelle requête d’envoi pour distribuer plus tard. L’e-mail est accepté immédiatement, reçoit le statut scheduled et un webhook email.scheduled est déclenché.

Format Exemple
ISO 8601 2026-11-01T09:00:00Z, 2026-11-01T09:00:00+01:00
Langage naturel in 30 seconds, in 10 minutes, in 2 hours, in 1 day, in 1 week

Le langage naturel s’écrit in <nombre> <unité>, où l’unité est l’une de second, sec, minute, min, hour, hr, day, week (le s du pluriel est facultatif). Le texte n’est pas sensible à la casse.

Autres règles :

  • 30 jours maximum dans le futur. Au-delà, l’API renvoie 422 validation_error.
  • Une heure dans le passé, ou à moins d’une seconde environ dans le futur, est traitée comme envoyer maintenant.
  • Les chaînes ISO sans décalage de fuseau horaire sont interprétées par l’analyseur de dates du serveur ; incluez toujours Z ou un décalage.
  • scheduled_at et scheduledAt sont tous deux acceptés.
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);

Seuls les e-mails au statut scheduled peuvent être modifiés. PATCH /emails/{id} remplace l’heure ; une nouvelle tâche est mise en file et l’ancienne devient sans effet.

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

Le statut devient canceled et l’e-mail n’est jamais envoyé. Annuler ou replanifier un e-mail qui n’est plus scheduled renvoie 422 validation_error (« Only scheduled emails can be canceled »).

Définissez l’en-tête X-SpacePost-Scheduled-At sur une date ISO ou une valeur en langage naturel. Voir Relais SMTP.