---
title: "Machine properties"
method: GET
path: "/v1/machines/{id}/properties"
tags: ["Machines"]
---

# Machine properties

`GET /v1/machines/{id}/properties`

## Request

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

The backend's real capabilities for compiling against it — native gate set, accepted
gates (the server transpiles down), shot range, connectivity class — without a coupling
map or anything else that would fingerprint the upstream vendor of a white-labeled machine.

## Path parameters

- `id` string, required

## Response `200`

The machine's properties

- MachineProperties: `GET /v1/machines/{id}/properties` — what to compile against, the machine's pricing basis and, when the quantum service can read it, its topology right now.
  - `targetId` string
  - `displayName` string
  - `provider` string: As in `Machine.provider`.
  - `kind` 'sim' | 'qpu'
  - `type` 'aer' | 'qsimulator' | 'qtester' | 'qpu'
  - `qubits` integer
  - `nativeGates` string[]: What the hardware physically executes.
  - `acceptedGates` string[]: What the API accepts for this machine — the server transpiles the rest.
  - `connectivity` 'all-to-all' | 'nearest-neighbour' | 'programmable' | 'limited'
  - `minShots` integer: The smallest shot count this backend accepts.
  - `maxShots` integer: The largest shot count this backend accepts.
  - `modality` 'simulator' | 'superconducting' | 'trapped-ion' | 'neutral-atom'
  - `availability` string
  - `analog` boolean
  - `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.
  - `priceModel` 'free' | 'per-shot' | 'per-second' | 'per-job': How this machine prices a run: `free` (RoRo's own simulators), `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).
  - `topology` MachineTopology: A machine's qubits and coupling as the quantum service sees them now. Brand-kept machines (`amazon`, `ibm`) carry their own qubit indices and edges; a white-labeled machine carries its public qubit count, how many are usable, and the coarse connectivity word — no edge list and no edge count.
    - `qubits` integer: Qubits on the device (the public count for a white-labeled machine).
    - `usableQubits` integer, nullable: Qubits a circuit may be placed on now (offline ones removed); null when the provider does not say.
    - `couplingEdges` integer, nullable: Coupling edges (brand-kept machines only).
    - `connectivity` 'all-to-all' | 'nearest-neighbour' | 'programmable' | 'limited'
    - `coupling` array[], nullable: Coupling edges as pairs of qubit indices (brand-kept machines only).
      - integer[]
    - `source` string, nullable: Where the figures were read from.
    - `fetchedAt` string, nullable: When they were read.

## Other responses

- `401`: Missing or invalid API key
- `404`: Unknown machine (not in your available list)

---

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