Semogram Docs
Data PipelinesRun and operate

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:

FieldValue
NameWeekday order refresh
Timing0 9 * * 1-5
Time zoneEurope/Berlin
Overlapping runsSkip this occurrence
Missed timesRun once on recovery
Enable scheduleEnabled

Save and inspect the calculated next run time. Check the displayed zone rather than reading the expression as UTC.

Assistant prompt
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.

MCP request
{
  "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.

PolicyValueBehavior
OverlapskipSkip a due occurrence when the pipeline is already queued/running
OverlapallowPermit another run; ensure the target supports concurrent effects
Missed timerun_onceRun once after missed occurrences; no burst replay for every missed time
Missed timeskipSkip 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.