Skip to main content
POST
/
core
/
v1
/
domains
/
{domainName}
/
vanity_nameservers
Create Vanity Nameserver
curl --request POST \
  --url https://api.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "hostname": "ns1",
  "ips": [
    "192.168.1.10",
    "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
  ]
}
'
import requests

url = "https://api.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers"

payload = {
    "hostname": "ns1",
    "ips": ["192.168.1.10", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"]
}
headers = {
    "Authorization": "Basic <encoded-value>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    hostname: 'ns1',
    ips: ['192.168.1.10', '2001:0db8:85a3:0000:0000:8a2e:0370:7334']
  })
};

fetch('https://api.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers', 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.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers",
  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([
    'hostname' => 'ns1',
    'ips' => [
        '192.168.1.10',
        '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
    ]
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Basic <encoded-value>",
    "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.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers"

	payload := strings.NewReader("{\n  \"hostname\": \"ns1\",\n  \"ips\": [\n    \"192.168.1.10\",\n    \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Basic <encoded-value>")
	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.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers")
  .header("Authorization", "Basic <encoded-value>")
  .header("Content-Type", "application/json")
  .body("{\n  \"hostname\": \"ns1\",\n  \"ips\": [\n    \"192.168.1.10\",\n    \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"\n  ]\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.dev.name.com/core/v1/domains/{domainName}/vanity_nameservers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"hostname\": \"ns1\",\n  \"ips\": [\n    \"192.168.1.10\",\n    \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"\n  ]\n}"

response = http.request(request)
puts response.read_body
{
  "domainName": "example.com",
  "hostname": "ns1.example.com",
  "ips": [
    "192.168.1.1",
    "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
  ]
}
{
  "message": "Bad Request",
  "details": "'domainName' cannot be null"
}
{
  "message": "Unauthorized"
}
{
  "message": "Permission denied",
  "details": "Failed authentication"
}
{
  "message": "Not Found",
  "details": "The requested domain does not exist."
}
{
  "message": "Method Not Allowed"
}
{
  "message": "Object already exists.",
  "details": "Cannot create multiple objects under same key."
}
{
  "message": "The 'Content-Type' header must be 'application/json' for this request."
}
{
  "message": "Rate Limit Exceeded"
}
{
  "message": "Internal Server Error",
  "details": "Something went wrong."
}
{
  "message": "The server received an invalid response from the upstream server."
}
{
  "message": "The upstream server is taking too long to respond."
}

Authorizations

Authorization
string
header
required

Authenticate via HTTP Basic with your account username and API token. Examples use an explicit 'Authorization: Basic <base64(username:token)>' header; 'curl -u username:token' is equivalent. For sandbox, append "-test" to your username and use your sandbox token on api.dev.name.com.

Path Parameters

domainName
string<hostname>
required

The domain name to create a vanity nameserver for.

Example:

"example.com"

Body

application/json

Details of the vanity nameserver to create.

VanityNameserver contains the hostname as well as the list of IP addresses for nameservers.

hostname
string
required

The subdomain portion of the nameserver hostname. The domain portion will be taken from the URL path. For example, to create 'ns1.example.com', specify 'ns1' when calling the endpoint for the domain 'example.com'.

Example:

"ns1"

ips
string<ip>[]
required

IPs is a list of IP addresses that are used for glue records for this nameserver. These should be valid IPv4 or IPv6 addresses.

Minimum array length: 1
Example:
[
  "192.168.1.10",
  "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
]

Response

Vanity nameserver successfully created.

VanityNameserver response schema with full hostname

domainName
string<hostname>
required

DomainName is the root domain for which this vanity nameserver is created. For example, if the hostname is 'ns1.example.com', the domainName would be 'example.com'.

Example:

"example.com"

hostname
string<hostname>
required

Hostname is the fully qualified domain name (FQDN) of the vanity nameserver. It must be a subdomain of the domain specified in 'domainName'.

Example:

"ns1.example.com"

ips
string<ip>[]
required

IPs is a list of IP addresses that are used for glue records for this vanity nameserver. These should be valid IPv4 or IPv6 addresses.

Minimum array length: 1
Example:
[
  "192.168.1.1",
  "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
]