Snapshots
AuthorizationBearer <token>Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).
Scope: write:snapshots
id*stringexternal VM id (base58 body with optional region tag, or a bare UUID)
application/json- body
name*stringSnapshot accepted; capture job queued on the VM's runner
application/json- response
Snapshot-capture response: the pending snapshot + its capture job.
(Fields are declared alphabetically to match the former json! response —
serde_json without preserve_order serializes maps in key order.)
job_id*stringuuidkind*stringThe captured kind: full (linux) or checkpoint (gpu).
name*stringsnapshot_id*stringThe snapshot's typed id (snap_…), the same spelling GET /snapshots
lists and POST /sandboxes/from-snapshot accepts.
status*stringAlways pending — capture runs asynchronously on the VM's runner.
vm_id*stringExternal id (external VM id (base58 body with optional region tag, or a bare UUID)) of the source VM.
curl -X POST 'https://example.com/sandboxes/string/snapshots' \ -H 'Content-Type: application/json' \ -d '{ "name": "string"}'{ "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f", "kind": "string", "name": "string", "snapshot_id": "string", "status": "string", "vm_id": "string"}AuthorizationBearer <token>Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).
Scope: read:snapshots
limit?integerint64cursor?stringname?stringOne page of the project's snapshots
application/json- response
GET /snapshots response: one page of snapshots. (next_cursor precedes
snapshots to match the former json! response's alphabetical key order.)
next_cursor?|Opaque continuation token; null on the last page.
snapshots*array<>curl -X GET 'https://example.com/snapshots'{ "next_cursor": "string", "snapshots": [ { "artifact_ref": "string", "available_in": [ "string" ], "bytes": 0, "class": "string", "cpu_marker": "string", "error": "string", "fc_version": "string", "id": "string", "kind": "string", "mem_bytes": 0, "name": "string", "parent_manifest": "string", "region": "string", "runner_id": "string", "status": "string", "vm_id": "9a025db5-7896-46f6-883f-28fe3549d7b4", "created_at": "2019-08-24T14:15:22Z", "cursor": "string" } ]}AuthorizationBearer <token>Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).
Scope: read:snapshots
id*stringsnapshot id (snap_…; bare UUID also accepted during the transition)
wait?stringBlock until the snapshot reaches this status (ready) or a terminal
state. Absent = return immediately.
timeout_ms?integerint640 <= valueThe snapshot
application/json- response
artifact_ref?string|nullavailable_in*array<string>bytes?|int64class*stringcpu_marker?string|nullerror?string|nullfc_version?string|nullid*stringkind*stringmem_bytes?|int64name*stringparent_manifest?string|nullregion*stringrunner_id?string|nullstatus*stringvm_id?|uuidcurl -X GET 'https://example.com/snapshots/string'{ "artifact_ref": "string", "available_in": [ "string" ], "bytes": 0, "class": "string", "cpu_marker": "string", "error": "string", "fc_version": "string", "id": "string", "kind": "string", "mem_bytes": 0, "name": "string", "parent_manifest": "string", "region": "string", "runner_id": "string", "status": "string", "vm_id": "9a025db5-7896-46f6-883f-28fe3549d7b4"}AuthorizationBearer <token>Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).
Scope: delete:snapshots
id*stringsnapshot id (snap_…; bare UUID also accepted during the transition)
Snapshot deleted
application/json- response
DELETE /snapshots/:id response.
snapshot_id*stringstatus*stringAlways deleted.
curl -X DELETE 'https://example.com/snapshots/string'{ "snapshot_id": "string", "status": "string"}