---
title: "Get the progress of a test run"
method: GET
path: "/api/cli/runs/{id}/status"
tags: ["CI & Test Runs"]
---

# Get the progress of a test run

`GET /api/cli/runs/{id}/status`

## Request

- Base URL: `https://api.routebase.dev`
- URL: `https://api.routebase.dev/api/cli/runs/{id}/status`
- Auth: API key in header `X-API-Key`

Returns how far a run has come, which lets a pipeline show progress instead of
waiting silently. While the run is going, `currentDurationMs` counts up and
`completedAt` stays null.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-RB-Region` string

## Response `200`

The current status of the run.

- CliRunStatus: How far a running suite has come, for progress output while a run is in flight.
  - `id` string, uuid, required: Public id of the test run.
  - `status` 'pending' | 'running' | 'passed' | 'failed' | 'error' | 'cancelled', required: Current state of the run.
  - `completedCases` integer, required: Test cases finished so far.
  - `totalCases` integer, required: Test cases in the run.
  - `passedCases` integer, required: Test cases that passed.
  - `failedCases` integer, required: Test cases that failed.
  - `currentDurationMs` integer, required: Elapsed time, which counts up while the run is going and is final once it ends.
  - `startedAt` string, date-time, required: When the run started.
  - `completedAt` string, date-time, nullable: When the run ended, or null while it is still going.

## Other responses

- `401`: The API key is missing, invalid, expired or revoked. A US organization calling without `X-RB-Region: us` also lands here, because the request reached the wrong region.
- `403`: The key is valid but lacks the permission or the project scope for this call. A scoped key is also refused on organization level operations by design.
- `404`: The resource does not exist, or it belongs to another organization or project. Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.
- `429`: The rate limit was exceeded. The `Retry-After` header gives the seconds to wait.

---

[API](https://skmtc.dev/routebase/apis/routebase-public-api.md) · [All operations](https://skmtc.dev/routebase/apis/routebase-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/routebase/apis/routebase-public-api/revisions/7187df489f27?raw)
