Documentation

Hosted DNS

Create zones and manage records from the dash, the API, or your terminal.

Create a zone

Create a zone from the DNS section in the dash, or via the API. Create an API key under API settings first.

curl -X POST https://dash.greybull.nl/api/v1/dns/zones \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"example.nl"}'

Manage records

A record has a name, type, content and ttl (60 to 86400 seconds, default 3600). Record operations are sibling-safe: they touch only the record you name, identified by name, type and exact content. Two TXT records at the same name stay independent.

# List records in a zone
curl https://dash.greybull.nl/api/v1/dns/zones/example.nl/records \
  -H "X-API-Key: $API_KEY"

# Add a record
curl -X POST https://dash.greybull.nl/api/v1/dns/zones/example.nl/records \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"www","type":"A","content":"203.0.113.10","ttl":3600}'

Or use the CLI

The greybull CLI wraps the same API. greybull login opens your browser and stores a scoped API key locally.

npx greybull login
npx greybull dns zones
npx greybull dns list example.nl --type TXT
npx greybull dns add example.nl MX @ mail.example.nl --priority 10
npx greybull dns delete example.nl TXT _acme-challenge '"token123"'

Add --json to any command for raw JSON output in scripts.

Edit the whole zone in your editor

Coming from PowerDNS? greybull dns edit works like pdnsutil edit-zone: it opens the zone as a BIND-style file in your $EDITOR, with syntax highlighting in vim.

npx greybull dns edit example.nl
A terminal running greybull dns edit, showing the example.nl zone as a BIND-style file open in vim with syntax highlighting

Save and close the editor, and the CLI shows a diff of your changes and asks for confirmation before applying anything:

The CLI showing a red/green diff of changed DNS records with the prompt: apply these changes, edit again, retry with original zone, or quit

Templates

If you set up the same records for every zone (mail, SPF, verification records), define them once as a template and stamp it onto a zone:

curl -X POST https://dash.greybull.nl/api/v1/dns/zones/example.nl/apply-template \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"template":"default-mail"}'

Applying a template appends its records to the zone, sibling-safe. Manage templates under /api/v1/dns/templates, or pass a template directly when creating a zone.

DNSSEC and transfers

DNSSEC is automated: zones are signed and key material is managed for you. AXFR zone transfers are supported for secondary setups. Tools that speak the PowerDNS HTTP API can use the compatible endpoints under /api/v1/servers.