Sign Up

Snapshots

POST
/sandboxes/{id}/snapshots

Authorization

headerAuthorizationBearer <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

Path Parameters

id*string

external VM id (base58 body with optional region tag, or a bare UUID)

Request Body

application/json
  1. body
name*string

Response Body

Snapshot accepted; capture job queued on the VM's runner

application/json
  1. 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*string
Formatuuid
kind*string

The captured kind: full (linux) or checkpoint (gpu).

name*string
snapshot_id*string

The snapshot's typed id (snap_…), the same spelling GET /snapshots lists and POST /sandboxes/from-snapshot accepts.

status*string

Always pending — capture runs asynchronously on the VM's runner.

vm_id*string

External 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"}
GET
/snapshots

Authorization

headerAuthorizationBearer <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

Query Parameters

limit?integer
Formatint64
cursor?string
name?string

Response Body

One page of the project's snapshots

application/json
  1. 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"    }  ]}
GET
/snapshots/{id}

Authorization

headerAuthorizationBearer <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

Path Parameters

id*string

snapshot id (snap_…; bare UUID also accepted during the transition)

Query Parameters

wait?string

Block until the snapshot reaches this status (ready) or a terminal state. Absent = return immediately.

timeout_ms?integer
Formatint64
Range0 <= value

Response Body

The snapshot

application/json
  1. response
artifact_ref?string|null
available_in*array<string>
bytes?|
Formatint64
class*string
cpu_marker?string|null
error?string|null
fc_version?string|null
id*string
kind*string
mem_bytes?|
Formatint64
name*string
parent_manifest?string|null
region*string
runner_id?string|null
status*string
vm_id?|
Formatuuid
curl -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"}

DELETE /snapshots/{id}

DELETE
/snapshots/{id}

Authorization

headerAuthorizationBearer <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

Path Parameters

id*string

snapshot id (snap_…; bare UUID also accepted during the transition)

Response Body

Snapshot deleted

application/json
  1. response

DELETE /snapshots/:id response.

snapshot_id*string
status*string

Always deleted.

curl -X DELETE 'https://example.com/snapshots/string'
{  "snapshot_id": "string",  "status": "string"}