Skip to main content
bunny dns is experimental and hidden from --help and the landing page while it stabilizes. Commands and flags may change.
bunny dns manages DNS through two resource groups:
  • bunny dns record manages the entries within a zone.
  • bunny dns zone manages the zone itself: settings, DNSSEC, logging, stats, and nameservers.
The [domain] argument accepts either the zone’s domain name or its numeric zone ID, and is optional everywhere. Omit it and you’ll be prompted to pick a zone. record update and record remove likewise prompt you to pick a record when the ID is omitted. record aliases to records / rec; zone aliases to zones (and domain / domains).

Records

Manage the DNS records within a zone.
# List records within a zone
bunny dns record list example.com
bunny dns rec ls example.com

# Add records (use '@' for the zone apex)
bunny dns record add example.com api A 198.51.100.1
bunny dns record add example.com '@' MX mail.example.com 10
bunny dns record add example.com '@' SRV 10 0 389 sip.example.com
bunny dns record add example.com '@' CAA '0 issue "letsencrypt.org"'

# Link a record to a pull zone or Edge Script
bunny dns record add example.com cdn PullZone --pull-zone 12345
bunny dns record add example.com fn Script --script 67890

# Interactive wizard: omit the record type (or all args) to be prompted
bunny dns record add
bunny dns record add example.com

# Update / remove a record by its ID
bunny dns record update example.com 123 --value 198.51.100.2 --ttl 3600
bunny dns record remove example.com 123

# Import / export a BIND zone file
bunny dns record import example.com ./zonefile.txt
bunny dns record export example.com                  # print to stdout
bunny dns record export example.com --file ./my.zone # write to a path
bunny dns record export example.com --save           # write to ./example.com.zone

Record value ordering

Positional values for record add follow the record type:
TypePositional values
A / AAAA / CNAME / TXT / NS<value>
MX<value> <priority>
SRV<priority> <weight> <port> <target>
CAA'<flags> <tag> "<value>"' (single quoted string)
PullZonenone, pass --pull-zone <id>
Scriptnone, pass --script <id>
Omit the record type (or all arguments) to run an interactive wizard that prompts for the zone, type, and per-type values.

Zones

Manage zone lifecycle, statistics, nameservers, DNSSEC, and query logging.
# Lifecycle
bunny dns zone list
bunny dns zone add example.com
bunny dns zone show example.com
bunny dns zone remove example.com

# Query statistics (defaults to the last 30 days; text mode draws a bar chart)
bunny dns zone stats example.com
bunny dns zone stats example.com --from 2026-05-01 --to 2026-05-31

# Nameservers to set at your registrar (custom if enabled, else bunny.net defaults)
bunny dns zone nameservers example.com
bunny dns zone ns example.com

# DNSSEC: enable prints the DS record to register at your domain registrar
bunny dns zone dnssec enable example.com
bunny dns zone dnssec disable example.com

# DNS query logging: enable to start collecting logs (optionally anonymize IPs)
bunny dns zone logging enable example.com
bunny dns zone logging enable example.com --anonymize-ip --anonymization drop
bunny dns zone logging disable example.com

Flags

FlagCommandsDescription
--ttlrecord add, record updateTime to live in seconds
--commentrecord add, record updateOptional comment for the record
--pull-zone, --scriptrecord add, record updateLink a PullZone / Script record by ID
--name, --value, --type, --priority, --weight, --port, --flags, --tag, --disabledrecord updateEdit individual record fields (see bunny dns record update --help)
--file, --saverecord exportWrite to a path, or to <domain>.zone in the current directory
--from, --tozone statsDate range (defaults to the last 30 days)
--anonymize-ip, --anonymizationzone logging enableAnonymize client IPs in logs (onedigit | drop)
--forcerecord remove, zone remove, zone dnssec disable, zone logging disableSkip the confirmation prompt