Schedules: run blueprints automatically on a timer
A schedule attaches to a blueprint and runs it automatically — daily, weekly, or on a cron expression. No custom scheduler, no cron jobs on your server.
How it works
You need a blueprint first. Then you attach a schedule to it. The schedule tells Cadreen when to run the blueprint and with what parameters.
Each run creates its own trace — inspect every execution in the dashboard
Each run creates a new execution with its own trace. If a run fails, Cadreen retries automatically (up to 3 attempts). If it needs human input, it pauses and sends a webhook.
Create a schedule
Two trigger types: recurring (simple: daily at 9am) and cron (flexible: any cron expression).
const schedule = await cadreen.schedules.create({
blueprint_id: "bp_01JX",
name: "Daily morning report",
trigger: { type: "recurring", frequency: "daily", time: "09:00" },
timezone: "America/New_York",
params: { recipients: ["team@example.com"] },
});
// schedule.id = "sc_01JX"
// schedule.next_run_at = "2026-06-23T09:00:00-04:00"const schedule = await cadreen.schedules.create({
blueprint_id: "bp_01JX",
name: "Weekday reports",
trigger: { type: "cron", expression: "0 9 * * 1-5" },
timezone: "America/New_York",
});curl -X POST https://accomplishanything.today/api/v1/cadreen/schedules \
-H "Authorization: Bearer sk_cadreen_..." \
-H "Content-Type: application/json" \
-d '{
"blueprint_id": "bp_01JX",
"name": "Daily morning report",
"trigger": { "type": "recurring", "frequency": "daily", "time": "09:00" },
"timezone": "America/New_York"
}'Pause and resume
Pause a schedule when you don't need it running — vacations, maintenance, or just taking a break. Resume when you're ready.
// Pause
await cadreen.schedules.pause("sc_01JX", { reason: "Vacation — back Monday" });
// Resume
await cadreen.schedules.resume("sc_01JX");cadreen schedules pause sc_01JX --reason "Vacation"
cadreen schedules resume sc_01JXWebhook events
Every schedule run produces webhook events. Subscribe to them to know when runs start, complete, fail, or need human input.
| Event | When |
|---|---|
schedule.run.created | A new run is queued |
schedule.run.started | Execution begins |
schedule.run.completed | Run finished successfully |
schedule.run.failed | Run failed after all retries |
schedule.run.needs_human | Run paused — waiting for human input |
schedule.run.retry_scheduled | Run failed, retry scheduled |
schedule.paused | Schedule was paused |
schedule.resumed | Schedule was resumed |
List and manage schedules
const { schedules } = await cadreen.schedules.list();
for (const s of schedules) {
console.log(s.name, s.status, s.next_run_at); // "active", "2026-06-23T09:00:00Z"
}cadreen schedules # list all
cadreen schedules show sc_01JX # view details
cadreen schedules pause sc_01JX # pause
cadreen schedules resume sc_01JX # resume