DocumentationScheduled emails
Scheduled emails
POST/GET/DELETE /scheduled-emails — defer transactional sends.
Schedule a transactional email for future delivery. Quota is checked at send time, not when you schedule.
Endpoints
| Method | Path | Scope | Description |
|---|---|---|---|
POST | /scheduled-emails | email:send | Schedule a send |
GET | /scheduled-emails | email:read | List scheduled sends |
DELETE | /scheduled-emails/:id | email:send | Cancel a pending send |
JWT dashboard sessions bypass scope checks (same as other modules).
POST /scheduled-emails
Same body as POST /emails/send plus:
| Field | Required | Description |
|---|---|---|
sendAt | Yes | ISO 8601 datetime when the email should be sent |
timezone | No | IANA timezone — default Europe/Madrid |
{
"to": "[email protected]",
"subject": "Appointment reminder",
"htmlBody": "<p>Your appointment is tomorrow at 10:00.</p>",
"sendAt": "2026-06-20T10:00:00.000Z",
"timezone": "Europe/Madrid",
"templateVersionId": "clxversion..."
}
Response 201:
{
"id": "clxsched...",
"tenantId": "clx...",
"status": "PENDING",
"sendAt": "2026-06-20T10:00:00.000Z",
"timezone": "Europe/Madrid",
"payload": { "to": "[email protected]", "subject": "Appointment reminder" },
"createdAt": "2026-06-18T12:00:00.000Z"
}
GET /scheduled-emails
GET /scheduled-emails?page=1&limit=20&status=PENDING
status filter: PENDING | SENT | FAILED | CANCELLED.
DELETE /scheduled-emails/:id
Cancels only rows in PENDING status and removes the associated BullMQ job (mc:scheduled-emails queue).