Skip to main content
These endpoints hold and release outbound dispatch. Read Dispatch pacing first for the model: what each scope holds, why pause is never cancel, and how automatic backoffs share the same records. Access follows one rule everywhere: pause and resume writes require an admin role on your organization; listings and single-record reads are open to any organization member. A Domain, batch, or pause ID that belongs to another organization returns 404, never 403.

The pause record

Every endpoint below reads or writes the same record shape:

Pause request body

All create endpoints accept the same body; every field is optional.

Global (break-glass)

Holds every Domain in your organization at once. Prefer the Domain, lane, or batch endpoints when anything narrower will do. The break-glass pause accepts duration_seconds and reason only. A body carrying lane or bucket is refused with 422 rather than silently widened to global — if you meant a narrower hold, use the narrower endpoint. Resume releases every active global hold and returns them; holds at Domain, lane, or batch scope are untouched. It is idempotent: resuming when nothing is held returns an empty list, not an error.
The listing supports include_released (default false), a scope filter, sort_by (created_at or expires_at), order (asc/desc, default desc), and limit (1–500, default 100) / skip pagination.

Domain and lane

Holds one Five9 Domain — or one named lane on it. These are records only: no batch document is rewritten and nothing in the queue is touched; the hold is visible here and on the pause listing. Pausing without lane holds the whole Domain; with lane, only that lane, while the rest of the Domain keeps flowing. A bucket in the body is refused with 422 — bucket holds are opened automatically by rate-limit backoff and cannot be created here. Resume mirrors pause’s scoping: without a lane it releases the Domain-wide holds only; with ?lane=bulk (query parameter) it releases that lane’s holds only, leaving any Domain-wide hold in force. An unknown lane is a 422. Automatic backoffs are never released here — they self-resume at the window boundary.

Extending a scheduled resume

PATCH .../pauses/{pause_id} pushes a pause’s scheduled resume further out, in place — the record keeps its identity and gains an entry in extensions. Provide duration_seconds (relative to now) or an absolute expires_at; when both are sent, the absolute expires_at wins. Extension is forward-only. Three cases return 409, each with its own message: the record is already released; the requested expiry is not later than the current one; or the record changed concurrently between your read and the write. Shortening a hold is an explicit resume-and-re-pause, never a silent edit. An explicit JSON null for a field is rejected with 422 — omit the field instead.

Batch

The one scope that touches a batch’s status: pausing flips the batch to paused, and resuming restores the exact status it held before — a batch paused while queued goes back to queued. Nothing is cancelled or deleted, and nothing already sent can be re-sent. The pause body accepts duration_seconds and reason only; lane or bucket is refused with 422 — those scopes belong to the Domain endpoints. Pausing an already-paused batch is idempotent and returns the existing hold. A batch in a terminal state (completed, partially_failed, failed, cancelled) has nothing left to dispatch and returns 409; a 409 also comes back if the batch’s status changed concurrently while the pause was being applied — re-read the batch and retry.

Errors

All endpoints use the standard {"detail": "..."} envelope.