> For the complete documentation index, see [llms.txt](https://docs.ai.neevcloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ai.neevcloud.com/api-reference/ai-agent/snapshots.md).

# Snapshots

## List snapshots taken from a sandbox

> Returns a paginated list of snapshots taken from this sandbox.

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SandboxID":{"name":"sandbox_id","in":"path","required":true,"description":"Sandbox UUID.","schema":{"type":"string","format":"uuid"}},"Page":{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},"Limit":{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}},"schemas":{"SnapshotListResponse":{"type":"object","required":["items","total","page","limit"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Snapshot"}},"total":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"}}},"Snapshot":{"type":"object","required":["id","sandbox_id","org_id","project_id","status","include_memory","source_region","created_at","updated_at"],"description":"Metadata for a sandbox memory/filesystem snapshot.","properties":{"id":{"type":"string","format":"uuid","description":"Snapshot UUID."},"sandbox_id":{"type":"string","format":"uuid","description":"UUID of the source sandbox."},"org_id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string","description":"Optional customer-supplied name."},"status":{"$ref":"#/components/schemas/SnapshotStatus"},"include_memory":{"type":"boolean","description":"True = FS+memory captured; false = FS only."},"source_region":{"type":"string","description":"DP cluster slug where the blob lives."},"size_bytes":{"type":"integer","format":"int64","nullable":true,"description":"Uncompressed blob size. Null until status=Ready."},"error_message":{"type":"string","nullable":true,"description":"Failure detail. Null unless status=Failed."},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"When the platform will GC this snapshot. Null = no expiry."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"SnapshotStatus":{"type":"string","description":"Lifecycle phase of a snapshot.","enum":["Pending","Running","Ready","Failed"]},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/sandboxes/{sandbox_id}/snapshots":{"get":{"tags":["Snapshots"],"summary":"List snapshots taken from a sandbox","description":"Returns a paginated list of snapshots taken from this sandbox.","operationId":"listSandboxSnapshots","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SandboxID"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Paginated list of snapshots","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Create a snapshot of a sandbox

> Captures the full sandbox state (FS + process memory by default).\
> Returns immediately with \`status: Pending\`; poll \`GET /snapshots/{snapshot\_id}\`\
> until \`status: Ready\`.<br>

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SandboxID":{"name":"sandbox_id","in":"path","required":true,"description":"Sandbox UUID.","schema":{"type":"string","format":"uuid"}}},"schemas":{"CreateSnapshotRequest":{"type":"object","description":"Optional body for POST .../snapshots.","properties":{"name":{"type":"string","description":"Optional human-readable name for this snapshot."},"include_memory":{"type":"boolean","default":false,"description":"Capture process memory in addition to filesystem. Currently forced to false (RootFS only); memory capture is not yet supported."},"retain_for":{"type":"string","description":"Duration string (e.g. \"720h\" = 30 days) controlling snapshot TTL.\n\"0\" or omitted means no expiry.\n"}}},"Snapshot":{"type":"object","required":["id","sandbox_id","org_id","project_id","status","include_memory","source_region","created_at","updated_at"],"description":"Metadata for a sandbox memory/filesystem snapshot.","properties":{"id":{"type":"string","format":"uuid","description":"Snapshot UUID."},"sandbox_id":{"type":"string","format":"uuid","description":"UUID of the source sandbox."},"org_id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string","description":"Optional customer-supplied name."},"status":{"$ref":"#/components/schemas/SnapshotStatus"},"include_memory":{"type":"boolean","description":"True = FS+memory captured; false = FS only."},"source_region":{"type":"string","description":"DP cluster slug where the blob lives."},"size_bytes":{"type":"integer","format":"int64","nullable":true,"description":"Uncompressed blob size. Null until status=Ready."},"error_message":{"type":"string","nullable":true,"description":"Failure detail. Null unless status=Failed."},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"When the platform will GC this snapshot. Null = no expiry."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"SnapshotStatus":{"type":"string","description":"Lifecycle phase of a snapshot.","enum":["Pending","Running","Ready","Failed"]},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/sandboxes/{sandbox_id}/snapshots":{"post":{"tags":["Snapshots"],"summary":"Create a snapshot of a sandbox","description":"Captures the full sandbox state (FS + process memory by default).\nReturns immediately with `status: Pending`; poll `GET /snapshots/{snapshot_id}`\nuntil `status: Ready`.\n","operationId":"createSandboxSnapshot","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SandboxID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSnapshotRequest"}}}},"responses":{"202":{"description":"Snapshot accepted (status=Pending)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snapshot"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Get snapshot metadata

> Returns snapshot metadata including current status and storage URI once ready.

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SnapshotID":{"name":"snapshot_id","in":"path","required":true,"description":"Snapshot UUID.","schema":{"type":"string","format":"uuid"}}},"schemas":{"Snapshot":{"type":"object","required":["id","sandbox_id","org_id","project_id","status","include_memory","source_region","created_at","updated_at"],"description":"Metadata for a sandbox memory/filesystem snapshot.","properties":{"id":{"type":"string","format":"uuid","description":"Snapshot UUID."},"sandbox_id":{"type":"string","format":"uuid","description":"UUID of the source sandbox."},"org_id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string","description":"Optional customer-supplied name."},"status":{"$ref":"#/components/schemas/SnapshotStatus"},"include_memory":{"type":"boolean","description":"True = FS+memory captured; false = FS only."},"source_region":{"type":"string","description":"DP cluster slug where the blob lives."},"size_bytes":{"type":"integer","format":"int64","nullable":true,"description":"Uncompressed blob size. Null until status=Ready."},"error_message":{"type":"string","nullable":true,"description":"Failure detail. Null unless status=Failed."},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"When the platform will GC this snapshot. Null = no expiry."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"SnapshotStatus":{"type":"string","description":"Lifecycle phase of a snapshot.","enum":["Pending","Running","Ready","Failed"]},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/snapshots/{snapshot_id}":{"get":{"tags":["Snapshots"],"summary":"Get snapshot metadata","description":"Returns snapshot metadata including current status and storage URI once ready.","operationId":"getSnapshot","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SnapshotID"}],"responses":{"200":{"description":"Snapshot details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snapshot"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Delete a snapshot

> Deletes the snapshot metadata row. Blob GC is handled asynchronously by the platform.

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SnapshotID":{"name":"snapshot_id","in":"path","required":true,"description":"Snapshot UUID.","schema":{"type":"string","format":"uuid"}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/snapshots/{snapshot_id}":{"delete":{"tags":["Snapshots"],"summary":"Delete a snapshot","description":"Deletes the snapshot metadata row. Blob GC is handled asynchronously by the platform.","operationId":"deleteSnapshot","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SnapshotID"}],"responses":{"204":{"description":"Snapshot deleted"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Restore a sandbox from a snapshot

> Same-sandbox rollback. Stops the sandbox's processes, replaces FS+memory\
> with the snapshot's state, and restarts. The sandbox keeps its UUID,\
> name, and network identity. Destructive — current state is overwritten\
> and not auto-archived.<br>

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SandboxID":{"name":"sandbox_id","in":"path","required":true,"description":"Sandbox UUID.","schema":{"type":"string","format":"uuid"}}},"schemas":{"RestoreSandboxRequest":{"type":"object","required":["snapshot_id"],"description":"Body for POST .../sandboxes/{id}/restore.","properties":{"snapshot_id":{"type":"string","format":"uuid","description":"UUID of the snapshot to restore from. Must belong to this sandbox\nor another sandbox in the same project.\n"}}},"Sandbox":{"type":"object","required":["id","org_id","project_id","name","region","image","phase","replicas","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"org_id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string"},"region":{"type":"string","description":"Region where the sandbox runs."},"image":{"type":"string"},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/SandboxResources"},"phase":{"$ref":"#/components/schemas/SandboxPhase"},"connect_url":{"type":"string","nullable":true,"description":"Public URL the SDK calls (API key + X-Sandbox-Id). null when not configured."},"replicas":{"type":"integer","minimum":0,"maximum":1,"description":"0 = paused, 1 = running."},"egress":{"allOf":[{"$ref":"#/components/schemas/SandboxEgressConfig"}],"nullable":true},"sandbox_template_id":{"type":"string","nullable":true,"description":"Catalogue template id from create when one was provided; null otherwise."},"created_by":{"type":"string","nullable":true,"description":"Identity that created the sandbox (user id, or API key id for key-authenticated calls); null for sandboxes created before this was recorded."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"EnvVar":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"}}},"SandboxResources":{"type":"object","description":"Sandbox compute size. Omitted fields use the platform default.\n","properties":{"cpu":{"type":"number","minimum":0.5,"maximum":8,"multipleOf":0.5,"description":"vCPUs. Multiples of 0.5, from 0.5 to 8."},"memory_gb":{"type":"integer","minimum":1,"maximum":16,"description":"Memory in GB, from 1 to 16."},"disk_gb":{"type":"integer","minimum":10,"maximum":100,"multipleOf":10,"description":"Ephemeral disk in GB. Multiples of 10, from 10 to 100."}}},"SandboxPhase":{"type":"string","enum":["Pending","Ready","NotReady","Unknown","Paused"]},"SandboxEgressConfig":{"type":"object","description":"Network egress configuration rules for the sandbox.","additionalProperties":false,"properties":{"mode":{"type":"string","enum":["deny_all","allow_list"],"default":"deny_all","description":"The egress mode. deny_all blocks all egress. allow_list restricts egress to the specified allowed destinations."},"allow_internet":{"type":"boolean","description":"Escape hatch: if true, allows 0.0.0.0/0 (the entire internet). Strictly audit-logged.","default":false},"allow":{"type":"array","description":"List of egress rules for host/IP destinations to allow.","items":{"$ref":"#/components/schemas/SandboxEgressRule"}}}},"SandboxEgressRule":{"type":"object","description":"Individual egress rule specifying allowed destination host.","additionalProperties":false,"required":["host"],"properties":{"host":{"type":"string","description":"IP address, CIDR block, or domain name"},"ports":{"type":"array","items":{"type":"integer"}},"protocol":{"type":"string","enum":["TCP","UDP"]}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/sandboxes/{sandbox_id}/restore":{"post":{"tags":["Snapshots"],"summary":"Restore a sandbox from a snapshot","description":"Same-sandbox rollback. Stops the sandbox's processes, replaces FS+memory\nwith the snapshot's state, and restarts. The sandbox keeps its UUID,\nname, and network identity. Destructive — current state is overwritten\nand not auto-archived.\n","operationId":"restoreSandbox","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SandboxID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreSandboxRequest"}}}},"responses":{"200":{"description":"Sandbox restore accepted; check `phase` for progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sandbox"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Fork a sandbox into a new sandbox

> Atomically snapshots the current sandbox state and creates a new sandbox\
> from that snapshot. The original sandbox keeps running. Returns the new\
> sandbox object.<br>

```json
{"openapi":"3.0.3","info":{"title":"AI Agent Service API","version":"0.2.0"},"servers":[{"url":"https://api.ai.neevcloud.com/agent","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"OrgID":{"name":"org_id","in":"path","required":true,"description":"Organization identifier.","schema":{"type":"string"}},"ProjectID":{"name":"project_id","in":"path","required":true,"description":"Project identifier.","schema":{"type":"string"}},"SandboxID":{"name":"sandbox_id","in":"path","required":true,"description":"Sandbox UUID.","schema":{"type":"string","format":"uuid"}}},"schemas":{"ForkSandboxRequest":{"type":"object","required":["name"],"description":"Body for POST .../sandboxes/{id}/fork.","properties":{"name":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Name for the new forked sandbox. Must be unique within the project."}}},"Sandbox":{"type":"object","required":["id","org_id","project_id","name","region","image","phase","replicas","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"org_id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string"},"region":{"type":"string","description":"Region where the sandbox runs."},"image":{"type":"string"},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/SandboxResources"},"phase":{"$ref":"#/components/schemas/SandboxPhase"},"connect_url":{"type":"string","nullable":true,"description":"Public URL the SDK calls (API key + X-Sandbox-Id). null when not configured."},"replicas":{"type":"integer","minimum":0,"maximum":1,"description":"0 = paused, 1 = running."},"egress":{"allOf":[{"$ref":"#/components/schemas/SandboxEgressConfig"}],"nullable":true},"sandbox_template_id":{"type":"string","nullable":true,"description":"Catalogue template id from create when one was provided; null otherwise."},"created_by":{"type":"string","nullable":true,"description":"Identity that created the sandbox (user id, or API key id for key-authenticated calls); null for sandboxes created before this was recorded."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"EnvVar":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"}}},"SandboxResources":{"type":"object","description":"Sandbox compute size. Omitted fields use the platform default.\n","properties":{"cpu":{"type":"number","minimum":0.5,"maximum":8,"multipleOf":0.5,"description":"vCPUs. Multiples of 0.5, from 0.5 to 8."},"memory_gb":{"type":"integer","minimum":1,"maximum":16,"description":"Memory in GB, from 1 to 16."},"disk_gb":{"type":"integer","minimum":10,"maximum":100,"multipleOf":10,"description":"Ephemeral disk in GB. Multiples of 10, from 10 to 100."}}},"SandboxPhase":{"type":"string","enum":["Pending","Ready","NotReady","Unknown","Paused"]},"SandboxEgressConfig":{"type":"object","description":"Network egress configuration rules for the sandbox.","additionalProperties":false,"properties":{"mode":{"type":"string","enum":["deny_all","allow_list"],"default":"deny_all","description":"The egress mode. deny_all blocks all egress. allow_list restricts egress to the specified allowed destinations."},"allow_internet":{"type":"boolean","description":"Escape hatch: if true, allows 0.0.0.0/0 (the entire internet). Strictly audit-logged.","default":false},"allow":{"type":"array","description":"List of egress rules for host/IP destinations to allow.","items":{"$ref":"#/components/schemas/SandboxEgressRule"}}}},"SandboxEgressRule":{"type":"object","description":"Individual egress rule specifying allowed destination host.","additionalProperties":false,"required":["host"],"properties":{"host":{"type":"string","description":"IP address, CIDR block, or domain name"},"ports":{"type":"array","items":{"type":"integer"}},"protocol":{"type":"string","enum":["TCP","UDP"]}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Conflict":{"description":"Resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/api/v1beta1/orgs/{org_id}/projects/{project_id}/sandboxes/{sandbox_id}/fork":{"post":{"tags":["Snapshots"],"summary":"Fork a sandbox into a new sandbox","description":"Atomically snapshots the current sandbox state and creates a new sandbox\nfrom that snapshot. The original sandbox keeps running. Returns the new\nsandbox object.\n","operationId":"forkSandbox","parameters":[{"$ref":"#/components/parameters/OrgID"},{"$ref":"#/components/parameters/ProjectID"},{"$ref":"#/components/parameters/SandboxID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForkSandboxRequest"}}}},"responses":{"201":{"description":"New forked sandbox","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sandbox"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ai.neevcloud.com/api-reference/ai-agent/snapshots.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
