API Reference:
qbraid.runtime.aqt
Overview
Theqbraid.runtime.AQTProvider provides direct access to
Alpine Quantum Technologies (AQT) trapped-ion quantum systems through the
arnica cloud. You can write quantum circuits in
Qiskit (or any other qBraid-supported framework); the provider
transpiles them to AQT’s native gate set and executes them on AQT hardware such as the IBEX QPU,
all from within the qBraid Runtime framework.
AQT devices are also available through the qBraid platform — accessed with
QbraidProvider and billed in qBraid credits — as well as through Amazon
Braket and Open Quantum. Each is a separate access point with its own device
ids.Getting started
Before you begin, make sure you have:- An AQT arnica account with machine-to-machine (OIDC client-credentials) access.
- Your arnica client ID and client secret.
- Python >= 3.10
Set up the qBraid-SDK
Install qBraid with theaqt extra from PyPI using pip:
aqt-connector and qiskit.
Note: The qBraid-SDK requires Python 3.10 or greater. You can check your
Python version by running
python --version from the command line.Authentication
TheAQTProvider authenticates to the arnica cloud non-interactively using OIDC client
credentials (machine-to-machine) — the interactive device/login flow is never triggered. Provide
your credentials via environment variables:
List available devices
Use theAQTProvider to list the devices to which you have access:
"<workspace>/<resource>" identifier. Get a specific device by its id:
Use
get_devices() to discover the "<workspace>/<resource>" ids you have access to — for
example, the IBEX QPU is exposed under its arnica workspace and resource.Submitting jobs
TheAQTProvider accepts circuits written in any qBraid-supported framework. device.run()
transpiles the circuit to AQT’s native basis (RZ, R, RXX) via the qiskit -> aqt_connector
conversion, then submits it.
AQT enforces per-job limits: up to 2000 shots per job and up to 2000
operations (gates) per circuit. Jobs that exceed either limit are rejected.
The IBEX QPU provides 12 qubits; a circuit wider than the device is
rejected before submission.
Create a circuit
Run a job
Usedevice.run() to transpile and submit a circuit:
Batch submission
Submit multiple circuits in a single call. All circuits are bundled into one arnica job:When submitting a list of circuits, all are executed as a single batch job on
arnica. The returned measurement counts will be a list of dictionaries, one
per circuit.
Retrieving results
Check job status
Cancel a job
Cancellation targets queued or ongoing jobs. Jobs already in a terminal state
(
COMPLETED, FAILED, CANCELLED) cannot be cancelled.Execution time
Retrieve the wall-clock run time (in seconds) for a completed job:execution_time_s() is derived from the arnica timing_data as the ongoing
→ finished span (the time the job spent running, excluding queue wait). It
returns None until the job has completed, and raises AQTJobError if a
completed job’s timing data is incomplete.Configuration options
Thedevice.run() method accepts the following keyword arguments:
Credentials are configured via environment variables:

