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.0
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.0.tar.gz | 80.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qubitra_sdk-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 137.2 kB
Release files / qubitra_sdk-0.4.0.tar.gz
| Download URL | qubitra_sdk-0.4.0.tar.gz |
|---|---|
| Size | 80.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64dce4690a636a25d25b7bab906f21b8dfd729e983275464a6212dfff8a57f0b
|
|
BLAKE2b-256 checksum How to use checksums |
0798ab5033deb8ec197d83c1ce5f2ec40c4ce3413c041b872c152643b8f38d13
|
| 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.0-py3-none-any.whl
| Download URL | qubitra_sdk-0.4.0-py3-none-any.whl |
|---|---|
| Size | 56.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
04a01c70c59552ee75c9a7fd1cc00c1525bd42a4df8026a70c3d97ca51e464d9
|
|
BLAKE2b-256 checksum How to use checksums |
5406a8cb644aed10cb20a6bb57eb6c30344ccc46bfe3c9cdfc2da4bdf997dc1f
|
| 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}
|