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

# Fetch a run

`GET /v1/runs/{id}`

## Request

- Base URL: `https://api.roroquantum.com`
- URL: `https://api.roroquantum.com/v1/runs/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

The run

- Run
  - `id` string
  - `machineTargetId` string: The target's codename.
  - `machineName` string: Friendly display name of the target.
  - `shots` integer
  - `status` 'queued' | 'running' | 'completed' | 'failed' | 'cancelled'
  - `cost` number, double: Credits charged for this run.
  - `counts` object, nullable: Measured bitstring counts (present when completed).
  - `probabilities` object, nullable: Normalized probabilities per bitstring (present when completed).
  - `error` string, nullable: Failure reason (present when status is failed).
  - `createdAt` string, date-time
  - `qasm` string, nullable: The submitted OpenQASM 2.0 source.
  - `providerJobId` string, nullable: Upstream provider job id
  - `providerStatus` string, nullable: Live raw provider status while running (e.g. 'Running'); null for instant simulator runs.
  - `queuePosition` integer, nullable: Jobs ahead on the backend while queued; null for instant simulator runs.
  - `refundable` boolean: True when a failed, charged run has a machine-side error — you may `POST /v1/runs/{id}/refund`.
  - `refundStatus` 'pending' | 'approved' | 'rejected', nullable: The refund audit trail: null (no refund involved), `pending` (requested), `approved` (credited — automatic refunds appear here), `rejected`.
  - `notebookId` string, nullable: Set when the run was submitted from a console notebook.
  - `labProjectId` string, nullable: Set when the run was submitted from a lab project.
  - `countsProvenance` 'measured' | 'provider-corrected', nullable: Where `counts` came from: `measured` as read out, or `provider-corrected` (the provider already applied its own readout correction). Null for runs that predate the label — read them as received.
  - `effectiveShots` integer, nullable: Shot-equivalents billed — equal to `shots` for a plain run.
  - `resilience` ResilienceInfo: The resolved, expanded set a quote priced and a run was charged for, with its settled outcome.
    - `readout` boolean
    - `calibrationShots` integer: Shots per calibration circuit (0 without readout).
    - `zneScales` integer[], nullable
    - `zneExtrapolator` string, nullable
    - `zneObservable` string, nullable
    - `zneMode` 'histogram-heuristic' | 'observable', nullable
    - `dd` string, nullable
    - `twirling` boolean
    - `circuits` integer: 1 + 2·readout + (scales − 1).
    - `effectiveShots` integer: shots × Σscales + 2 × calibrationShots.
    - `baseCostMilli` integer: What the same run would cost with no resilience.
    - `resilienceCostMilli` integer: The extra, in milli-credits.
    - `calibrationSource` 'measured-this-run', nullable: On a simulator the calibration measures the family model's readout rate, not a device.
    - `transpiledToNoiseBasis` boolean, nullable: Simulators: the whole set was translated to the noise basis. Null on hardware.
    - `projectedSeconds` number, nullable: Simulators: projected wall time from the measured throughput. Null on hardware.
    - `status` 'planned' | 'applied' | 'partially-applied' | 'zne-measured-not-extrapolated' | 'readout-measured-not-applied' | 'not-applied-refunded': `zne-measured-not-extrapolated` / `readout-measured-not-applied`: the circuits ran and are charged, the estimate was skipped (see notes). `partially-applied` / `not-applied-refunded`: circuits that did not run were refunded (`refundedMilli`).
    - `refundedMilli` integer: Milli-credits returned for circuits of the set that did not run.
    - `notes` string[]
  - `mitigated` Mitigated: The DERIVED distribution and how it was derived. `counts` on the run are never altered.
    - `probabilities` object, nullable
    - `method` 'readout' | 'zne' | 'readout+zne', nullable: `readout+zne`: each scale's counts are readout-corrected, then extrapolated.
    - `negativityClipped` number, nullable: Probability mass clipped below zero by the inversion.
    - `calibration` Calibration, nullable: Readout error rates measured in this run. Index i is the i-th character from the RIGHT of a counts key.
      - `source` 'measured-this-run', nullable
      - `shots` integer, nullable
      - `bits` integer, nullable
      - `qubits` integer[]
      - `p01` number[]: P(read 1 | prepared 0) per bit.
      - `p10` number[]: P(read 0 | prepared 1) per bit.
    - `zne` ZneResult, nullable
      - `scales` integer[]
      - `extrapolator` string, nullable
      - `mode` 'histogram-heuristic' | 'observable', nullable
      - `observable` string, nullable
      - `values` number[], nullable: Observable mode: ⟨O⟩ per scale.
      - `stderrs` number[], nullable
      - `extrapolated` number, nullable: Null when the extrapolation was skipped.
      - `tvdToScale1` number[], nullable
      - `shotNoiseTvd` number, nullable
      - `foldGateRatio` number[], nullable
    - `warnings` string[]
  - `resilienceDetail` ResilienceDetail: Raw histograms behind `mitigated` — only on `GET /v1/runs/{id}` and the stream's `done` frame; null in lists and on `POST` responses.
    - `calibration` object, nullable
      - `zeroStateCounts` object, nullable
      - `oneStateCounts` object, nullable
    - `zne` object, nullable
      - `perScaleCounts` object[]: One histogram per scale, in `zneScales` order, never readout-corrected.

## Other responses

- `401`: Missing or invalid API key
- `404`: Run not found (or not yours — another account's run id is indistinguishable from a missing one)

---

[API](https://skmtc.dev/roroquantum/apis/roro-quantum-api.md) · [All operations](https://skmtc.dev/roroquantum/apis/roro-quantum-api/llms.txt) · [OpenAPI document](https://skmtc.dev/roroquantum/apis/roro-quantum-api/revisions/d6e194352018?raw)
