The active flag is the on/off switch — pausing stops runs without deleting the schedule's configuration
Every schedule carries an active boolean, created true unless you pass active: false. It is the single switch between automatic runs and dormancy, and flipping it never loses configuration.
Pause#
PUT /v1/clients/:id/schedules/:scheduleId with active: false. The worker's selection is active: true AND cadence not manual AND nextRunAt in the past — so a paused schedule drops out of consideration immediately even if its nextRunAt has already arrived. The row keeps its template, brand, recipients, language, and last-computed nextRunAt exactly as they were.
Resume and re-time#
Send active: true to resume. On resume the existing nextRunAt still governs: if it is in the past, the schedule is eligible on the next worker pass; if you also want a fresh countdown, change cadence in the same update — cadence is the only field that recomputes nextRunAt — or set it to the same value after a long pause if the stored time no longer suits you.
Manual cadence as permanent pause#
A manual schedule never runs on its own regardless of active; combine both to make the intent explicit. Deleting the schedule (DELETE on the same route) is the only destructive option — pause keeps everything (see Choose a cadence).

