curl --request POST \
--url https://api.stg.simnet.cloud/api/v1/vpcs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"vpcOfferingId": "<string>",
"zoneId": "<string>",
"cidr": "<string>",
"displayText": "<string>",
"networkDomain": "<string>",
"start": true,
"accountName": "<string>",
"projectId": "<string>",
"cidrSize": 123,
"publicMtu": 123,
"sourceNatIpAddress": "<string>",
"forDisplay": true,
"dns1": "<string>",
"dns2": "<string>",
"ip6Dns1": "<string>",
"ip6Dns2": "<string>",
"asNumber": 123,
"bgpPeerIds": "<string>",
"domainId": "<string>"
}
'import requests
url = "https://api.stg.simnet.cloud/api/v1/vpcs"
payload = {
"name": "<string>",
"vpcOfferingId": "<string>",
"zoneId": "<string>",
"cidr": "<string>",
"displayText": "<string>",
"networkDomain": "<string>",
"start": True,
"accountName": "<string>",
"projectId": "<string>",
"cidrSize": 123,
"publicMtu": 123,
"sourceNatIpAddress": "<string>",
"forDisplay": True,
"dns1": "<string>",
"dns2": "<string>",
"ip6Dns1": "<string>",
"ip6Dns2": "<string>",
"asNumber": 123,
"bgpPeerIds": "<string>",
"domainId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
vpcOfferingId: '<string>',
zoneId: '<string>',
cidr: '<string>',
displayText: '<string>',
networkDomain: '<string>',
start: true,
accountName: '<string>',
projectId: '<string>',
cidrSize: 123,
publicMtu: 123,
sourceNatIpAddress: '<string>',
forDisplay: true,
dns1: '<string>',
dns2: '<string>',
ip6Dns1: '<string>',
ip6Dns2: '<string>',
asNumber: 123,
bgpPeerIds: '<string>',
domainId: '<string>'
})
};
fetch('https://api.stg.simnet.cloud/api/v1/vpcs', 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.stg.simnet.cloud/api/v1/vpcs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'vpcOfferingId' => '<string>',
'zoneId' => '<string>',
'cidr' => '<string>',
'displayText' => '<string>',
'networkDomain' => '<string>',
'start' => true,
'accountName' => '<string>',
'projectId' => '<string>',
'cidrSize' => 123,
'publicMtu' => 123,
'sourceNatIpAddress' => '<string>',
'forDisplay' => true,
'dns1' => '<string>',
'dns2' => '<string>',
'ip6Dns1' => '<string>',
'ip6Dns2' => '<string>',
'asNumber' => 123,
'bgpPeerIds' => '<string>',
'domainId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.stg.simnet.cloud/api/v1/vpcs"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.stg.simnet.cloud/api/v1/vpcs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stg.simnet.cloud/api/v1/vpcs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jobId": "8f2c41a9-3e77-4d60-b1aa-9c05e2f4d811",
"id": "b6d0e719-2c48-4a13-9f52-7e1b3a08c6d4"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}Create VPC
POST /api/v1/vpcs
curl --request POST \
--url https://api.stg.simnet.cloud/api/v1/vpcs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"vpcOfferingId": "<string>",
"zoneId": "<string>",
"cidr": "<string>",
"displayText": "<string>",
"networkDomain": "<string>",
"start": true,
"accountName": "<string>",
"projectId": "<string>",
"cidrSize": 123,
"publicMtu": 123,
"sourceNatIpAddress": "<string>",
"forDisplay": true,
"dns1": "<string>",
"dns2": "<string>",
"ip6Dns1": "<string>",
"ip6Dns2": "<string>",
"asNumber": 123,
"bgpPeerIds": "<string>",
"domainId": "<string>"
}
'import requests
url = "https://api.stg.simnet.cloud/api/v1/vpcs"
payload = {
"name": "<string>",
"vpcOfferingId": "<string>",
"zoneId": "<string>",
"cidr": "<string>",
"displayText": "<string>",
"networkDomain": "<string>",
"start": True,
"accountName": "<string>",
"projectId": "<string>",
"cidrSize": 123,
"publicMtu": 123,
"sourceNatIpAddress": "<string>",
"forDisplay": True,
"dns1": "<string>",
"dns2": "<string>",
"ip6Dns1": "<string>",
"ip6Dns2": "<string>",
"asNumber": 123,
"bgpPeerIds": "<string>",
"domainId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
vpcOfferingId: '<string>',
zoneId: '<string>',
cidr: '<string>',
displayText: '<string>',
networkDomain: '<string>',
start: true,
accountName: '<string>',
projectId: '<string>',
cidrSize: 123,
publicMtu: 123,
sourceNatIpAddress: '<string>',
forDisplay: true,
dns1: '<string>',
dns2: '<string>',
ip6Dns1: '<string>',
ip6Dns2: '<string>',
asNumber: 123,
bgpPeerIds: '<string>',
domainId: '<string>'
})
};
fetch('https://api.stg.simnet.cloud/api/v1/vpcs', 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.stg.simnet.cloud/api/v1/vpcs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'vpcOfferingId' => '<string>',
'zoneId' => '<string>',
'cidr' => '<string>',
'displayText' => '<string>',
'networkDomain' => '<string>',
'start' => true,
'accountName' => '<string>',
'projectId' => '<string>',
'cidrSize' => 123,
'publicMtu' => 123,
'sourceNatIpAddress' => '<string>',
'forDisplay' => true,
'dns1' => '<string>',
'dns2' => '<string>',
'ip6Dns1' => '<string>',
'ip6Dns2' => '<string>',
'asNumber' => 123,
'bgpPeerIds' => '<string>',
'domainId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.stg.simnet.cloud/api/v1/vpcs"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.stg.simnet.cloud/api/v1/vpcs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stg.simnet.cloud/api/v1/vpcs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"vpcOfferingId\": \"<string>\",\n \"zoneId\": \"<string>\",\n \"cidr\": \"<string>\",\n \"displayText\": \"<string>\",\n \"networkDomain\": \"<string>\",\n \"start\": true,\n \"accountName\": \"<string>\",\n \"projectId\": \"<string>\",\n \"cidrSize\": 123,\n \"publicMtu\": 123,\n \"sourceNatIpAddress\": \"<string>\",\n \"forDisplay\": true,\n \"dns1\": \"<string>\",\n \"dns2\": \"<string>\",\n \"ip6Dns1\": \"<string>\",\n \"ip6Dns2\": \"<string>\",\n \"asNumber\": 123,\n \"bgpPeerIds\": \"<string>\",\n \"domainId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jobId": "8f2c41a9-3e77-4d60-b1aa-9c05e2f4d811",
"id": "b6d0e719-2c48-4a13-9f52-7e1b3a08c6d4"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}{
"message": "Operation failed",
"timestamp": "2023-11-07T05:31:56Z",
"detail": "Unable to find a suitable host"
}Authorizations
The access token from a signed-in console session, sent as Authorization: Bearer <token>. It must be issued for the Simnet API audience — an identity token, or a token for another application, is refused with 401.
There are no API keys, client secrets or service accounts yet, so this is a personal, short-lived credential carrying your full account access. Programmatic credentials with role-based access are on the roadmap. See Authentication.
Headers
Body
A VPC is an address range you then subdivide into tiers. The range cannot be changed afterwards, so size it for the tiers you expect to add later, not just the first one.
IPv4 DNS
IPv6 DNS
Routed-mode / BGP
comma-separated
Response
Accepted. Most mutations are asynchronous: the response carries a jobId and the work continues behind it, so a 2xx here means the request was accepted rather than finished. Poll GET /api/v1/jobs/{jobId} until the job is terminal before reading anything the operation was meant to produce. A response with no jobId completed synchronously. See Asynchronous work.