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.3
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.3.tar.gz | 96.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qubitra_sdk-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 154.4 kB
Release files / qubitra_sdk-0.4.3.tar.gz
| Download URL | qubitra_sdk-0.4.3.tar.gz |
|---|---|
| Size | 96.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bcf1781c9b47bf5a2e580bcbd6182dae1d0ac63b645529efd06ab8ae0cc19980
|
|
BLAKE2b-256 checksum How to use checksums |
3abbb8eec3baaee3d1cc7b75d0477334333f139c0c59a97927e5e3fa432844f6
|
| 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.3-py3-none-any.whl
| Download URL | qubitra_sdk-0.4.3-py3-none-any.whl |
|---|---|
| Size | 58.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68d853912c87246042f9007033dd85384b2687a171a07bfe77dbf99807d2249a
|
|
BLAKE2b-256 checksum How to use checksums |
884a871ac7727863a875b6123e5624f828525168276121967a25444af21a7f29
|
| 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}
|