Core concepts
Runs (one-shot)
Submit code, get a result. The simplest way to execute untrusted code.
A run executes one piece of code in a fresh, single-use sandbox. The pod is created on demand, runs your code, returns output, and is destroyed. Nothing persists between runs — for state across steps, use an interactive session.
Lifecycle
POST /v1/runqueues the run and returns202with arun_id.- An orchestrator worker launches a gVisor sandbox and executes your code.
- The run reaches a terminal status; output and exit code are recorded.
- You read the result via
GET /v1/runs/{run_id}or receive a webhook.
Submitting a run
bash
curl https://api.quicktane.com/v1/run \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"language": "python",
"code": "print(sum(range(10)))",
"timeout": 30
}'Parameters
| Field | Type | Notes |
|---|---|---|
language | string | Required. python or node. |
code | string | Required. Up to 100,000 characters. |
timeout | integer | Optional. Seconds; defaults to 30. Capped by your plan. |
The run object
json
{
"run_id": 42,
"status": "completed",
"language": "python",
"exit_code": 0,
"duration_ms": 137,
"output": "45\n",
"created_at": "2026-07-19T12:00:00.000000Z"
}
output combines stdout and stderr as the sandbox produced it. duration_ms
is the measured execution time, which is also what usage is metered against.
Statuses
| Status | Terminal | Meaning |
|---|---|---|
pending | no | Queued, not yet started. |
running | no | Executing in a sandbox. |
completed | yes | Finished; see exit_code. |
failed | yes | The code exited non-zero. |
timeout | yes | Exceeded the timeout and was killed. |
killed | yes | Terminated (e.g. resource limit). |
error | yes | Infrastructure error before/while running. |
Poll until status is terminal, or register a webhook so QuickTane pushes the finished run to you — no polling required.