curl --request PUT \
--url https://api.e2b.app/sandboxes/{sandboxID}/network \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"allowOut": [
"<string>"
],
"denyOut": [
"<string>"
],
"egressProxy": {
"address": "<string>",
"username": "<string>",
"password": "<string>"
},
"rules": {},
"allow_internet_access": true
}
'import requests
url = "https://api.e2b.app/sandboxes/{sandboxID}/network"
payload = {
"allowOut": ["<string>"],
"denyOut": ["<string>"],
"egressProxy": {
"address": "<string>",
"username": "<string>",
"password": "<string>"
},
"rules": {},
"allow_internet_access": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
allowOut: ['<string>'],
denyOut: ['<string>'],
egressProxy: {address: '<string>', username: '<string>', password: '<string>'},
rules: {},
allow_internet_access: true
})
};
fetch('https://api.e2b.app/sandboxes/{sandboxID}/network', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.e2b.app/sandboxes/{sandboxID}/network",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'allowOut' => [
'<string>'
],
'denyOut' => [
'<string>'
],
'egressProxy' => [
'address' => '<string>',
'username' => '<string>',
'password' => '<string>'
],
'rules' => [
],
'allow_internet_access' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.e2b.app/sandboxes/{sandboxID}/network"
payload := strings.NewReader("{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.e2b.app/sandboxes/{sandboxID}/network")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.e2b.app/sandboxes/{sandboxID}/network")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}Update sandbox network
Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
curl --request PUT \
--url https://api.e2b.app/sandboxes/{sandboxID}/network \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"allowOut": [
"<string>"
],
"denyOut": [
"<string>"
],
"egressProxy": {
"address": "<string>",
"username": "<string>",
"password": "<string>"
},
"rules": {},
"allow_internet_access": true
}
'import requests
url = "https://api.e2b.app/sandboxes/{sandboxID}/network"
payload = {
"allowOut": ["<string>"],
"denyOut": ["<string>"],
"egressProxy": {
"address": "<string>",
"username": "<string>",
"password": "<string>"
},
"rules": {},
"allow_internet_access": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
allowOut: ['<string>'],
denyOut: ['<string>'],
egressProxy: {address: '<string>', username: '<string>', password: '<string>'},
rules: {},
allow_internet_access: true
})
};
fetch('https://api.e2b.app/sandboxes/{sandboxID}/network', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.e2b.app/sandboxes/{sandboxID}/network",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'allowOut' => [
'<string>'
],
'denyOut' => [
'<string>'
],
'egressProxy' => [
'address' => '<string>',
'username' => '<string>',
'password' => '<string>'
],
'rules' => [
],
'allow_internet_access' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.e2b.app/sandboxes/{sandboxID}/network"
payload := strings.NewReader("{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.e2b.app/sandboxes/{sandboxID}/network")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.e2b.app/sandboxes/{sandboxID}/network")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"allowOut\": [\n \"<string>\"\n ],\n \"denyOut\": [\n \"<string>\"\n ],\n \"egressProxy\": {\n \"address\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\"\n },\n \"rules\": {},\n \"allow_internet_access\": true\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}{
"code": 123,
"message": "<string>",
"error_code": "<string>"
}Authorizations
Path Parameters
Body
Network configuration update for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting a field clears it.
List of allowed destinations for egress traffic. Each entry can be a CIDR block (e.g. "8.8.8.8/32"), a bare IP address (e.g. "8.8.8.8"), or a domain name (e.g. "example.com", "*.example.com"). Allowed entries always take precedence over denied entries.
List of denied CIDR blocks or IP addresses for egress traffic. Domain names are not supported for deny rules.
SOCKS5 proxy for sandbox egress. Outbound TCP is tunneled through the proxy after allow/deny filtering; the sandbox is unaware. Domain-matched flows use remote DNS (ATYP=domain).
Show child attributes
Show child attributes
Per-domain transform rules applied to matching outbound HTTPS requests. Replaces all existing rules when provided. Keys may be exact DNS names or a single leading wildcard (for example, ".example.com"), and are normalized to lowercase on write. Wildcards match subdomains at any depth but not the apex domain; a bare "" is invalid. Exact rules take precedence, followed by the longest matching wildcard suffix, and matching rule sets are not merged. Broad wildcards such as "*.com" are allowed and may expose transformed credentials to every matching destination the sandbox contacts. Rules do not grant network access; configure allowOut separately to permit the destination.
Show child attributes
Show child attributes
Allow sandbox to access the internet. When set to false, it behaves the same as specifying denyOut to 0.0.0.0/0 in the network config.
Response
Successfully updated the sandbox network configuration
Was this page helpful?