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>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<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. Replaces all existing rules when provided.
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?
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>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}{
"code": 123,
"message": "<string>"
}