Jobs
Jobs are the unit of execution in QCOS. A job may run on a simulator, a GPU/HPC target or a QPU provider. The canonical door is/api/v1/runtime/jobs.
Submit a circuit
backend_id (required), qasm or algorithm, shots
(default 1024), optional session_id, qec_config, dataset_id, metadata,
confirm_cost. Add ?dry_run=true to get the estimate and validation result
without executing. For long-running workloads use the async door:
POST /api/v1/runtime/jobs/async.
Poll a job
status, estimated_cost_usd, cost_basis,
approval_required, result (when complete) and artifacts. Server-sent
progress events: GET /api/v1/runtime/jobs/{job_id}/events.
Approve a gated job
Real-QPU jobs, jobs with QEC enabled and estimates at or above $1.00 come back with"approval_required": true and an approval_token:
Retrieve results and artifacts
Results are embedded in the job payload oncestatus is completed. Every
artifact — including the sealed execution evidence — is listed at:
Cancel a job
provider_abort field tells you what actually happened
upstream: not_dispatched (never reached the provider), acknowledged
(provider abort requested) or unsupported — in which case the circuit runs
to completion on the provider and consumes billable shots; a warning field
is present exactly then. Cancelling an already-finished job returns 409.
Job states
Migrating from the legacy doors
Legacy doors still answer with deprecation headers, but new fields (sessions,
primitives, approval flow, sealed evidence artifacts) exist only on
/api/v1/runtime/*. Field renames: backend → backend_id,
circuit/circuit_qasm → qasm.