Skip to main content

Overview

The qbraid.runtime.QuantinuumProvider provides support for Quantinuum’s trapped-ion quantum systems through the Quantinuum Nexus platform. This means you can write quantum circuits using pytket, compile and execute them on Quantinuum’s H-series processors and emulators, all from within the qBraid Runtime framework.

Getting started

Before you begin, make sure you have:
  1. A Quantinuum Nexus account with valid credentials.
  2. The qnexus CLI tool installed and authenticated (see Authentication below).
  3. Python >= 3.10

Set up the qBraid-SDK

Install qBraid with the quantinuum extra from PyPI using pip:
This installs the required dependencies: pytket, pytket-quantinuum, and qnexus.
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

The QuantinuumProvider authenticates through the qnexus library. Before using the provider, you must log in using the qnexus CLI:
This opens a browser-based authentication flow and stores your credentials locally. Once authenticated, the provider will automatically use your stored credentials — no API keys or environment variables are needed. Then initialize the provider:

List available devices

Use the QuantinuumProvider to list all devices to which you have access:
Get a specific device by its ID:
Devices with an “E” suffix (e.g., H1-1E) are emulators (simulators) that model the behavior of the corresponding hardware device.

Submitting jobs

The QuantinuumProvider accepts quantum programs written as pytket Circuit objects.

Create a circuit

Run a job

Use device.run() to compile and submit a circuit:

Batch submission

Submit multiple circuits in a single call. All circuits are bundled into one Nexus job:
When submitting a list of circuits, all circuits are compiled and executed as a single batch job on Quantinuum Nexus. The returned measurement_counts will be a list of dictionaries, one per circuit.

Retrieving results

Check job status

Cancel a job

Cancellation is best-effort. Jobs already in a terminal state (COMPLETED, FAILED, CANCELLED) cannot be cancelled.

Execution time

You can retrieve the wall-clock execution time (in seconds) for a completed job:

Configuration options

The device.run() method accepts additional keyword arguments to control compilation and project scoping: The project_name and optimisation_level parameters can also be set via environment variables:

Full example

A complete end-to-end workflow targeting a Quantinuum emulator: