Skip to main content

VPC API Reference

Users with an access token can interact with the VPC API using curl or any other HTTP client. The API allows users to create, list, update, and delete VPCs.

Info
  • The API server is https://api.coreweave.com.
  • Replace {API_ACCESS_TOKEN} in the examples below with your CoreWeave API Access Token.

Endpoints

EndpointMethodDescription
/v1beta1/networking/vpcsGETList all VPCs.
/v1beta1/networking/vpcsPOSTCreate a VPC.
/v1beta1/networking/vpcs/{id}GETGet VPC information by ID.
/v1beta1/networking/vpcs/{id}DELETEDelete a VPC by ID.
/v1beta1/networking/vpcs/{id}PATCHUpdate a VPC by ID.

Fields

The following fields are used with the VPC API.

FieldTypeRequired?Description
namestringrequiredThe name of the VPC.
zonestringrequiredThe Availability Zone in which the VPC is located.
hostPrefixstringoptionalDeprecated: use hostPrefixes instead.
The Host Prefix of the VPC. If configured, must be a /18 subnet or larger (e.g. /17, /16). If not explicitly configured, a default IPv4 value is configured by the server. This field is mutually exclusive with the hostPrefixes field.
hostPrefixesArray of Host Prefix objectsoptionalThe Host Prefixes of the VPC. If configured, must be a /18 subnet or larger (e.g. /17, /16) for IPv4, or a /51 prefix or larger (e.g. /50, /49) for IPv6. If not explicitly configured, a default IPv4 value is configured by the server. This field is mutually exclusive with the hostPrefix field.
vpcPrefixesArray of VPC Prefix objectsoptionalAn array of the VPC prefixes. Must be given in CIDR notation.
ingressIngress object-The ingress configuration of the VPC.
egressEgress object-The egress configuration of the VPC.
dhcpDHCP object-The DHCP configuration of the VPC.

Objects

The following sections describe the objects that are used with the VPC API.

Host Prefix object

Note

Host prefixes of any type may not be changed after they are configured and the VPC has been created.

FieldTypeRequired?Description
namestringrequiredThe user-specified name of the Host Prefix.
typeenumrequiredThe host prefix's type, which controls network connectivity from the prefix to the host. Value is one of "PRIMARY", "ROUTED", or "ATTACHED" and must be uppercase. See below for more details.
prefixesarrayrequiredThe VPC-wide aggregates from which host-specific prefixes are allocated. May be IPv4 or IPv6.
ipamipam objectoptionalThe configuration for a secondary host prefix.
About the Host Prefix object's type field

The type field in the Host Prefix object defines the type of host prefix, which can be PRIMARY, ROUTED, or ATTACHED.

The PRIMARY host prefix is the main IP range used for Node addresses in a VPC. Each VPC must have exactly one, and only one, PRIMARY host prefix. It supports IPv4 AND IPv6. When configuring a dual-stack VPC, both must be configured as one Host Prefix. When you create a VPC without overriding this range, CoreWeave automatically applies the default host prefix for the selected Zone.

A ROUTED host prefix is an additional (secondary) host prefix that the VPC routes to the host. It supports one address family per prefix, either IPv4 or IPv6. When configuring a dual-stack ROUTED prefix, each address family must be configured as a separate Host Prefix. Any number of ROUTED prefixes are supported. From the host's perspective, this network is Layer 3-adjacent to the DPU or underlying network fabric. ROUTED host prefixes are typically used for advanced container or tenant networks, where per-Node sub-prefixes are allocated and advertised separately from the PRIMARY Node addresses.

An ATTACHED host prefix represents an IP range that behaves like a Layer 2 network segment spanning the host and the DPU. It supports one address family per prefix, either IPv4 or IPv6. When configuring a dual-stack ATTACHED prefix, each address family must be configured as a separate Host Prefix. Any number of ATTACHED prefixes are supported. Workloads attached to this network see it as a directly connected segment, with gateway behavior controlled by the prefix's IP address management policy (for example, which IP in the range is used as the gateway).

Most users only need the default PRIMARY host prefix that the Cloud Console configures automatically when creating a VPC or cluster. Additional ROUTED or ATTACHED host prefixes are used for specialized workloads and are configured through the VPC API or Terraform provider, not directly in the Cloud Console.

IPAM object

ipam is a sub-object of the Host Prefix object. It is used to configure the IP address management (IPAM) for a secondary host prefix.

FieldTypeRequired?Description
prefixLengthintrequiredThe desired length for each Node's allocation from the VPC-wide aggregate prefix.
gatewayAddressPolicyenumrequiredDescribes which IP address from the prefix is allocated to the network gateway. Value is one of "EUI64", "FIRST_IP", or "LAST_IP" and must be uppercase. See below for more details.
About the ipam object's gatewayAddressPolicy field

The gatewayAddressPolicy field in the ipam object describes which IP address from the prefix is allocated to the network gateway.

  • EUI64: The gateway IP address is generated using the IPv6 EUI-64 (Extended Unique Identifier) scheme. Only valid if all prefixes are IPv6. When using EUI64, the host must accept IPv6 Router Advertisements to learn the gateway's address. The generated address is not provided through any other API.
  • FIRST_IP: The first IP address in the prefix is the network gateway's address.
  • LAST_IP: The last IP address in the prefix is the network gateway's address.

VPC Prefix object

FieldTypeRequired?Description
namestringrequiredThe user-specified name of the VPC Prefix.
valuestringrequiredThe value of the prefix in IPv4 CIDR notation.

Ingress object

FieldTypeRequired?Description
disablePublicServicesbooleanrequiredDisables ingress from the Internet at the VPC level when set to true. Defaults to false, so ingress from the Internet is enabled unless you change this field.

Egress object

FieldTypeRequired?Description
disablePublicAccessbooleanrequiredDisables egress from the Internet at the VPC level when set to true. Defaults to false, so egress from the Internet is enabled unless you change this field.

DHCP object

FieldTypeRequired?Description
dnsdns object-The DNS configuration of the VPC.

DNS object

dns is a sub-object of the dhcp object. It is used to configure the DNS configuration of the VPC.

FieldTypeRequired?Description
serversstring arrayoptionalAn array of user-provided DNS servers.

VPCs

To list or create VPCs, use the /v1beta1/networking/vpcs endpoint. The API supports the GET and POST methods.

GET /v1beta1/networking/vpcs

To list all VPCs, use the GET method with the /v1beta1/networking/vpcs endpoint.

Example request
$
curl -X GET https://api.coreweave.com/v1beta1/networking/vpcs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {API_ACCESS_TOKEN}"

A successful response returns an array of VPC objects.

Response status code 200
{
"items": [
{
"name": "string",
"zone": "string",
"hostPrefixes": [
{
"name": "string",
"type": "string",
"prefixes": [
"string",
"string"
],
"ipam": {
"prefixLength": int,
"gatewayAddressPolicy": "string"
}
}
],
"vpcPrefixes": [
{
"name": "string",
"value": "string",
"createdAt": "string",
"updatedAt": "string",
"status": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}
]
}

POST /v1beta1/networking/vpcs

To create a VPC, use the POST method with the /v1beta1/networking/vpcs endpoint. The VPC configuration must be supplied as a JSON object in the request body.

The supported fields and their data types are as follows.

data.json
{
"name": "string",
"zone": "string",
"hostPrefixes": [
{
"name": "string",
"type": "string",
"prefixes": [
"string",
"string"
],
"ipam": {
"prefixLength": int,
"gatewayAddressPolicy": "string"
}
}
],
"vpcPrefixes": [
{
"name": "string",
"value": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}

Submit the request, passing the JSON object in the body as data.json.

Example request
$
curl -X POST https://api.coreweave.com/v1beta1/networking/vpcs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {API_ACCESS_TOKEN}" \
-d @data.json

A successful response returns a VPC object.

Response status code 200
{
"name": "string",
"zone": "string",
"hostPrefix": "string",
"vpcPrefixes": [
{
"name": "string",
"value": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}

VPCs by ID

To retrieve, update, or delete a VPC by ID, use the /v1beta1/networking/vpcs/{id} endpoint. The API supports the GET, PATCH, and DELETE methods.

GET /v1beta1/networking/vpcs/{id}

To get information about a VPC, use the GET method with the /v1beta1/networking/vpcs/{id} endpoint. Substitute {id} with the VPC ID.

Example request
$
curl -X GET https://api.coreweave.com/v1beta1/networking/vpcs/{id} \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {API_ACCESS_TOKEN}"

A successful response returns the VPC object.

Response status code 200
{
"name": "string",
"zone": "string",
"hostPrefixes": [
{
"name": "string",
"type": "string",
"prefixes": [
"string",
"string"
],
"ipam": {
"prefixLength": int,
"gatewayAddressPolicy": "string"
}
}
],
"vpcPrefixes": [
{
"name": "string",
"value": "string",
"createdAt": "string",
"updatedAt": "string",
"status": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}

DELETE /v1beta1/networking/vpcs/{id}

To delete a VPC, use the DELETE method with the /v1beta1/networking/vpcs/{id} endpoint. Substitute {id} with the VPC ID.

Example request
$
curl -X DELETE https://api.coreweave.com/v1beta1/networking/vpcs/{id} \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {API_ACCESS_TOKEN}"

A successful response returns the deleted VPC object.

Response status code 200
{
"name": "string",
"zone": "string",
"hostPrefixes": [
{
"name": "string",
"type": "string",
"prefixes": [
"string",
"string"
],
"ipam": {
"prefixLength": int,
"gatewayAddressPolicy": "string"
}
}
],
"vpcPrefixes": [
{
"name": "string",
"value": "string",
"createdAt": "string",
"updatedAt": "string",
"status": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}

PATCH /v1beta1/networking/vpcs/{id}

To update a VPC, use the PATCH method with the /v1beta1/networking/vpcs/{id} endpoint. Substitute {id} with the VPC ID.

The cluster configuration must be supplied as a JSON object in the request body. The supported fields and their data types are as follows.

data.json
{
"updateMask": string <field-mask>,
"name": "string",
"zone": "string",
"hostPrefixes": [
{
"name": "string",
"type": "string",
"prefixes": [
"string",
"string"
],
"ipam": {
"prefixLength": int,
"gatewayAddressPolicy": "string"
}
}
],
"vpcPrefixes": [
{
"name": "string",
"value": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}

Submit the request, passing the JSON object in the body as data.json.

Example request
$
curl -X PATCH https://api.coreweave.com/v1beta1/networking/vpcs/{id} \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {API_ACCESS_TOKEN}" \
-d @data.json

A successful response returns the updated cluster object.

Response status code 200
{
"name": "string",
"zone": "string",
"hostPrefix": "string",
"vpcPrefixes": [
{
"name": "string",
"value": "string"
}
],
"ingress": {
"disablePublicServices": boolean
},
"egress": {
"disablePublicAccess": boolean
},
"dhcp": {
"dns": {
"servers": [
"string",
"string"
]
}
}
}

gRPC schema and SDKs (Buf)

The VPC API is also exposed as a gRPC service defined in Protobuf. Use the same API host, https://api.coreweave.com, with Bearer token authentication (Authorization: Bearer {API_ACCESS_TOKEN}).

Service details:

  • Service: VPCService (package: coreweave.networking.v1beta1).
  • Public BSR module: https://buf.build/coreweave/networking (module name: buf.build/coreweave/networking).
  • TypeScript SDK namespace: @buf/coreweave_networking.bufbuild_es.

The gRPC methods align with the HTTP resource lifecycle (for example, ListVPCs corresponds to listing VPCs).