NodeOps
UK

REST API Overview

The CreateOS Sandbox REST API lets you create, run, and manage microVMs programmatically.

At a glance

  • Base URL: https://api.sb.createos.sh
  • Auth: X-Api-Key: <token> header — get a token
  • Response envelope: JSend — {"status": "...", "data": ...}

Base URL

https://api.sb.createos.sh

All paths are versioned under /v1.

Authentication

Every request must carry one of these headers:

HeaderDescription
X-Api-KeyPer-user API key. Sandbox ownership is scoped to the authenticated user — GET /v1/sandboxes returns only the caller's VMs.
X-Auth-TokenOpaque session token validated against the users service.
X-Access-TokenOAuth-style access token.

Get your API key at https://createos.nodeops.network/profile.

Bash
1curl https://api.sb.createos.sh/v1/whoami \
2 -H "X-Api-Key: $CREATEOS_API_KEY"

Response Envelope (JSend)

Every response wraps its payload in a JSend envelope.

Success (2xx)

JSON
1{
2 "status": "success",
3 "data": { ... }
4}

Fail (4xx) — validation or not-found

JSON
1{
2 "status": "fail",
3 "data": {
4 "shape": "unknown shape: s-bad"
5 }
6}

Error (5xx) — server fault

JSON
1{
2 "status": "error",
3 "message": "internal error",
4 "code": 500
5}

Pagination

All list endpoints accept limit and offset query parameters. Paginated responses nest items under data.data[] alongside a pagination block:

JSON
1{
2 "status": "success",
3 "data": {
4 "data": [ { ... }, { ... } ],
5 "pagination": {
6 "total": 42,
7 "limit": 50,
8 "offset": 0,
9 "count": 42
10 }
11 }
12}
FieldDescription
totalTotal rows matching the query, ignoring limit/offset
limitLimit applied by the server
offsetOffset applied by the server
countItems in this response (≤ limit)

Default limit is 50; maximum is 500.

ID Formats

ResourceFormatExample
Sandboxsb_<ulid>sb_01K…
Networknet-<ulid>net-01k2x…
Diskdisk_<ulid>disk_01KSHT…
Templatetpl_<ulid>tpl_01K…

Networks and disks can also be referenced by their user-facing name where the spec notes it.

Content Types

DirectionContent-Type
JSON request bodiesapplication/json
File upload bodyapplication/octet-stream
File download responseapplication/octet-stream
Streaming exec responseapplication/x-ndjson

Streaming (NDJSON)

The exec endpoint supports a streaming mode (?stream=true). The response is HTTP/1.1 chunked transfer with Content-Type: application/x-ndjson — one JSON object per line. The template-logs endpoint also streams NDJSON.

Each ExecStreamEvent line is one of:

FrameShape
stdout chunk{"stdout": "…"}
stderr chunk{"stderr": "…"}
heartbeat{"hb": true} (every 5 s; clients ignore)
terminal{"exit_code": N} — last frame
agent error{"error": "…"}

Standard HTTP Status Codes

CodeMeaning
200Success
202Accepted — async operation in progress (poll via GET)
400Bad request / validation error
401Missing or invalid auth
402Payment required / quota exceeded
404Resource not found
409Conflict (e.g. sandbox not in correct state)
429Rate limited
503Service unavailable / no host capacity

Async operations (pause, resume, fork) return 202 with an X-Poll-After header (suggested seconds before next poll). Poll GET /v1/sandboxes/{id} until status reaches the expected terminal value.

API Sections

100,000+ Builders. One Workspace.

Get product updates, builder stories, and early access to features that help you ship faster.

CreateOS is a unified intelligent workspace where ideas move seamlessly from concept to live deployment, eliminating context-switching across tools, infrastructure, and workflows with the opportunity to monetize ideas immediately on the CreateOS Marketplace.