The REST API is the platform’s native contract — any language, any HTTP client, no SDK required. The Python SDK and CLI are thin wrappers over exactly these endpoints.
  • Base URL: https://platform.softquantus.com
  • Auth: Authorization: Bearer sq-live-... on every request (create a key under API Keys).
  • Content type: application/json.
The console itself uses cookie sessions, which additionally require an X-CSRF-Token header on writes. API keys are pure bearer auth — no cookies, no CSRF. Requests are rate limited per IP (default 60/minute; auth endpoints 10/minute) — exceeding it returns 429 with code rate_limit_exceeded.

Endpoints

Execution Plane

Usage & billing

Quantum instances

QCOS runtime proxy

Authenticated access to the QCOS runtime without exposing QCOS credentials; the platform injects a runtime key and binds the call to your workspace. Viewers hold qcos:read only; execution requires an execute-capable role.

Workspace management

Submit a job

POST /api/v1/platform/execution/jobs — send an Idempotency-Key header so a retried request never double-submits or double-reserves. Request body The workload object’s main fields: type (QUANTUM_CIRCUIT | GPU_JOB | CPU_JOB), shots, qasm (OpenQASM 2/3, required for circuits unless artifact_uri is given), command, setup, image, kind, resource_type, gpu, num_gpus, cpus, memory_gb, region, cloud. Response (201 new, 200 idempotent replay)
  • billing_mode is PREPAID, FREE (free instance / free tier) or PAYGO (approved pay-as-you-go, invoiced).
  • result_verified becomes true only when the job is SETTLED and both the result hash and the evidence hash are recorded — see Evidence.
  • usage_metrics appears on settled jobs (queue time, QPU seconds, wall clock, shots; provider durations are null rather than fabricated when the provider did not report them).

Poll a job

GET /api/v1/platform/execution/jobs/{id} returns the same object with updated status. Poll until a terminal state.
Fetching an unknown or foreign job id returns 200 with "status": "not_found" in the body rather than an HTTP 404 — check the status field.

Cancel

POST /api/v1/platform/execution/jobs/{id}/cancel asks the provider to abort and releases the unused reservation. A job already at the provider parks in CANCEL_REQUESTED until the abort is confirmed; any shots that actually ran are settled, anything unused is returned. See Run workloads.

Evidence

GET /api/v1/platform/execution/jobs/{id}/evidence (once settled) returns {bundle, hash, signature, algo, key_version, checks} — the hash-pinned record of how the run was produced, with independent verification facets. Full description in Evidence Bundles.

Errors

Refusals return an HTTP status and a machine reason in detail; nothing is charged on a rejection:
The complete reason catalog — status codes, meanings and fixes — is in Errors & refusal reasons.

Read-endpoint examples