---
title: "Download the report of a finished run"
method: GET
path: "/api/cli/runs/{id}/report"
tags: ["CI & Test Runs"]
---

# Download the report of a finished run

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

## Request

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

Returns the run report as a file. JUnit XML is the default because GitHub
Actions, Azure Pipelines and Jenkins all read it natively.

The run has to be finished. Asking for the report of a pending or running test
run is answered with 409, so poll the status endpoint first.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `format` 'junit' | 'json' | 'html'

## Headers

- `X-RB-Region` string

## Response `200`

The report file.

- string

## 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.
- `409`: The run is still pending or running, so there is no report yet.
- `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)
