# Pause an orchestration run

> Parks a run in flight as `awaiting_input` at its next checkpoint, with a `required_action` of type `paused` naming the pause as operator-initiated rather than a node's. Unlike cancel, the run keeps its last checkpoint and resume-orchestration-run re-drives it from there — so work already done is deferred rather than discarded.

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Pause an orchestration run"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/api/v1/orchestration-runs/{orchestration_run_id}/pause"}
  context={"endpoint"}
>
  
</MethodEndpoint>

Parks a run in flight as `awaiting_input` at its next checkpoint, with a `required_action` of type `paused` naming the pause as operator-initiated rather than a node's. Unlike cancel, the run keeps its last checkpoint and resume-orchestration-run re-drives it from there — so work already done is deferred rather than discarded.
A `queued` or `sleeping` run is parked immediately (a sleeping run keeps the wake it was due, and resuming hands it back to the scheduler at that instant). A `running` run keeps running until the round in flight reaches its checkpoint, so the response may still read `running` while `pause_requested_at` is set. A run already parked on a human, webhook or approval node keeps that node's `required_action`; the pause is still recorded, which is what makes submit-human-input refuse until the run is resumed.
The pause fans out to the run's `loop` / `sub_orchestration` descendants — each parks at its own next checkpoint — because otherwise a parent's pause would bound nothing. Resuming does not fan out: each parked descendant is resumed by its own id.
Idempotent: pausing an already-paused run answers with it unchanged.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
>
  <Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
  {...require("./pause-orchestration-run.ParamsDetails.json")}
>
  
</ParamsDetails>

<RequestSchema
  {...require("./pause-orchestration-run.RequestSchema.json")}
>
  
</RequestSchema>

<StatusCodes
  {...require("./pause-orchestration-run.StatusCodes.json")}
>
  
</StatusCodes>
