Skip to content

Dinio overview

Dinio is a globally distributed DNS platform with two services. They run on the same edge network and are managed through the same API, but they solve different problems and you can use either one on its own.

DNS hosting DNS filtering
Dinio acts as the authoritative nameserver for your domains the resolver your devices use
Who sends the queries anyone on the internet looking up your domains your own clients, looking up any domain
What you manage zones, records, health checks, geo bans, zone members, redirects, certificates client identities, sinkhole lists and their rules, links
Belongs to a zone your user
API key personal key or zone key personal key only

Each service has its own package — auth for DNS hosting, filter for DNS filtering — chosen per account. A package sets the limits: how many zones, health checks, clients, lists and rules you can have, and how far back statistics go. Until you choose a package for a service, nothing can be added in it. A limit only stops adding: what you have keeps working. See Packages and usage, or dinio plan list and dinio usage in the CLI.

The CLI and both SDKs work through the same REST API you can call with curl:

  • The same rules everywhere. The clients add convenience (names instead of uuids, typed models, readable errors), never rules of their own. Every permission and DNS check is made by Dinio, so a change is accepted or refused the same way whichever client sends it.
  • One key works everywhere. The same API key works with curl, the CLI and both SDKs.
You want to… Use
Change a few records or lists by hand, or from a shell script CLI
Automate from Node.js, Deno, Bun, an edge function or CI TypeScript SDK
Build a Rust service or tool on top of Dinio Rust SDK
Use another language, or see exactly what goes over the wire API

The same conventions hold in the API, the CLI and both SDKs:

  • Identifiers are uuids. Zones can also be referenced by name, redirects are identified by their host name, client identities can be referenced by their identifying value.
  • Timestamps (created_at, updated_at) are Unix seconds, and so are the durations in health checks. Statistics are the exception: their times are milliseconds.
  • Enumerated values are strings ("Country", "Blacklist", "HEALTHY"), never numbers.

Start with an API key: what each kind of key can reach, and how to issue and revoke it.