API Guide: Virtual Servers and Private Networking

In this how-to, we will show you how to easily create five virtual servers and a private network using your API. We will demonstrate how to create two virtual servers for the public-facing load balancers and three virtual servers for the database cluster.

The database cluster nodes are connected only to the private network and are not externally reachable. The load balancers will have two network interfaces: one connected to the public network and the other to your private network.

Steps:

  1. Check pricing
  2. Choose a datacenter
  3. Create a private network
  4. Choose an operating system
  5. Create virtual servers

Check pricing

Before you begin, check the system requirements and the resources you will need. You can also review the pricing details for the virtual servers and private networks. Be sure to record the IDs of the servers and networks you plan to use — you’ll need them later to confirm which datacenters support them.

Request

GET /v1/prices/server_virtual

curl -X GET https://api.ip6.cloud/v1/prices/server_virtual \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

[{"id":81,"category":"server_virtual","duration":30,"group":"","name":"starter","create":"5.00000","renew":"5.00000","data":{"cpu":1,"ram":1,"dsk":10,"bwt":1000,"trf":500,"tns":100,"ip4":1,"ip6":1}},{"id":84,"category":"server_virtual","duration":30,"group":"","name":"business","create":"10.00000","renew":"100.00000","data":{"cpu":4,"ram":8,"dsk":30,"bwt":1000,"trf":4000,"tns":100,"ip4":1,"ip6":1}},{"id":103,"category":"server_virtual","duration":30,"group":"","name":"network_private","create":"5.00000","renew":"2.00000","data":{"vlan":true}}]

Choose a datacenter

Use the following command to list all available datacenters. Choose a datacenter that supports the article IDs you noted in the previous step. Make sure to write down the datacenter ID — you’ll need it later.

Request

GET /v1/datacenters

curl -X GET https://api.ip6.cloud/v1/datacenters \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

[{"id":1,"country":"CH","description":"Lupfig","name":"LUP","articles":"[81,82,83,84,103]"},{"id":5,"country":"US","description":"Fremont","name":"FRE","articles":"[81,82,83,84,103]"},{"id":6,"country":"DE","description":"Rottweil","name":"ROT","articles":"[81,82,83,84,103]"}]

Create a private network

Creating a private network is optional, but we recommend it for security reasons. It allows you to isolate your databases and private data from the internet, adding an extra layer of protection to your project.

To create a private network, you only need the datacenter ID where you want the network to be created. We ensure that the network will be reachable by all hosts within the same datacenter. You can use any IPv4 or IPv6 addresses you prefer inside this private network.

Request

POST /v1/server/virtual/network/$dc
curl -X POST https://api.ip6.cloud/v1/server/virtual/network/$datacenter_id \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" -d '{"name":"dbcluster","desc":"internal network for db-cluster"}'
Parameter Description Required
$datacenter_id ID of datacenter
$name A name for your network
$desc Descriptive label for the network

Response

{"id":"dvportgroup-12345","name":"dbcluster","desc":"internal network for db-cluster","vlan":123}

Choose an operating system

Before setting up your virtual servers, you need to choose an operating system. In this guide, we will use Debian 12, but you can select any other OS that best fits your use case or requirements.

Request

GET /v1/server/virtual/operating_systems/$dc
curl -X GET https://api.ip6.cloud/v1/server/virtual/operating_systems/$datacenter_id \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

[{"id":"e2bc004f-9abe-4798-b9ca-90d6977b2afc","modified":"2025-09-13T12:45:38.704Z","name":"debian_12_bookworm","type":"vm-template","version":"1"}]

Create virtual servers

We will create 2 public-facing servers (web) attached to public- and private-network, and 3 DB servers attached only to private-network.

Load Balancer

This example creates a server with two NICs: one on public network and one on private.

Request

POST /v1/server/virtual
curl -X POST https://api.ip6.cloud/v1/server/virtual \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
  "article": 82,
  "datacenter": 5,
  "ipv4": true,
  "ipv6": true,
  "name": "de-lb1",
  "network": ["dvportgroup-11", "dvportgroup-12"],
  "os": "e2bc004f-9abe-4798-b9ca-90d6977b2afc"
}'
Parameter Description Required
$article ID of article
$datacenter ID of datacenter
$os ID of OS
$name A name for your vps
$ipv4 Enable public ipv4-address
$ipv6 Enable public ipv6-address
$network Array of network IDs

Repeat and increment name (de-lb2)

Response

{"message":"This task is being processed in the background.","status":"accepted","task_id":"123"}

Database

Create DB Server (repeat for 3 instances)

Request

POST /v1/server/virtual
curl -X POST https://api.ip6.cloud/v1/server/virtual \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
  "article": 83,
  "datacenter": 5,
  "ipv4": false,
  "ipv6": false,
  "name": "de-db1",
  "network": ["dvportgroup-11", "dvportgroup-12"],
  "os": "e2bc004f-9abe-4798-b9ca-90d6977b2afc"
}'
Parameter Description Required
$article ID of article
$datacenter ID of datacenter
$os ID of OS
$name A name for your vps
$ipv4 Enable public ipv4-address
$ipv6 Enable public ipv6-address
$network Array of network IDs

Repeat and increment name (de-db2)

Response

{"message":"This task is being processed in the background.","status":"accepted","task_id":"124"}
Security note: DB servers should be isolated — only the private network should reach them. Use security groups / firewall rules to restrict access (allow only app/web subnets and DB management IPs).