Getting started

Quickstart

From zero to a running sandbox in a few minutes.

1. Get an API key

Create an account, then generate a key from your dashboard. Keys look like sk_live_… and are shown once — store it somewhere safe. New teams start on the free tier with a one-time credit balance, so you can try everything before adding a card.

Keep it secret. An API key grants full access to run code and spend usage on your team. Never ship it in client-side code or commit it to a repo.

2. Run some code

A run is one-shot: you submit code and a language, and QuickTane executes it in a fresh sandbox. The simplest path is the SDK, which submits the run and waits for the result for you.

Python

bash
pip install quicktane
python
from quicktane import QuickTane

qt = QuickTane("sk_live_your_key")   # or set QUICKTANE_API_KEY

run = qt.run_and_wait("print('hello from the sandbox')", language="python")

print(run.status)      # "completed"
print(run.output)      # "hello from the sandbox\n"
print(run.exit_code)   # 0

Node / TypeScript

bash
npm install @quicktane-sdk/client
typescript
import { QuickTane } from "@quicktane-sdk/client";

const qt = new QuickTane("sk_live_your_key");   // or set QUICKTANE_API_KEY

const run = await qt.runAndWait("console.log(2 + 2)", { language: "node" });

console.log(run.status);   // "completed"
console.log(run.output);   // "4\n"

curl

Prefer raw HTTP? Submitting a run returns 202 Accepted with a run_id:

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(1 + 1)"}'
json
{
  "run_id": 42,
  "status": "pending",
  "language": "python",
  "exit_code": null,
  "duration_ms": null,
  "output": null,
  "created_at": "2026-07-19T12:00:00.000000Z"
}

3. Fetch the result

Runs execute asynchronously. Poll GET /v1/runs/{run_id} until status is a terminal value (completed, failed, timeout, …), or register a webhook to be notified the moment it finishes.

bash
curl https://api.quicktane.com/v1/runs/42 \
  -H "Authorization: Bearer sk_live_your_key"
json
{
  "run_id": 42,
  "status": "completed",
  "language": "python",
  "exit_code": 0,
  "duration_ms": 137,
  "output": "2\n",
  "created_at": "2026-07-19T12:00:00.000000Z"
}

The SDK's run_and_wait / runAndWait handles this polling for you — reach for raw HTTP only when you need full control.

Next steps