QiskitRuntimeProvider
Install, authenticate, and submit jobs to IBM Quantum backends through the qBraid SDK using the QiskitRuntimeProvider and IBM Cloud CRN.
API Reference: qbraid.runtime.ibm
Installation & Setup
To interface with IBM Quantum backends, install the qiskit extra,
pip install 'qbraid[qiskit]'and configure your IBM credentials.
When using the ibm_cloud channel, the instance value is your IBM Cloud
CRN (Cloud Resource Name) — a string that looks like
crn:v1:bluemix:public:quantum-computing:<region>:a/<account-id>:<service-instance-id>::.
It identifies a Qiskit Runtime service instance in your IBM Cloud account and
is not a qBraid identifier. You can find it in the IBM Cloud console
under the Qiskit Runtime service instance you want to use. Pair it with your
IBM Cloud API key as the token.
Basic Usage
The QiskitRuntimeProvider allows you to easily submit jobs to IBM Quantum devices. There are several ways to initialize the provider:
- Direct authentication with IBM Cloud:
from qbraid.runtime import QiskitRuntimeProvider
provider = QiskitRuntimeProvider(
channel="ibm_cloud",
token="MY_IBM_CLOUD_API_KEY",
instance="MY_IBM_CLOUD_CRN"
)- Authentication with IBM Quantum:
provider = QiskitRuntimeProvider(
channel="ibm_quantum",
token="MY_IBM_QUANTUM_TOKEN"
)- Using environment variables:
export QISKIT_IBM_TOKEN="MY_IBM_CLOUD_API_KEY"
export QISKIT_IBM_INSTANCE="MY_IBM_CLOUD_CRN"
export QISKIT_IBM_CHANNEL="ibm_cloud"- Using credentials stored in
$HOME/.qiskit/qiskit-ibm.json
When using environment variables or stored credentials, you can initialize the provider without any arguments:
provider = QiskitRuntimeProvider()Once initialized, you can list available devices and access their information:
# Get list of available devices
provider.get_devices()
# [<qbraid.runtime.ibm.device.QiskitBackend('ibm_brisbane')>,
# <qbraid.runtime.ibm.device.QiskitBackend('ibm_sherbrooke')>,
# <qbraid.runtime.ibm.device.QiskitBackend('ibm_fez')>,
# <qbraid.runtime.ibm.device.QiskitBackend('ibm_kyiv')>,
# <qbraid.runtime.ibm.device.QiskitBackend('ibm_torino')>,
# <qbraid.runtime.ibm.device.QiskitBackend('ibm_marrakesh')>]
# Select a specific device
device = provider.get_device('ibm_brisbane')
# View device metadata
device.metadata()
# {'device_id': 'ibm_brisbane',
# 'device_type': 'QPU',
# 'num_qubits': 127,
# 'instance': 'ibm-q/open/main',
# 'max_shots': 100000,
# 'status': 'ONLINE',
# 'queue_depth': 37}Our chosen device is the IBM Osaka Backend, which we will now submit a Qiskit job to.
from qiskit import QuantumCircuit
circuit = QuantumCircuit(2)
circuit.h(0)
job = device.run(circuit, shots=10)So now we have job which is of type QiskitJob, which inherits from QuantumJob. To see the results, we can do the following:
res = job.result()
res.data.get_counts()
# {'00': 6, '11': 4}
res.data.measurements
# array([[1, 1],
# [0, 0],
# [0, 0],
# [1, 1],
# [0, 0],
# [1, 1],
# [0, 0],
# [1, 1],
# [0, 0],
# [0, 0]])See how to visualize these results in the Visualization section.
Thanks for your feedback.

