Command-line interface for the bunny.net API. Manage DNS zones, pull zones, storage, edge scripts, Shield security, Stream video, and more from your terminal.
- Go 1.26+
go install github.com/built-fast/bunny-cli@latestOr build from source:
make build # produces ./bin/bunnyRun the interactive setup:
bunny configureThis creates ~/.config/bunny/config.toml with your API key.
You can also configure via environment variable:
export BUNNY_API_KEY=your-api-keyOr pass flags directly:
bunny dns list --api-key <key>Precedence: flags > environment variables > config file.
# List resources
bunny dns list --limit 50
bunny pullzones list
# Get a resource
bunny dns get <zone_id>
bunny pullzones get <pullzone_id>
# Create
bunny dns create --domain example.com
# Update
bunny pullzones update <pullzone_id> --name my-zone
# Destructive operations require confirmation (or --yes)
bunny dns delete <zone_id>
bunny dns delete <zone_id> --yes
# File operations
bunny storage ls my-zone/path/
bunny storage cp local-file.txt my-zone/remote/path/
bunny storage rm my-zone/remote/path/file.txt| Resource | Commands |
|---|---|
dns |
list, get, create, update, delete, export, import |
dns records |
list, get, create, update, delete |
dns dnssec |
enable, disable, get |
pullzones |
list, get, create, update, delete, purge |
pullzones edge-rules |
list, create, update, delete |
pullzones hostnames |
list, add, remove, set-certificate, load-certificate, remove-certificate |
storagezones |
list, get, create, update, delete, reset-password |
storage |
ls, cp, rm |
scripts |
list, get, create, update, delete, publish, rotate-key |
scripts code |
get, update |
scripts releases |
list |
scripts secrets |
list, create, update, delete |
shield zones |
list, get, create, update, delete |
shield waf |
get, update, custom-rules, triggered-rules |
shield rate-limits |
list, get, create, update, delete |
shield access-lists |
list, get, create, update, delete |
shield bot-detection |
get, update |
shield upload-scanning |
get, update |
shield event-logs |
list |
shield metrics |
get |
stream libraries |
list, get, create, update, delete |
stream videos |
list, get, create, update, delete, upload, fetch, reencode, repackage |
stream collections |
list, get, create, update, delete |
stream captions |
list, add, delete |
stream statistics |
get |
statistics |
(global CDN statistics) |
regions |
(list CDN regions) |
countries |
(list countries) |
account |
get, update |
billing |
get, summary, apply-promo-code |
# Table (default), JSON, or pretty JSON
bunny dns list --output table
bunny dns list --output json
bunny dns list --output json-pretty
# Select specific fields
bunny dns list --field id,domain
# Built-in jq filtering (no external jq needed)
bunny pullzones list --jq '.[] | select(.Enabled == true) | .Name'bunny completion bash
bunny completion zsh
bunny completion fish
bunny completion powershellInstall dependencies:
brew bundleRun the full check suite (formatting, linting, tests, surface snapshot):
make checkIndividual targets:
make build # Build binary
make test # Unit tests
make test-e2e # E2E tests (BATS + Prism mock server)
make lint # golangci-lint
make fmt # Format code
make surface # Regenerate CLI surface snapshotMIT