---
title: "GetRunStatus"
method: POST
path: "/depot.ci.v1.CIService/GetRunStatus"
tags: ["CIService"]
---

# GetRunStatus

`POST /depot.ci.v1.CIService/GetRunStatus`

## Request

- Base URL: `https://api.depot.dev`
- URL: `https://api.depot.dev/depot.ci.v1.CIService/GetRunStatus`
- Auth: HTTP bearer

Returns a CI run's status with its nested workflows, jobs, and attempts. For the run's identity, repo, trigger, and timestamps, use `GetRun`.

## Headers

- `Connect-Protocol-Version` 1, required: Define the version of the Connect protocol
- `Connect-Timeout-Ms` number: Define the timeout, in ms

## Request body

- DepotCiV1GetRunStatusRequest
  - `runId` string, required: Unique identifier for the CI run. Returned by `Run`, `DispatchWorkflow`, and `ListRuns`.

## Response `200`

Success

- DepotCiV1GetRunStatusResponse
  - `orgId` string: Depot organization that owns this run.
  - `runId` string: Unique identifier for the CI run.
  - `status` string: Current state of the run. Can be "queued", "running", "finished", "failed", or "cancelled".
  - `workflows` DepotCiV1WorkflowStatus[]: Workflows in the run with their nested jobs and attempts.
    - `workflowId` string: Unique identifier for the workflow.
    - `status` string: Current state of the workflow. Can be "queued", "running", "finished", "failed", or "cancelled".
    - `workflowPath` string: Workflow file path. For example, ".depot/workflows/ci.yml". Empty when the workflow YAML was passed via `workflowContent` in the `Run` request.
    - `jobs` DepotCiV1JobStatus[]: Jobs that make up the workflow.
      - `jobId` string: Unique identifier for the job.
      - `jobKey` string: Job key from the workflow. For example, "build" or "test".
      - `status` string: Current state of the job. Can be "queued", "waiting", "running", "finished", "failed", "cancelled", or "skipped". "waiting" means the job is blocked behind another run that holds the same `concurrency:` group slot.
      - `attempts` DepotCiV1AttemptStatus[]: All attempts for this job, including the original and any retries. Each contains the attempt's identifier, number, current status, and sandbox/session IDs (when active). Order is not guaranteed.
        - `attemptId` string: Unique identifier for the job attempt.
        - `attempt` integer: Attempt number, starting at 1 for the first run.
        - `status` string: Current state of the attempt. Can be "queued", "waiting", "running", "finished", "failed", or "cancelled".
        - `sandboxId` string: Unique identifier for the sandbox currently running this attempt, when one exists.
        - `sessionId` string: Unique identifier for the interactive session attached to that sandbox, when one is available.
      - `jobDisplayName` string: Resolved job name for display. Falls back to the leaf job name, then `jobKey`, when unavailable. Use `jobId` or `jobKey` to identify the job.
    - `name` string: Workflow name from the YAML `name:` key. Empty when not set.
    - `errorMessage` string: Workflow error or cancellation reason. For example, a compilation or validation error. Empty when the workflow is healthy.

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/depot/apis/depot-ci-api.md) - [All operations](https://skmtc.dev/depot/apis/depot-ci-api/llms.txt) - [OpenAPI document](https://skmtc.dev/depot/apis/depot-ci-api/revisions/6cf759b535b4?raw)
