This page uses OpenQuantumProvider with your own Open Quantum credentials: jobs go straight to Open Quantum, and qBraid isn’t involved. To run on Open Quantum’s devices with your qBraid API key and a linked Open Quantum account, see Open Quantum on qBraid.

Overview

The qbraid.runtime.OpenQuantumProvider connects your own Open Quantum account to the QPUs it offers, such as IonQ Forte, IQM Garnet and Emerald, Rigetti Cepheus, and AQT IBEX Q1. Write circuits in any qBraid-supported framework; the provider converts them to OpenQASM and submits them, all from within the qBraid Runtime framework. Jobs are billed to your Open Quantum account.

Getting started

Before you begin, make sure you have:

  1. An Open Quantum account, with its Terms of Use accepted. Jobs are refused until they are.
  2. An Open Quantum API client ID and client secret. See Open Quantum’s installation guide.

Install the qBraid SDK. The Open Quantum provider needs no extra:

pip install qbraid

Authentication

Provide your credentials through environment variables:

export OPENQUANTUM_CLIENT_ID="your-client-id"
export OPENQUANTUM_CLIENT_SECRET="your-client-secret"

Then initialize the provider:

from qbraid.runtime import OpenQuantumProvider

provider = OpenQuantumProvider()

You can also pass the credentials directly:

provider = OpenQuantumProvider(client_id="your-client-id", client_secret="your-client-secret")

List available devices

devices = provider.get_devices()
print([device.id for device in devices])

Devices are addressed by Open Quantum’s short codes, such as ionq:forte-1, iqm:garnet or rigetti:cepheus-1-108q:

device = provider.get_device("iqm:garnet")

device.status() always reports ONLINE: Open Quantum doesn’t publish a per-device status. Check availability in Open Quantum’s own console.

Submitting jobs

circuit = """
OPENQASM 3.0;
include "stdgates.inc";
qubit[2] q;
bit[2] c;
h q[0];
cx q[0], q[1];
c = measure q;
"""

job = device.run(circuit, shots=100)
print(job.id)

Passing a list of circuits submits one Open Quantum job per circuit and returns a list of jobs.

Execution plan and queue priority

Each Open Quantum job runs on an execution plan and a queue priority, which together set its price. By default the provider chooses the cheapest combination your account is offered. To choose, pass them by name:

job = device.run(circuit, shots=100, execution_plan="PUBLIC", queue_priority="STANDARD")
OptionValues
execution_plan"PUBLIC", "PRIVATE"
queue_priority"STANDARD", "PRIORITY", "INSTANT"

Open Quantum’s credit documentation explains which credits each plan uses.

Get a quote without submitting

Set dry_run=True to get Open Quantum’s price quote for every plan and priority, without creating a job:

quote = device.run(circuit, shots=100, dry_run=True)

Retrieving results

result = job.result()
print(result.data.get_counts())

job.status() reports the job’s state, and job.cancel() cancels it.

Configuration options

ParameterTypeDefaultDescription
shotsint100Number of shots.
namestr"qBraid Job"Job name shown in Open Quantum.
execution_planstrCheapest offered"PUBLIC" or "PRIVATE".
queue_prioritystrCheapest offered"STANDARD", "PRIORITY" or "INSTANT".
dry_runboolFalseReturn the price quote instead of submitting.
organization_idstrYour first organizationThe Open Quantum organization to bill.