---
title: "Fetch a stored run and its report"
method: GET
path: "/api/v1/runs/{id}"
tags: ["Runs"]
---

# Fetch a stored run and its report

`GET /api/v1/runs/{id}`

## Request

- Base URL: `https://dungbeetle.dev`
- URL: `https://dungbeetle.dev/api/v1/runs/{id}`
- Auth: one of:
  - HTTP basic
  - HTTP bearer

Requires the `runs:read` scope on agent tokens.

## Path parameters

- `id` string, required

## Response `200`

The run and its full ingest report.

- object
  - `run` object, required
    - `id` string, required
    - `repositoryId` string, required
    - `mode` string, required
    - `passed` boolean, required
    - `status` 'passed' | 'failed', required
    - `counts` object, required: Result counts keyed by status.
    - `branch` string, nullable, required
    - `commit` string, nullable, required
    - `startedAt` string, nullable, required
    - `finishedAt` string, nullable, required
    - `createdAt` string, required
    - `url` string, required: API URL of this run (`/api/v1/runs/{id}`).
    - `reviewState` 'pending' | 'approved' | 'rejected', required
  - `report` IngestReport, required
    - `mode` 'test' | 'update', required
    - `passed` boolean, required
    - `project` string, required
    - `startedAt` string, required
    - `finishedAt` string, required
    - `results` IngestResult[], required
      - `name` string, required
      - `kind` string, required
      - `status` 'passed' | 'failed' | 'missing' | 'updated' | 'error', required
      - `baselinePath` string
      - `diff` string
      - `error` string
      - `snapshot` string: Canonical candidate snapshot JSON (runs pushed with --with-snapshots).
      - `screenshotRefs` object: Content-addressed screenshot artifact ids, set by the server at ingest.
        - `baseline` string: sha-256 hex digest (content-addressed artifact id).
        - `candidate` string: sha-256 hex digest (content-addressed artifact id).
        - `diff` string: sha-256 hex digest (content-addressed artifact id).

## Other responses

- `401`: Missing/malformed Authorization header (`code: unauthorized`), bad Basic credentials (`code: invalid_credentials`), or an invalid, expired, or revoked agent token (`code: invalid_agent_token`).
- `403`: Agent token outside its granted scopes (`code: missing_scope`, with a `scope` field naming the required scope) or a route that is not agent-accessible at all (`code: agent_forbidden`). Basic-auth requests never see this.
- `404`: No such resource in this repository (`code: not_found`).
- `429`: Too many failed attempts or uploads from this client (`code: rate_limited`). Honor the `Retry-After` header; successful authenticated requests never count toward the limit.

---

[API](https://skmtc.dev/dungbeetle/apis/dungbeetle-cloud-api.md) · [All operations](https://skmtc.dev/dungbeetle/apis/dungbeetle-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dungbeetle/apis/dungbeetle-cloud-api/revisions/74778b90420a?raw)
