---
title: "Get instance"
method: GET
path: "/instances/{instanceId}"
tags: ["Instances"]
---

# Get instance

`GET /instances/{instanceId}`

Get a single spec file execution instance by ID with full test results

## Path parameters

- `instanceId` string, required

## Response `200`

Successful response

- InstanceResponse
  - `status` 'OK', required
  - `data` Instance, required
    - `instanceId` string — Unique identifier for the instance
    - `runId` string
    - `groupId` string
    - `spec` string — Spec file path
    - `machineId` string
    - `claimedAt` string, date-time
    - `completedAt` string, date-time, nullable
    - `results` object, nullable
      - `stats` object — Instance-level totals. Uses `RecordedTestOutcome` (see components/schemas).
        - `tests` integer
        - `passes` integer
        - `failures` integer
        - `pending` integer — **pending** outcomes (intentional skips).
        - `skipped` integer — **skipped** outcomes (runner skip / interrupted).
      - `exception` string, nullable
      - `flaky` integer
      - `tests` InstanceTest[]
        - `testId` string
        - `title` string[]
        - `state` 'passed' | 'failed' | 'pending' | 'skipped' — Final per-test outcome stored in Currents. - **passed** — Runner reported success. - **failed** — Runner reported failure (assertions, errors, timeouts, etc.). - **pending** — Intentional skip or disabled test (e.g. `test.skip()` / `it.skip()`). In **Tests Explorer** (`GET /tests/{projectId}`) this increments `metrics.ignored` and does **not** increment `metrics.failures`. - **skipped** — Runner reported a skip without a normal pass/fail (often interrupted or never executed as pass/fail). In **Tests Explorer** this increments `metrics.failures` together with `failed` (there is no separate `skipped` counter in that response). On **run and spec** payloads, `stats.skipped` is still reported separately from `stats.failures` and `stats.pending`.
        - `displayError` string, nullable
        - `attempts` object[]
          - `attemptId` string
          - `state` string
          - `wallClockStartedAt` string, date-time
          - `wallClockDuration` integer
          - `error` object, nullable
            - `message` string
            - `stack` string

## 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)
