Features
Scheduled publishing
Publish a draft at a future time from a cron job.
POST /:collection/:id/_schedule-publish with { "publishAt": "2026-11-01T09:00:00Z" } schedules a publish; the time must be in the future and replaces a pending schedule. GET shows the pending schedule and DELETE cancels it. Scheduling needs publish access.
Due schedules run when the host calls engine.processScheduledPublishes(). The reference app does it from a Void cron:
// crons/maintenance.ts
import { defineScheduled } from "void"
export const cron = "*/5 * * * *"
export default defineScheduled(async () => {
const engine = createSiteCMS().engine
await engine.processScheduledPublishes()
await engine.processOutbox(deliverOutboxEvent)
})Publishing is precise to the cron interval. A schedule that fails (for example, a deleted document) is canceled with its error recorded.