Open Quantum (self-managed)
Run on Open Quantum's QPUs with your own Open Quantum API credentials, using the OpenQuantumProvider.
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.
API Reference: qbraid.runtime.openquantum
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:
- An Open Quantum account, with its Terms of Use accepted. Jobs are refused until they are.
- 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 qbraidAuthentication
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")| Option | Values |
|---|---|
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
| Parameter | Type | Default | Description |
|---|---|---|---|
shots | int | 100 | Number of shots. |
name | str | "qBraid Job" | Job name shown in Open Quantum. |
execution_plan | str | Cheapest offered | "PUBLIC" or "PRIVATE". |
queue_priority | str | Cheapest offered | "STANDARD", "PRIORITY" or "INSTANT". |
dry_run | bool | False | Return the price quote instead of submitting. |
organization_id | str | Your first organization | The Open Quantum organization to bill. |
Related links
- Open Quantum on qBraid: the same devices with your qBraid API key and a linked Open Quantum account
- Open Quantum documentation
- Open Quantum: backends and targets
Thanks for your feedback.

