---
title: "Update network policy"
method: POST
path: "/v2/sandboxes/sessions/{sessionId}/network-policy"
tags: ["sandboxes"]
---

# Update network policy

`POST /v2/sandboxes/sessions/{sessionId}/network-policy`

Replaces the network access policy of a running session. Use this to control which external hosts the session can communicate with. This is a full replacement. Any previously configured network rules will be overwritten.

## Path parameters

- `sessionId` string, required — The unique identifier of the session to update the network policy for.

## Query parameters

- `teamId` string
- `slug` string

## Request body

- union
  - object — Network access policy for the sandbox.\n Controls which external hosts the sandbox can communicate with.\n Use \"allow-all\" mode to allow all traffic, \"deny-all\" to block all traffic or \"custom\" to provide specific rules.
    - `mode` 'allow-all' | 'deny-all' | 'custom' | 'default-allow' | 'default-deny', required — The network access policy mode. Use \"allow-all\" to permit all outbound traffic. Use \"deny-all\" to block all outbound traffic. Use \"custom\" to specify explicit allow/deny rules.
    - `allowedDomains` string[] — List of domain names the sandbox is allowed to connect to. Only applies when mode is \"custom\". Supports wildcard patterns (e.g., \"*.example.com\" matches all subdomains).
    - `allowedCIDRs` string[] — List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.
    - `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` object[] — HTTP header injection rules for outgoing requests matching specific domains. Traffic to matching domains will be intercepted instead of proxied through encrypted connections.
      - `domain` string, required — The domain (or pattern) of requests to add headers for. Supports wildcards like *.example.com.
      - `headers` object, required — HTTP headers to inject into requests for this domain. Existing headers with the same name will be overridden.
      - `match` object — Optional L7 match. When provided, the injection rule only applies to requests that satisfy every specified dimension. When multiple injection rules target the same domain they are evaluated in order and the first match wins; a rule without `match` matches any request and shadows later rules for the same domain.
        - `path` object — Match on the request path. Comparison is case-sensitive.
          - `exact` string — Match the value exactly. Case-sensitive for paths, header values, and methods; case-insensitive for domains and header keys.
          - `startsWith` string — Match values that start with the given prefix.
        - `method` string[] — HTTP methods to match. Any single match succeeds (OR semantics).
        - `queryString` object[] — Query-string entry matchers. Multiple entries are ANDed. Query parameter names and values are both compared case-sensitively (RFC 3986). When a request has multiple values for the same key, any matching value satisfies the matcher.
          - `key` object — Matcher for the entry key (header name or query key).
            - `exact` string — Match the value exactly. Case-sensitive for paths, header values, and methods; case-insensitive for domains and header keys.
            - `startsWith` string — Match values that start with the given prefix.
          - `value` object — Matcher for the entry value.
            - `exact` string — Match the value exactly. Case-sensitive for paths, header values, and methods; case-insensitive for domains and header keys.
            - `startsWith` string — Match values that start with the given prefix.
        - `headers` object[] — Header matchers. Multiple entries are ANDed. Header names are compared case-insensitively (RFC 9110); header values are compared case-sensitively. When a request has multiple values for the same header, any matching value satisfies the matcher.
          - `key` object — Matcher for the entry key (header name or query key).
            - `exact` string — Match the value exactly. Case-sensitive for paths, header values, and methods; case-insensitive for domains and header keys.
            - `startsWith` string — Match values that start with the given prefix.
          - `value` object — Matcher for the entry value.
            - `exact` string — Match the value exactly. Case-sensitive for paths, header values, and methods; case-insensitive for domains and header keys.
            - `startsWith` string — Match values that start with the given prefix.
  - object
    - `allow` union
      - string[]
      - object — A rule applied to requests matching a domain in the network policy. Only one of `transform` or `forwardURL` can be specified per rule.
    - `subnets` object
      - `allow` string[]
      - `deny` string[]

## Response `200`

The session network policy was updated successfully.

- object
  - `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.
- `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/b4d86a3e3479/schema)
