Qubitra Python SDK
The Python client for the Qubitra platform. Submit quantum circuits to a backend, wait for them to finish, and read normalized results.
Full documentation, including a quickstart and the API reference, is at q-plat-dev.cloud.qubitra.io/docs.
Install
pip install qubitra-sdk
The distribution is qubitra-sdk and the import is qubitra. Python 3.11 or newer
is required. Optional extras integrate with quantum frameworks: qubitra-sdk[qiskit],
qubitra-sdk[cirq], qubitra-sdk[pennylane], qubitra-sdk[openqarp].
Quickstart
Create an API key in the Qubitra console and set it as QUBITRA_API_KEY, then:
from qubitra import QubitraClient
BELL = (
'OPENQASM 3.0; include "stdgates.inc"; qubit[2] q; bit[2] c; '
"h q[0]; cx q[0], q[1]; c = measure q;"
)
with QubitraClient() as client:
for backend in client.backends.list():
print(backend.id, backend.qubit_count, backend.supported_formats)
job = client.jobs.submit(
backend_id="sim-statevector-26q",
circuit=BELL,
shots=1024,
name="bell-pair",
)
job = client.jobs.wait(job.id, timeout=600)
if job.status.is_terminal and job.error:
raise SystemExit(f"job {job.id} failed: {job.error}")
print(client.jobs.result(job.id).counts) # {"00": 512, "11": 512}
Note that include "stdgates.inc"; is required in OpenQASM 3 programs: the language
defines no gates of its own, so h and cx are undefined without it.
Configuration
| Variable | Default | Meaning |
|---|---|---|
QUBITRA_API_KEY |
— | API key (qpk_…), required. Identifies your organization. |
QUBITRA_API_URL |
https://api.qubitra.io |
The Qubitra deployment to reach. |
Both can also be passed as constructor arguments — QubitraClient(api_key=…, api_url=…) —
which take precedence over the environment.
API surface
| Call | What it does |
|---|---|
client.backends.list() / .get(id) |
List the backends available to you, or read one by id. |
client.jobs.submit(...) |
Submit one circuit as a job; returns a Job immediately. |
client.jobs.run(backend_id=…, pubs=[…]) |
Submit an ordered list of PUBs as one job. |
client.jobs.list() |
Your organization's jobs, newest first. |
client.jobs.get(id) / .result(id) / .cancel(id) |
Read status, fetch results, cancel. |
client.jobs.wait(id) |
Poll until the job reaches a terminal status. |
client.sessions.create(...) / .list() / .get(id) / .close(id) |
Group a run of jobs and bound its budget. |
client.marketplace.offerings() |
Browse the marketplace catalogue. |
A job carries an ordered list of PUBs (Primitive Unit Blocs). A Pub is a circuit
plus optional observables, parameter_values rows, and a shots count. JobResult.pubs
is index-aligned with the submission; each entry is a CountsResult,
ProbabilitiesResult, ExpectationValuesResult, or ErrorResult. For a single-circuit
submission, the convenience properties result.counts, .values, .probabilities, and
.shots read the first entry.
A Session groups a run of jobs under one id and bounds what the run may spend via
max_credits and max_seconds. It does not reserve hardware or affect queue priority.
jobs.result is available once a job is COMPLETED; calling it earlier raises
InvalidRequestError.
Errors
Every failure the SDK raises is a QubitraError. The subclasses are
AuthenticationError, NotFoundError, InvalidRequestError,
InsufficientCreditsError, and ProviderError. Each carries the platform's error body
on .detail and the HTTP status on .status_code.
Typing
All models are frozen pydantic models, and the package ships py.typed, so the full
surface is visible to type checkers.
Release files for qubitra-sdk 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qubitra_sdk-0.4.1.tar.gz | 91.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qubitra_sdk-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.5 kB
Release files / qubitra_sdk-0.4.1.tar.gz
| Download URL | qubitra_sdk-0.4.1.tar.gz |
|---|---|
| Size | 91.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4ee2839fac638f0b961a6b4db1074edfe7aa2349db0aa1aec6bb8b51912f459
|
|
BLAKE2b-256 checksum How to use checksums |
e38d0fc74ea65739efe678acfba150a090d1dfd24c57a4e5ab07f1efe2f78907
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.33 {"installer":{"name":"uv","version":"0.11.33","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / qubitra_sdk-0.4.1-py3-none-any.whl
| Download URL | qubitra_sdk-0.4.1-py3-none-any.whl |
|---|---|
| Size | 56.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3f413928a6fdc003d33bb1d9593c190c85ed5e4ae4bca873adce527884b7cce
|
|
BLAKE2b-256 checksum How to use checksums |
0e37b23df17c33c2b39baac57363b6627f800a18acfbd5fe8f83b9dcb13bfe1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.33 {"installer":{"name":"uv","version":"0.11.33","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|