---
title: "Create a snapshot"
method: POST
path: "/v2/sandboxes/sessions/{sessionId}/snapshot"
tags: ["sandboxes"]
---

# Create a snapshot

`POST /v2/sandboxes/sessions/{sessionId}/snapshot`

Creates a point-in-time snapshot of a running session's filesystem. Snapshots can be used to quickly restore a session to a previous state or to create new sessions with pre-configured environments. The session must be running and able to accept commands for a snapshot to be created. The session will be terminated after the snapshot is created.

## Path parameters

- `sessionId` string, required — The unique identifier of the session to snapshot.

## Query parameters

- `teamId` string
- `slug` string

## Request body

- object
  - `expiration` union — The number of milliseconds after which the snapshot will expire and be deleted. Use 0 for no expiration.
    - unknown
    - integer

## Response `201`

- object
  - `snapshot` Snapshot, required — This object contains information related to a Snapshot of a Vercel Sandbox session (v2 API).
    - `id` string, required — The unique identifier of the snapshot.
    - `sourceSessionId` string, required — The unique identifier of the session from which the snapshot was created.
    - `region` string — The region where the snapshot is stored.
    - `status` 'created' | 'deleted' | 'failed', required — The status of the snapshot.
    - `sizeBytes` number, required — The size of the snapshot in bytes.
    - `expiresAt` number — The time when the snapshot will expire, in milliseconds since the epoch. If not set, the snapshot does not have any expiration.
    - `createdAt` number, required — The time when the snapshot was created, in milliseconds since the epoch.
    - `updatedAt` number, required — The last time the snapshot was updated, in milliseconds since the epoch.
    - `lastUsedAt` number, required — The last time the snapshot was used (e.g. to resume or create a sandbox), in milliseconds since the epoch. Falls back to `createdAt` for older snapshots that predate this field.
    - `creationMethod` 'automatic' | 'manual' — The method used to create the snapshot.
    - `parentId` string — The unique identifier of the parent snapshot, if this snapshot was created from another snapshot.
  - `session` Session, required — This object contains information related to a Vercel Sandbox Session. v2 endpoints return "session" instead of "sandbox" as the response wrapper key.
    - `sourceSandboxName` string, required — The name of the source sandbox.
    - `projectId` string, required — The unique identifier of the project associated with this session.
    - `id` string, required — The unique identifier of the sandbox.
    - `memory` number, required — Memory allocated to this sandbox in MB.
    - `vcpus` number, required — Number of vCPUs allocated to this sandbox.
    - `region` string, required — The region where the sandbox is hosted.
    - `runtime` string, required — The runtime of the sandbox.
    - `timeout` number, required — The maximum amount of time the sandbox will run for in milliseconds.
    - `status` 'aborted' | 'failed' | 'pending' | 'running' | 'snapshotting' | 'stopped' | 'stopping', required — The status of the sandbox.
    - `requestedAt` number, required — The time when the sandbox was requested, in milliseconds since the epoch.
    - `startedAt` number — The time when the sandbox was started, in milliseconds since the epoch.
    - `cwd` string, required — The working directory of the sandbox.
    - `requestedStopAt` number — The time when the sandbox was requested to stop, in milliseconds since the epoch.
    - `stoppedAt` number — The time when the sandbox was stopped, in milliseconds since the epoch.
    - `abortedAt` number — The time when the sandbox was aborted, in milliseconds since the epoch.
    - `duration` number — The duration of the sandbox in milliseconds.
    - `sourceSnapshotId` string — The unique identifier of the snapshot associated with this sandbox, if any.
    - `snapshottedAt` number — The time when a snapshot was requested, in milliseconds since the epoch.
    - `createdAt` number, required — The time when the sandbox was created, in milliseconds since the epoch.
    - `updatedAt` number, required — The last time the sandbox was updated, in milliseconds since the epoch.
    - `networkPolicy` SandboxNetworkPolicy — The network policy applied to this sandbox, if any.
      - `mode` 'allow-all' | 'custom' | 'deny-all', required — The network policy mode. - 'allow-all': All traffic is allowed. - 'deny-all': All traffic is blocked. - 'custom': Traffic is controlled by explicit allow/deny rules.
      - `allowedDomains` string[] — List of domain names the sandbox is allowed to connect to. Supports wildcard patterns (e.g., "*.vercel.com" matches all subdomains).
      - `allowedCIDRs` string[] — List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to.
      - `deniedCIDRs` string[] — List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.
      - `injectionRules` SandboxInjectionRule[] — HTTP header injection rules for outgoing requests matching specific domains.
        - `domain` string, required — The domain (or pattern) that this injection rule applies to. Supports wildcards like *.vercel.com.
        - `headerNames` string[] — The names of HTTP headers that have value that will be injected for requests to this domain.
    - `activeCpuDurationMs` number — The amount of CPU time the sandbox consumed, if available, in milliseconds. This value is only available once the sandbox is stopped, and only if it stopped successfully.
    - `networkTransfer` object — The quantity of data transfered to and from the sandbox, in bytes. This value is only available once the sandbox is stopped, and only if it stopped successfully.
      - `ingress` number, required
      - `egress` number, required

## Other responses

- `400` — One of the provided values in the request body is invalid. One of the provided values in the request query is invalid.
- `401` — The request is not authorized.
- `402` — The account is missing a payment so payment method must be updated
- `403` — You do not have permission to access this resource.
- `404`
- `410`
- `422`
- `429`
- `500`

---

[API](https://skmtc.net/vercel/apis/api.md) · [All operations](https://skmtc.net/vercel/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vercel/api/versions/61d1ba3f6dac/schema)
