Skip to main content
API Reference: qbraid.runtime.native

Installation & Setup

To interface with the qBraid QIR simulator or any of the 10+ quantum devices supported by qBraid’s managed access, install the relevant qbraid runtime extra(s) based on your device(s) of choice:
pip install qbraid
qbraid versions <0.11 are not compatible with qBraid API V2. See migration guide.To ensure compatibility with the new platform, use qbraid ≥ 0.11.0.
Next, obtain your qBraid API key:
  1. Login or create an account at account.qbraid.com.
  2. Navigate to Account > API Keys in the left-sidebar, and then click “Create API Key”.

Save account to disk

Once you have your API key, you can save it locally in a configuration file ~/.qbraid/qbraidrc, where ~ corresponds to your home ($HOME) directory:
Account credentials are saved in plain text, so only do so if you are using a trusted device.
from qbraid.runtime import QbraidProvider

provider = QbraidProvider(api_key='API_KEY')
provider.save_config()
Once the account is saved on disk, you can instantiate the provider without any arguments:
provider = QbraidProvider()

Load account from environment variables

Alternatively, the qBraid-SDK can discover credentials from environment variables:
export QBRAID_API_KEY='QBRAID_API_KEY'

Basic Usage

Given a device “QRN” (qBraid Resource Name), a QbraidDevice object can be created as follows:
from qbraid import QbraidProvider

provider = QbraidProvider()
provider.get_devices()
# [<qbraid.runtime.native.device.QbraidDevice('qbraid:qbraid:sim:qir-sv')>]

device = provider.get_device('qbraid:qbraid:sim:qir-sv')

type(device)
# <class 'qbraid.runtime.native.device.QbraidDevice'>
From here, class methods are available to get information about the device, execute quantum programs, access the wrapped device object directly, and more.
device.metadata()
# {'device_id': 'qbraid:qbraid:sim:qir-sv',
#  'device_type': 'SIMULATOR',
#  'num_qubits': 64,
#  'status': 'ONLINE',
#  'queue_depth': 0}
Then you can submit quantum jobs to the device.
run_input = [qiskit_circuit, braket_circuit, cirq_circuit, qasm3_str]

jobs = device.run(run_input, shots=100)

results = [job.result() for job in jobs]

print(results[0].data.get_counts())
# {'00': 50, '01': 2, '10': 47, '11': 1}
See how to visualize these results in the Visualization section.