Submitting Jobs
Jobs are tracked quantum computations that run on a specific backend. Unlike playground runs (which are ephemeral), jobs are persisted, can target real quantum hardware, and produce results you can review, download, and package into capsules.
How to submit a job
There are two ways to submit a job:
- From the Playground — Click the Run button dropdown and select Run as Job…. Your code must be saved as a script first.
- Via the API — Send a
POSTrequest to/api/jobs/submit.
Job submission form
The “Run as Job” dialog in the playground lets you configure:
Backend
Backends are grouped into tiers:
- Marqov Simulators — Free, local simulation
- Quantum Brilliance — Free CPU/GPU simulators with noise model support
- Cloud Simulators — AWS Braket SV1, DM1, TN1 (pay per use)
- Quantum Hardware — IonQ, Rigetti, IQM, Quantinuum QPUs (pay per use)
Shots
Number of measurement repetitions. Range: 1 to 100,000.
Execution mode
- Fast (Direct) — Sends the job directly to the worker. Lower overhead, no retry logic.
- Durable (Temporal) — Routes through Temporal for workflow orchestration. Provides automatic retries, observability, and fault tolerance. Recommended for production workloads and multi-step algorithms.
Backend-specific options
Some backends expose additional configuration:
- Noisy Aer simulator (
qb-sim-noisy-aer) — Noise model configuration (gate errors, readout errors, T1/T2 times) - Statevector simulator (
qb-sim-statevector) — Option to extract the full state vector
Submitting by script reference vs. inline code
When submitting from the playground with a saved script, the job references the script by ID (script_id). This keeps the job linked to the script for traceability.
When submitting via the API without a saved script, you can pass inline_code and framework directly. You can also reference a script by script_slug.
Cost estimation
Before a job is created, the platform calculates the estimated cost based on the selected backend and number of shots. Each backend has a pricing structure:
- Task fee — Fixed cost per job task
- Per-shot cost — Cost multiplied by the number of shots
- Minimum cost — Floor price for any job on that backend
The estimated cost is checked against your team’s budget. If the job would exceed the budget, submission is rejected with HTTP 402 and details about the remaining budget.
Rate limits
The platform enforces two levels of rate limiting on job submissions:
| Scope | Limit | Window |
|---|---|---|
| Per user | 10 jobs | 1 minute |
| Per team | 100 jobs | 1 day |
When a rate limit is hit, the API returns HTTP 429 with a Retry-After header indicating how long to wait.
Team auto-creation
The first time you submit a job, a personal team is automatically created for you if you do not already belong to one. You are assigned the owner role. All jobs are scoped to a team for billing and access control.
API reference
POST /api/jobs/submit
Authentication: Required
Request body:
{
"script_id": "uuid",
"backend": "sv1",
"params": {
"shots": 1000
},
"execution_mode": "direct"
}Alternatively, submit inline code:
{
"inline_code": "from qiskit import ...",
"framework": "qiskit",
"backend": "marqov-sim",
"params": {
"shots": 1000
}
}Response (201):
{
"job_id": "uuid"
}After submission, the user is redirected to /jobs/<job_id> to monitor progress.