--- title: "Approve a run's plan" canonical: "https://admiral.io/docs/api/runs/RunAPI_ApproveRun" --- # Approve a run's plan `POST https://api.admiral.io/v1/runs/{run_id}/approve` FAILED_PRECONDITION when `plan_digest` is not the run's plan, or the run is not PLANNED. Scope: `run:write` ### Path parameters - `run_id` (string, required): The run_id path parameter. Pattern `^run-[0-9a-z]+$`. ### Request body - `plan_digest` (string, required): The plan being approved; refused unless it is the run's plan. Pattern `^sha256:[0-9a-f]{64}$`. - `reason` (string): An optional note shown with the approval. Length at most 1024. ### Response 200 Success - `approval` (Approval): Approval is a sign-off on one plan. - `plan_digest` (string) - `approved_by` (ActorRef): ActorRef is a lightweight reference to the user or agent that performed an action. Server-populated on all resource responses. Clients should never send this. - `id` (string): The actor's typed id: a `usr-` user id or an `sa-` service account id. - `display_name` (string): Human-readable name (e.g., "John Smith", "deploy-bot"). - `email` (string): Email address (empty for non-human actors). - `reason` (string) - `approved_at` (Timestamp): A point in time in RFC 3339 format, with up to nanosecond precision. Output uses UTC (`Z`); input may use an offset from UTC. - `carried_from_run_id` (string): The run it was given on, when it was carried from an earlier run.