Authoritative DNS, paid in sats
Host your domain's DNS on two nameservers, signed with DNSSEC and managed through an API. Add dynamic-DNS
hostnames and secondary DNS, or register a .com, .net or .org name. Pay each order
on its own with bitcoin, over Lightning or on-chain. No subscription, and no email address or identity check for DNS
hosting.
Hosted zones
Your domain on its own pair of nameservers under ns1.satsdns.com and ns2.satsdns.com. DNSSEC signing from day one, CDS and
CDNSKEY published, a 60-second minimum TTL for ACME DNS-01 and other fast changes, a JSON record API.
500 sats / 30 days, 5,000 sats / year
Secondary DNS
Keep your own primary. Our nameservers transfer your zone with a TSIG key and follow your NOTIFYs. Signed zones are served as you sign them.
500 sats / 30 days, 5,000 sats / year
Dynamic DNS
A hostname such as myhost.dynkite.com with A, AAAA, TXT and HTTPS records at a 60-second TTL. Update it
from a script, or from a router or ddclient over the dyndns2 protocol.
200 sats / 30 days, 2,000 sats / year
Domain registration
.com, .net and .org names with WHOIS privacy included, ordered in the
dashboard or through the API with a Nostr account. Add a year of DNS hosting for 3,000 sats more. Registered through our ICANN-accredited sponsoring
registrar.
from 13,500 sats for the first year
Nostr accounts
Optional and free. Your Nostr key is your login: sign API calls with NIP-98, or sign in to the dashboard with a browser extension or a remote signer. Renewal reminders arrive as Nostr direct messages.
free
All prices, quotas and extras are on the pricing page.
How it works
- Ask for your nameservers. The free check gives each zone its own pair, such as
k7qd.ns1.satsdns.comandm3x9.ns2.satsdns.com, and a ticket. Set the pair at your registrar; other providers' nameservers may stay listed next to ours. Nobody else can take over a domain that points at us. - Order. Every order is checked for free first: the name, that nobody else hosts it, and that the domain is delegated to its nameservers. A request that would fail gets an error and no invoice.
- Pay. Without an account, the API answers
402 Payment Requiredwith a Lightning (L402) invoice and a Cashu payment request; pay one and repeat the request. With a Nostr account, each order gets its own Lightning invoice, or a bitcoin address for orders of 5,000 sats or more. - Manage. The answer carries a management token, shown once, and the DS record for your registrar. Edit records with the token, with your Nostr key, with an account API key or in the dashboard.
Example: host a zone, no account
# 1. Ask for the zone's nameservers (free).
curl -i -X POST https://api.satsdns.com/v1/zones/create/30d \
-H "Content-Type: application/json" -d '{"zone": "example.org"}'
# HTTP/2 409 delegation_missing: detail.expected_ns = your pair, detail.ns_ticket = "nst_..."
# Set that pair as the domain's nameservers at your registrar, wait for the registry, then:
curl -i -X POST https://api.satsdns.com/v1/zones/create/30d \
-H "Content-Type: application/json" -d '{"zone": "example.org", "ns_ticket": "nst_..."}'
# HTTP/2 402
# www-authenticate: L402 macaroon="AGIAJEem...", invoice="lnbc5u1..."
# 2. Pay the 500-sat invoice with any Lightning wallet and keep the preimage.
# 3. Repeat with the proof. The answer holds the zone token (once) and the DS record.
curl -X POST https://api.satsdns.com/v1/zones/create/30d \
-H "Authorization: L402 AGIAJEem...:<preimage-hex>" \
-H "Content-Type: application/json" -d '{"zone": "example.org", "ns_ticket": "nst_..."}'
# 4. Add a record with the token.
curl -X POST https://api.satsdns.com/v1/zones/example.org/records \
-H "Authorization: Bearer jdz_..." -H "Content-Type: application/json" \
-d '{"name": "www", "type": "A", "ttl": 300, "records": ["203.0.113.10"]}'
Paying
- Pay as you go. Every order and every renewal is paid on its own. There is no stored balance, nothing to withdraw, and nothing renews by itself: you renew when you choose to, and a renewal adds to the current end date.
- Lightning: L402 on the paid routes, or an invoice per order with an account.
- Cashu ecash (NUT-24) on the paid routes, from the mints listed in the docs.
- On-chain bitcoin for account orders of at least 5,000 sats (for example a year of a zone): a new address for every order, credited after 3 confirmations.
- Lightning address per zone. Each zone or hostname can get its own Lightning address on
pay.satsdns.com. Anyone who pays it extends that zone pro rata, so a renewal needs no token or login.
What you do not need
- No email address, phone number, name or identity documents for DNS hosting, secondary DNS or dynamic DNS. (A domain registration needs the registrant's real contact details, because ICANN's rules require them; we pass them to the registrar and keep no copy.)
- No password: a token per zone, or your Nostr key.
- No domain from us: SatsDNS hosts DNS for domains you already have at any registrar. You can also register one here.
Rules
- Only zones for domains you control, delegated to the zone's own nameservers.
- Domains registered here follow the registration agreement: accurate registrant data, email verification within 15 days, no automatic renewal.
- No phishing, malware or other abuse. New hostnames and zones are checked against public phishing lists, and names confirmed as phishing or malware are suspended or removed. See the acceptable use policy.
- Quotas apply, for example 1 million queries a month per zone and 1,000 record changes a day. See limits.
Full terms: terms of service, registration agreement, acceptable use, privacy. Report abuse: abuse@satsdns.com.
For agents
- llms.txt: short description, prices and links.
- skill.md: step-by-step instructions for buying and managing a zone or hostname.
- openapi.yaml: OpenAPI 3.1 description of every public route.
- API reference: authentication, records, dynamic DNS, secondary DNS, DNSSEC, limits and errors.
- /healthz: free status check.
- /v1/info: free JSON with nameservers, prices, periods and limits.
- /.well-known/l402-services: free JSON with the paid routes, prices and accepted mints.