---
title: "List targets"
method: GET
path: "/v1/machines"
tags: ["Machines"]
---

# List targets

`GET /v1/machines`

## Request

- Base URL: `https://api.roroquantum.com`
- URL: `https://api.roroquantum.com/v1/machines`
- Auth: HTTP bearer

The gate-model machines available to your account — always-on simulators and real
quantum processors — with live availability and price. Read this list rather than
hard-coding ids: the fleet changes. Analog (non-gate) devices are never listed here,
because a QASM circuit cannot execute on them.

## Response `200`

Available targets

- Machine[]
  - `targetId` string: The codename to pass as `machineTargetId` (or `targetId`) when submitting.
  - `displayName` string
  - `provider` string: `roro` for RoRo's own simulators and for white-labeled partner hardware; the real vendor (`amazon`, `ibm`, `ionq`) for machines that keep their brand.
  - `kind` 'sim' | 'qpu': Coarse class: simulator or quantum processor.
  - `qubits` integer: Maximum qubits for this target.
  - `costPerShot` number, double: The catalogue's credits per shot. On a `per-shot` machine a run costs `shots × costPerShot`; on any other `priceModel` the quote is the only price. 0 on RoRo's own simulators; a machine your organization's plan makes free (see `free`) keeps its catalogue rate here, and a run on it charges nothing.
  - `free` boolean: True when a run here charges YOU nothing: RoRo's own simulators (`roro.sim.*`, free by catalogue policy), and machines your organization's plan makes free to its members (an institution's plan can cover cloud simulators, within its own daily allowance; such a run can still be refused once that allowance is used up, and the quote says so). Computed for the organization your runs bill when no workspace is named; a run in another organization's workspace is priced by that organization, and the quote is the authority. Print the word from this flag, never from `costPerShot == 0` (an analog device, or a machine priced by device time, also reports 0).
  - `priceModel` 'free' | 'per-shot' | 'per-second' | 'per-job': How this machine prices a run for you: `free` (whenever `free` is true), `per-shot` (every rate below is 0), `per-second` (a rate per projected quantum-second, usually with a per-job minimum), or `per-job` (a job fee or minimum on top of the per-shot rate). These are RATES; what a run costs is what `POST /v1/runs/quote` answers.
  - `costPerSecond` number, double: Credits per projected quantum-second (0 when the machine has no time rate).
  - `costPerJob` number, double: Credits added to every job (0 when none).
  - `minJobCredits` number, double: The least a job costs, in credits (0 when there is no floor).
  - `online` boolean: True when the target is accepting runs right now.
  - `status` 'online' | 'offline' | 'busy': `busy` is an external machine that is queued/inactive/health-degraded — runs may still be accepted.
  - `queueDepth` integer, nullable: Jobs ahead on the backend when the machine reports it; null when unknown (simulators).
  - `type` 'aer' | 'qsimulator' | 'qtester' | 'qpu': Machine taxonomy: aer = instant local simulator, qsimulator = partner-grade simulator, qtester = hardware test device, qpu = real quantum processor.
  - `modality` 'simulator' | 'superconducting' | 'trapped-ion' | 'neutral-atom': The physics of the device.
  - `connectivity` 'all-to-all' | 'nearest-neighbour' | 'programmable' | 'limited': Coarse qubit-connectivity class (the coupling map of a brand-kept machine is on its properties).
  - `nativeGates` string[]: The gate basis the hardware physically executes (informational — the server transpiles your circuit down to it).
  - `availability` string: A one-line
  - `analog` boolean: Always false on this list — analog (Hamiltonian-schedule) devices cannot run QASM and are not offered here.
  - `resilience` string[]: Error-mitigation methods a run on this machine may request right now (`resilience` on a run). Empty when none — `resilienceNote` says why.
  - `resilienceNote` string: Why nothing is offered (e.g. an exact simulator has no readout error to mitigate), or a note on what is (e.g. a layout hint is advisory). Empty when there is nothing to add.
  - `resilienceState` 'offered' | 'switched-off-by-operator' | 'not-offered': `offered`; `switched-off-by-operator` (available on this class of machine, switched off right now); `not-offered` (does not apply here).
  - `resilienceMaxEffectiveShots` integer, nullable: The most shot-equivalents one resilience run may bill here; null when nothing is offered.
  - `calibration` MachineCalibration: Calibration summary as the provider publishes it (brand-kept machines only). Figures are refreshed by a periodic sync; `syncedAt` is when they were last actually read — a figure the provider stopped reporting keeps its old timestamp.
    - `processorType` string, nullable: Processor family and revision.
    - `twoQubitErrorMedian` number, double, nullable: Median two-qubit gate error, as a fraction (0.0035 = 0.35 %).
    - `readoutErrorMedian` number, double, nullable: Median readout (measurement) error, as a fraction.
    - `syncedAt` string, date-time, nullable: When these figures were last read from the provider.

## Other responses

- `401`: Missing or invalid API key

---

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