Skip to content

Networks API

All endpoints require a bearer token (a login JWT or an API key).

A network is a private, region-scoped network that lets your pods talk to each other on private IPs. Pods attach to a network from the pod side (at pod creation or from the pod's Networking tab), not from here. A pod created without a network gets an auto-created one, which shows up in this list.

The network object

json
{
  "id": "net_abc123",
  "name": "prod",
  "cidr": "10.20.0.0/24",
  "gateway": "10.20.0.1",
  "description": "Production network",
  "serverId": "srv_...",
  "status": "Active",
  "health": "Healthy",
  "createdAt": "2026-07-01T12:00:00Z",
  "updatedAt": "2026-07-01T12:00:30Z"
}
FieldMeaning
cidrThe private address range.
gatewayFirst usable address in the range (assigned automatically).
serverIdThe region the network lives in.
statusProvisioning, Active, or Failed.
healthHealthy, Unhealthy, or empty.

List networks

http
GET /api/networks?page=1&limit=20

Paginated list of your networks.

Create a network

http
POST /api/networks
json
{
  "name": "prod",
  "cidr": "10.20.0.0/24",
  "description": "Production network",
  "serverId": "srv_..."
}
FieldTypeNotes
cidrstringRequired. Must be a private IPv4 range, with a prefix from the block's own size down to /30: 10.0.0.0/8 allows /8-/30, 172.16.0.0/12 allows /12-/30, 192.168.0.0/16 allows /16-/30.
serverIdstringRequired. The region. Get valid ids from /open/config-options.
namestringOptional. 2 to 30 characters (letters, numbers, spaces, hyphens). Left blank, we generate one. Must be unique within your account.
descriptionstringOptional.

Creating a network is asynchronous: the call returns 201 with status: "Provisioning", and the network flips to Active once it is ready. Networks are free, but the create call still needs at least $3 of account credit like any other create (402 otherwise).

Describe a network

http
GET /api/networks/:id

Pods on a network

http
GET /api/networks/:id/resources

Lists the pods attached to the network:

json
[
  { "id": "pod_xyz789", "name": "web", "status": "Running", "os": "ubuntu", "version": "24.04", "privateIp": "10.20.0.5" }
]

Network traffic

http
GET /api/networks/:id/traffic
json
{ "totalIn": 44210000, "totalOut": 981200000, "podCount": 2 }

Totals are summed across the attached pods (cumulative bytes since each pod last restarted).

Update a network

http
PUT /api/networks/:id
json
{ "name": "production", "description": "Production network (updated)" }

Only name and description can change. The CIDR and region are fixed once the network exists.

Delete a network

http
DELETE /api/networks/:id

Returns 204. If any pod is still attached, it returns 409 "Network is still in use by N pods" - detach the pods first (from each pod's Networking tab).

Built for the long tail.