Reference

SDKs

Official clients for Python and Node/TypeScript. Thin wrappers over the REST API — everything you can do with curl, just nicer.

Python

bash
pip install quicktane
python
from quicktane import QuickTane

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

# one-shot
run = qt.run_and_wait("print('hi')", language="python")
print(run.output, run.exit_code)

# fire-and-forget
run = qt.run("print(2 + 2)", language="python")
run = qt.get_run(run.run_id)

# interactive session
with qt.create_sandbox("python") as sbx:
    sbx.files.write("app.py", "print('hello')")
    print(sbx.exec(command="python app.py").stdout)

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

// one-shot
const run = await qt.runAndWait("console.log('hi')", { language: "node" });
console.log(run.output, run.exitCode);

// interactive session
const sbx = await qt.createSandbox("node");
await sbx.files.write("app.js", "console.log('hello')");
console.log((await sbx.exec({ command: "node app.js" })).stdout);
await sbx.kill();

TypeScript-native with full types; zero runtime dependencies (uses the built-in fetch).

Configuration

SettingPurpose
api_key / first argYour key; falls back to QUICKTANE_API_KEY.
base_url / baseUrlOverride the API base; falls back to QUICKTANE_BASE_URL.
timeoutHTTP client timeout.

Error handling

Both SDKs raise typed errors (AuthenticationError, NotFoundError, ValidationError, RateLimitError, APIError) that subclass a common base — see Errors.

Prefer raw HTTP? Every SDK call maps 1:1 to an endpoint in the API reference.