Isorun Docs

API Reference

REST API for sandbox lifecycle, execution, files, snapshots, fork, hibernate, audit, and network policy.

Full spec: openapi.yaml (OpenAPI 3.1)

Base URL: https://run-<region>.isorun.ai (the region segment matches the one embedded in your API key).

All /v1/* endpoints require Authorization: Bearer <api-key>.

The base URL's region segment is fixed by your API key, isorun_live_us_... resolves to https://run-us.isorun.ai. You don't choose it per request.

Create a sandbox

Terminal
curl -X POST https://run-us.isorun.ai/v1/runs \
  -H "Authorization: Bearer $ISORUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image": "python:3.12-slim", "vcpus": 1, "mem_mib": 1024}'
JSON
{
  "id": "run78cbccbab85efc28",
  "status": "running",
  "image": "python:3.12-slim",
  "region": "us",
  "vcpus": 1,
  "mem_mib": 1024,
  "disk_mib": 4096,
  "create_ms": 9,
  "created_at": "2026-05-26T12:00:00Z"
}

Optional fields: disk_mib, timeout (auto-destroy seconds), network: { allow, deny }, network_profile, credentials.

Execute a command

Terminal
curl -X POST https://run-us.isorun.ai/v1/runs/run78cbccbab85efc28/exec \
  -H "Authorization: Bearer $ISORUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command": "python3 -c \"print(1+1)\"", "timeout": 30}'
JSON
{
  "exit_code": 0,
  "stdout": "2\n",
  "stderr": ""
}

Destroy a sandbox

Terminal
curl -X DELETE https://run-us.isorun.ai/v1/runs/run78cbccbab85efc28 \
  -H "Authorization: Bearer $ISORUN_API_KEY"
JSON
{
  "status": "destroyed",
  "cpu_ms": 48,
  "mem_peak_bytes": 48926720,
  "uptime_ms": 59000,
  "cost_cents": 0.0007
}

All endpoints

MethodPathDescription
GET/healthzHealth check (no auth)
POST/v1/runsCreate a sandbox
GET/v1/runsList active sandboxes
GET/v1/runs/{id}Get sandbox status
DELETE/v1/runs/{id}Destroy a sandbox
PATCH/v1/runs/{id}Reset the auto-destroy timer
POST/v1/runs/{id}/execExecute command (JSON response)
POST/v1/runs/{id}/exec/streamExecute command (SSE stream)
GET/v1/runs/{id}/terminal?token=KEYWebSocket PTY terminal
GET/v1/runs/{id}/shellWebSocket long-lived bash session
POST/v1/runs/{id}/snapshotSnapshot a running sandbox
POST/v1/runs/restoreRestore from snapshot
POST/v1/runs/{id}/forkFork the running sandbox
POST/v1/runs/{id}/hibernatePause + persist to disk
POST/v1/runs/{id}/resumeRestore a hibernated sandbox
POST/v1/runs/{id}/files/upload?path=PATHUpload file
GET/v1/runs/{id}/files/download?path=PATHDownload file
GET/v1/runs/{id}/files?path=PATHList directory
GET/v1/runs/{id}/auditNDJSON audit trail
GET/v1/runs/{id}/proxy/{port}/*Reverse-proxy a guest port
GET/v1/snapshotsList snapshots
DELETE/v1/snapshots/{id}Delete a snapshot
GET/v1/runs/historyPast (destroyed) sandboxes
GET/v1/usageUsage / cost rollup
GET/v1/network-profilesList named egress profiles
GET/v1/imagesList supported OCI images
POST/v1/images/buildBuild an image from a registry

See the OpenAPI spec for request/response schemas, error codes, and parameter constraints.

Next steps

On this page