Skip to content

Schedules

A schedule is the top-level definition in Wakeplane. It combines a cadence, a target, and policies.

Schedules can be created from a YAML file using wakeplane schedule create -f <file> or via POST /v1/schedules with a JSON body.

name: nightly-sync
enabled: true
timezone: America/Los_Angeles
schedule:
kind: cron
expr: "0 2 * * *"
target:
kind: workflow
workflow_id: sync.customers
input:
source: crm
policy:
overlap: forbid
misfire: run_once_if_late
timeout_seconds: 900
max_concurrency: 1
retry:
max_attempts: 5
strategy: exponential
initial_delay_seconds: 30
max_delay_seconds: 900

Uses a standard 5-field cron expression. The next occurrence is computed using the schedule’s timezone.

Fires every every_seconds. The interval is anchored to the previous next_run_at, not to wall clock time.

Fires once at a specific RFC3339 time.

Every schedule has a timezone field.

  • Cron expressions are evaluated in the schedule’s timezone.
  • The once.at timestamp must be supplied as an RFC3339 timestamp.
  • Interval schedules use UTC internally; timezone affects only display.
  • All next_run_at values stored in the database are UTC.
Terminal window
wakeplane schedule pause <id>
wakeplane schedule resume <id>

Pause sets enabled=false and records paused_at. Resume sets enabled=true, clears paused_at, and recomputes next_run_at.

Terminal window
wakeplane schedule trigger <id>

This creates a manual run immediately and does not change the normal cadence.

  • PUT /v1/schedules/{id} for full replacement
  • PATCH /v1/schedules/{id} for partial updates
KindRequired fieldsOptional fields
httpurl, methodheaders, body
shellcommandargs
workflowworkflow_idinput

When policy or retry fields are omitted:

{
"policy": {
"overlap": "forbid",
"misfire": "run_once_if_late",
"timeout_seconds": 300,
"max_concurrency": 1
},
"retry": {
"max_attempts": 0,
"strategy": "exponential",
"initial_delay_seconds": 30,
"max_delay_seconds": 900
}
}

See Policies for full semantics.