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 |
Packages
Section titled “Packages”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.
One API, every client
Section titled “One API, every client”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.
Which one to use
Section titled “Which one to use”| 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 |
Conventions
Section titled “Conventions”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.