Schedules
Run a pipeline on explicit timing with a time zone and replay policy
A schedule creates future runs of one project pipeline. It uses five-field cron timing, a named time zone, an enabled state, an overlap policy and a missed-time policy. Saying “run every morning” while authoring a pipeline does not create a schedule.
You need a Semogram account, access to the project, pipelines:write or equivalent permission, and a saved pipeline that has succeeded on a bounded fixture. Scheduled execution uses its recorded actor's permissions and resolves the active pipeline version when the run is prepared.
Example: weekdays at 09:00 in Berlin
Open the pipeline's Schedules page and create a schedule. Fill:
| Field | Value |
|---|---|
| Name | Weekday order refresh |
| Timing | 0 9 * * 1-5 |
| Time zone | Europe/Berlin |
| Overlapping runs | Skip this occurrence |
| Missed times | Run once on recovery |
| Enable schedule | Enabled |
Save and inspect the calculated next run time. Check the displayed zone rather than reading the expression as UTC.
Create a schedule for this tested pipeline named Weekday order refresh. Run at 09:00 Monday through Friday in Europe/Berlin. Skip occurrences when the pipeline is already queued or running, and run once on recovery after missed times. Show the calculated next run time and policies before enabling.Send through an authenticated, initialized MCP client. projectId selects the project within the connected workspace.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "pipeline_schedule_create",
"arguments": {
"projectId": "<PROJECT_ID_UUID>",
"pipelineId": "<PIPELINE_ID_UUID>",
"name": "Weekday order refresh",
"cron": "0 9 * * 1-5",
"timezone": "Europe/Berlin",
"enabled": true,
"overlapPolicy": "skip",
"missedPolicy": "run_once",
"idempotencyKey": "weekday-order-schedule-001"
}
}
}There is currently no public /api/v1 pipeline-schedule route. Use the UI or exposed MCP schedule tools; the authenticated UI's internal routes are not a public API-key interface.
Timing and policies
Cron fields are minute, hour, day of month, month, weekday. Five fields are required; the parser supports a minimum interval of one minute. Time zones use named IANA zones and account for daylight-saving changes. The scheduler's dispatch cadence and runtime availability affect when a due run actually starts; a cron expression is not a guarantee of second-precise launch.
| Policy | Value | Behavior |
|---|---|---|
| Overlap | skip | Skip a due occurrence when the pipeline is already queued/running |
| Overlap | allow | Permit another run; ensure the target supports concurrent effects |
| Missed time | run_once | Run once after missed occurrences; no burst replay for every missed time |
| Missed time | skip | Skip missed occurrences and wait for the next time |
A time is considered missed after the next occurrence has also come due. Being late alone is not treated as a missed cycle.
Inspect and change
Use the schedule list/detail to inspect next_run_at, last_run_id, last_error, enabled and revision. MCP exposes pipeline_schedule_list, get, update, pause, resume and the lifecycle tool pipeline_schedule_delete. Updates require the current revision; pause/resume require expectedRevision. Reload on a conflict instead of overwriting another user's change.
Pausing prevents new scheduled runs; it does not cancel a run already queued. Version activation affects future scheduled runs because this schedule does not pin a version. Review active-version changes and monitor the latest successful output as well as schedule state.
Deletion requires review of the exact schedule. MCP deletion takes pipelineId, scheduleId, confirm: true and idempotencyKey; removing the schedule leaves retained runs separate.
Verify after enabling
Compare an actual occurrence with its run and destination output. Use Monitoring to distinguish completion freshness from source age. Pause future selection before investigating unsafe repeated writes; use Recovery for interrupted runs.