SDKs

Official client libraries for TypeScript and Python
View as MarkdownOpen in Claude

Modbox provides official SDKs generated directly from the API spec. They are strongly typed and include auto-complete support in most editors.

TypeScript / Node.js

$npm install modbox-sdk

Basic usage

1import { ModboxClient } from "modbox-sdk";
2
3const client = new ModboxClient({
4 token: process.env.MODBOX_API_TOKEN,
5});
6
7// Provision and wait for a sandbox
8const { sandboxId } = await client.provisionSandbox({
9 taskId: crypto.randomUUID(),
10 imageId: "your-image-id",
11 ttlSeconds: 300,
12 envVars: {
13 OPENAI_API_KEY: process.env.OPENAI_API_KEY,
14 },
15});
16
17await client.waitForSandbox({ taskId: sandboxId, timeout: 60 });
18
19const sandbox = await client.getSandbox(sandboxId);
20console.log(sandbox.sandboxUrl); // https://...

Python

$pip install modbox-sdk

Basic usage

1from modbox import ModboxClient
2import os, uuid
3
4client = ModboxClient(token=os.environ["MODBOX_API_TOKEN"])
5
6task_id = str(uuid.uuid4())
7
8# Provision
9client.provision_sandbox(
10 task_id=task_id,
11 image_id="your-image-id",
12 ttl_seconds=300,
13 env_vars={"OPENAI_API_KEY": os.environ["OPENAI_API_KEY"]},
14)
15
16# Wait until running
17client.wait_for_sandbox(task_id=task_id, timeout=60)
18
19sandbox = client.get_sandbox(task_id)
20print(sandbox.sandbox_url)

REST API

You can always use the raw REST API directly. All endpoints are documented in the API Reference.

$# Base URL
$https://api.modbox.run
$
$# Every request needs:
$Authorization: Bearer YOUR_TOKEN
$Content-Type: application/json # for POST/PUT requests
$X-Workspace-Id: your-workspace-uuid # optional, for workspace-scoped resources

All SDKs are auto-generated from the OpenAPI spec using Fern. They are always in sync with the latest API version.