---
title: "Get run"
method: GET
path: "/runs/{runId}"
tags: ["Runs"]
---

# Get run

`GET /runs/{runId}`

Get a single run by ID with full details. Runs with many test files can produce a large JSON response. Include `Accept-Encoding: gzip` in your request when possible. Spec `results.stats` exposes **pending**, **skipped**, and **failures** separately; see `RecordedTestOutcome` in components/schemas and compare to Tests Explorer `metrics` mapping. For narrative context, see the [Test result statuses](https://docs.currents.dev/dashboard/test-suite-performance-explorer/tests-explorer#test-result-statuses) section on the Test Explorer documentation page.

## Path parameters

- `runId` string, required

## Response `200`

Successful response

- RunResponse
  - `status` 'OK', required
  - `data` Run, required
    - `runId` string, required — Unique identifier for the run
    - `projectId` string, required — Project this run belongs to
    - `createdAt` string, date-time, required — When the run was created
    - `durationMs` integer, nullable — Total duration of the run in milliseconds
    - `deletedAt` string, date-time, nullable — When the run was deleted
    - `tags` string[] — Tags associated with this run
    - `previousRunId` string, nullable — ID of the previous run (for retry runs)
    - `timeout` object
      - `isTimeout` boolean
      - `timeoutValueMs` integer, nullable
    - `cancellation` object, nullable
      - `cancelledAt` string, date-time
      - `cancelledBy` string
      - `reason` string
    - `groups` RunGroup[]
      - `groupId` string
      - `platform` object
        - `osName` string
        - `osVersion` string
        - `browserName` string
        - `browserVersion` string
      - `tags` string[]
      - `environment` string, nullable
      - `createdAt` string, date-time, nullable
      - `coverageEnabled` boolean
      - `durationMs` integer
      - `specCount` integer
      - `instances` object
        - `overall` integer
        - `claimed` integer
        - `complete` integer
        - `passes` integer
        - `failures` integer
      - `tests` object — Test counts for this group. Use `total` (scheduled suite size) and `recorded` (tests with a reported outcome so far). `tests` and `overall` are deprecated aliases.
        - `total` integer — Total tests scheduled/expected in this group, including tests still running or not yet started.
        - `recorded` integer — Tests in this group that have reported an outcome so far (passes + failures + pending + skipped). Less than or equal to `total` while the group is in progress.
        - `tests` integer — Deprecated alias of `total` (scheduled suite size). Use `total`.
        - `overall` integer — Deprecated alias of `recorded`. Despite the name this is NOT the suite total — use `recorded` for the reported-outcome count, or `total` for the suite size.
        - `passes` integer
        - `failures` integer
        - `pending` integer — **pending** outcomes (intentional skips).
        - `retries` integer
        - `skipped` integer — **skipped** outcomes (separate from `failures` here; see schema for Tests Explorer difference).
        - `flaky` integer
    - `meta` RunMeta
      - `ciBuildId` string — CI build identifier
      - `pr` object, nullable — Normalized pull request metadata when the run is associated with a PR
        - `id` string, nullable
        - `link` string, nullable
        - `title` string, nullable
        - `source` string, nullable
        - `destination` string, nullable
      - `commit` object
        - `sha` string
        - `branch` string
        - `authorName` string
        - `authorEmail` string
        - `message` string
        - `remoteOrigin` string
      - `framework` object
        - `name` string
        - `version` string
    - `specs` RunSpec[]
      - `spec` string — Spec file path
      - `groupId` string
      - `instanceId` string
      - `claimedAt` string, date-time
      - `completedAt` string, date-time, nullable
      - `machineId` string
      - `tags` string[] — Tags associated with this spec (Playwright only)
      - `inactivityTimeoutMs` integer, nullable — Inactivity timeout in milliseconds
      - `results` object, nullable
        - `stats` object — Totals for completed tests in this spec. Counters follow `RecordedTestOutcome` (see components/schemas): `pending` and `skipped` are each separate from `failures`.
          - `suites` integer
          - `tests` integer
          - `passes` integer — Count of **passed** outcomes (test passed)
          - `failures` integer — Count of **failed** outcomes (test failed)
          - `pending` integer — Count of **pending** outcomes (intentional skips it.skip())
          - `skipped` integer — Count of **skipped** outcomes - test was supposed to run but was interrupted
          - `flaky` integer
          - `overall` integer — Deprecated: use tests instead. Total number of tests (Playwright only)
          - `wallClockStartedAt` string, date-time
          - `wallClockEndedAt` string, date-time
          - `wallClockDuration` integer — Duration in milliseconds
          - `startedAt` string, date-time — Alias for wallClockStartedAt
          - `endedAt` string, date-time — Alias for wallClockEndedAt
          - `duration` integer — Alias for wallClockDuration in milliseconds
        - `exception` string, nullable
        - `flaky` integer
        - `videoUrl` string, nullable — Signed URL to the video recording (Cypress only, null for Playwright)
        - `screenshots` object[] — Screenshots captured during test execution (Cypress only)
          - `screenshotId` string
          - `name` string, nullable
          - `testId` string
          - `testAttemptIndex` integer
          - `takenAt` string, date-time
          - `screenshotURL` string — Signed URL to the screenshot
    - `completionState` 'complete' | 'incomplete' | 'cancelled' | 'timedOut', required — The completion state of the run
    - `status` 'passed' | 'failed' | 'running' | 'cancelled' | 'timedOut', required — The overall status of the run

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed
- `404` — Resource not found
- `413` — Payload Too Large - Response size exceeds limits. Use Accept-Encoding: gzip header.

---

[API](https://skmtc.dev/currents/apis/currents-rest-api.md) · [All operations](https://skmtc.dev/currents/apis/currents-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/currents/currents-rest-api/revisions/d0e2ed0e7e6a/schema)
