dns bg img
  • DNS CONSOLE

  • AN EASY TO USE DNS MANAGEMENT SOLUTION
  • FAST, SIMPLE AND SECURE

With our DNS Console and API, you can list, add, modify or remove zones and records for free.

EASY TO USE INTERFACE

Hetzner's DNS Console is an intuitive DNS management platform. Simply

enter your zone names to import DNS entries. You don't even need to

copy-and-paste them. Use our DNS Console and API to view your DNS

entries, add to them, edit them, or delete them. All completely free of

cost.

Create free account
header shadow

Features

AUTO SCANNING

It's never been easier to transfer the details from your existing zones. Our auto scanning tool automatically scans the Internet for your existing DNS zones, and for the most part, recognizes them and adds them to the DNS Console. This saves you time and helps to prevent mistakes.

DOCS & API

You can also use all of DNS Console's features with our handy API. Automate your DNS zone management with the help of the REST-API's detailed documentation. There's an array of programming examples in PHP, Go, and Python to help you get started.

ACCESS

With a single sign on, you can access not only the DNS Console, but also Hetzner Robot, Hetzner Cloud, and Hetzner Accounts (where your main customer information is located). And to securely access the DNS API, you can create personal access tokens.

ALL FEATURES ALSO VIA API

Automate your DNS entry management to the max. All of DNS Console's features are also available via our developer-friendly REST-API. Our detailed documentation includes programming examples and helps you get started.

cURL
Go
PHP
Python
                                        ## Get Record

# Returns information about a single record.

curl "https://dns.hetzner.com/api/v1/records/1" 

     -H 'Auth-API-Token: YOUR-API-TOKEN'
                                    
                                        package main



import (

	"fmt"

	"io/ioutil"

	"net/http"

)



func sendGetRecord() {

	// Get Record (GET https://dns.hetzner.com/api/v1/records/1)



	// Create client

	client := &http.Client{}



	// Create request

	req, err := http.NewRequest("GET", "https://dns.hetzner.com/api/v1/records/1", nil)



	// Headers

	req.Header.Add("Auth-API-Token", "YOUR-API-TOKEN")



	// Fetch Request

	resp, err := client.Do(req)

	

	if err != nil {

		fmt.Println("Failure : ", err)

	}



	// Read Response Body

	respBody, _ := ioutil.ReadAll(resp.Body)



	// Display Results

	fmt.Println("response Status : ", resp.Status)

	fmt.Println("response Headers : ", resp.Header)

	fmt.Println("response Body : ", string(respBody))

}
                                    
                                        // get cURL resource

$ch = curl_init();



// set url

curl_setopt($ch, CURLOPT_URL, 'https://dns.hetzner.com/api/v1/records/1');



// set method

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');



// return the transfer as a string

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);



// set headers

curl_setopt($ch, CURLOPT_HTTPHEADER, [

  'Auth-API-Token: YOUR-API-TOKEN',

]);



// send the request and save response to $response

$response = curl_exec($ch);



// stop if fails

if (!$response) {

  die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));

}



echo 'HTTP Status Code: ' . curl_getinfo($ch, CURLINFO_HTTP_CODE) . PHP_EOL;

echo 'Response Body: ' . $response . PHP_EOL;



// close curl resource to free up system resources 

curl_close($ch);
                                    
                                        # Install the Python Requests library:

# `pip install requests`



import requests





def send_request():

    # Get Record

    # GET https://dns.hetzner.com/api/v1/records/1



    try:

        response = requests.get(

            url="https://dns.hetzner.com/api/v1/records/1",

            headers={

                "Auth-API-Token": "YOUR-API-TOKEN",

            },

        )

        print('Response HTTP Status Code: {status_code}'.format(

            status_code=response.status_code))

        print('Response HTTP Response Body: {content}'.format(

            content=response.content))

    except requests.exceptions.RequestException:

        print('HTTP Request failed')
                                    

Frequently Asked Questions

  • How much does it cost to use DNS Console?

    DNS Console is completely free. Use it together with your existing Robot or Cloud Console accounts. New customers can create a free account to use DNS Console.

  • What type of records does DNS Console support?

    Using the GUI, you will be able to manage A, AAAA, CNAME, MX, NS, SRV, and TXT records. Using BIND files, you can manually manage CAA, DS, TLSA, DANE, HINFO, SOA, and RP record types.

  • Can I add an unlimited number of zones?

    By default, you can add up to 25 zones. However, if you would like to increase this limit, it's easy to do. Just write a support ticket, and give us a quick explanation for why you need the increase.

  • Does DNS Console also support DNSSEC?

    Currently, DNS Console does not include support for DNSSEC.