---
id: checklist-run-read
title: "Read a checklist run"
description: "Returns the checklist run for an approval request: its aggregate status, every item with its state, and a summary."
sidebar_label: "Read a checklist run"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/api/approval
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Read a checklist run"}
>
</Heading>

<MethodEndpoint
  method={"get"}
  path={"/approval/{id}/checklist"}
  context={"endpoint"}
>
  
</MethodEndpoint>



Returns the checklist run for an approval request: its aggregate status, every item with its state, and a summary.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"in":"path","name":"id","schema":{"type":"integer"},"required":true,"description":"The ID of the approval request.","example":1234}]}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={undefined}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The operation was successful.","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","description":"ID of the checklist run.","example":"crun_abc123def456ghij"},"approval_request_id":{"type":"integer","description":"The approval request this run belongs to.","example":1234},"specification_id":{"type":"string","description":"The specification version the run was created from.","example":"spec_abc123def456ghij"},"specification_snapshot":{"type":"object","description":"The specification as it stood when the run started. Editing the specification later never changes this."},"context_snapshot":{"type":"object","description":"The request context conditions were evaluated against, captured at creation."},"aggregate_status":{"type":"string","enum":["pending_items","pending_aggregation","pending_override","resolved"],"description":"Where the run is in its lifecycle.","example":"pending_items"},"final_outcome":{"type":"string","enum":["approve","approve_with_override","fail","cancelled","expired"],"nullable":true,"description":"How the run ended. Null while it is still open.","example":"approve"},"outcome_reason":{"type":"string","nullable":true,"description":"Why the run ended the way it did, when there is more to say than the outcome.","example":"requested_manual_review"},"override_metadata":{"type":"object","nullable":true,"description":"Who approved the override and what they said, on a run that ended in `approve_with_override`."},"started_at":{"type":"string","format":"date-time","description":"When the run was created.","example":"2026-08-28T14:12:03.000Z"},"resolved_at":{"type":"string","format":"date-time","nullable":true,"description":"When the run reached its final outcome. Null while it is still open.","example":"2026-08-28T15:02:47.000Z"},"items":{"type":"array","description":"Every item in the run, with its definition and its current state.","items":{"type":"object"}},"items_summary":{"type":"object","description":"Item counts by status. Each item is counted once.","properties":{"total":{"type":"integer","description":"Items in the run.","example":4},"passed":{"type":"integer","description":"Items resolved successfully.","example":2},"failed":{"type":"integer","description":"Items resolved unsuccessfully.","example":0},"pending":{"type":"integer","description":"Items still waiting, including latent and in-progress ones.","example":1},"skipped":{"type":"integer","description":"Items that never ran. Their `sub_status` says why.","example":1}}},"available_actions":{"type":"array","description":"What the requester can still do with the run.","items":{"type":"string","enum":["override","ask_for_manual","cancel"]},"example":["ask_for_manual","cancel"]},"action_config":{"type":"object","nullable":true,"description":"How the approval action is configured to treat the result.","properties":{"on_checklist_success":{"type":"string","description":"What happens when the checklist passes.","example":"approve"},"on_checklist_fail":{"type":"string","description":"What happens when it fails.","example":"manual"},"checklist_fail_mode":{"type":"string","enum":["on_request","auto"],"description":"Whether a failed run waits for the requester or goes straight to reviewers.","example":"on_request"}}}}}}}},"4XX":{"description":"Client error responses due to invalid input or missing parameters.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific client error (e.g., 400, 401, 403, 404).","example":400},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"bad_request"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Bad Request\", \"Unauthorized\").","example":"Bad Request"},"message":{"type":"string","description":"Additional details about the error.","example":"The request was malformed or contained invalid parameters."}}}}}},"5XX":{"description":"Server error responses indicating an issue on the API side.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific server error (e.g., 500, 502, 503).","example":500},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"internal_server_error"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Internal Server Error\", \"Service Unavailable\").","example":"Internal Server Error"},"message":{"type":"string","description":"Additional details about the error.","example":"An unexpected error occurred. Please try again later."}}}}}}}}
>
  
</StatusCodes>


      