API documentation
The API is deliberately small. Create a base hostname without an account, then use its secret token to manage it.
Authorization: Bearer YOUR_TOKEN.
Do not place tokens in query strings.
Create a hostname
Creates a new base hostname and points it at the IP address making the request.
$ curl https://api.instantdns.io/new
The returned token is shown once. Save it somewhere safe.
Authentication
TOKEN='your-secret-token' curl \ -H "Authorization: Bearer $TOKEN" \ https://api.instantdns.io/record/list
A token controls one base hostname and its child records.
Update the base hostname
Updates only the base hostname to the IP address making the request.
curl \ -H "Authorization: Bearer $TOKEN" \ https://api.instantdns.io/update
To update the parent and every active child record:
curl \ -H "Authorization: Bearer $TOKEN" \ "https://api.instantdns.io/update?scope=all"
| scope | Behaviour |
|---|---|
parent |
Updates the base hostname only. This is the default. |
all |
Updates the base hostname and every active child record. |
Create a child record
curl \ -H "Authorization: Bearer $TOKEN" \ "https://api.instantdns.io/record/new?name=camera1"
If your parent hostname is
orange-oak-3294.instantdns.io, this creates:
camera1.orange-oak-3294.instantdns.io
Update one child
curl \ -H "Authorization: Bearer $TOKEN" \ "https://api.instantdns.io/record/update?name=camera1"
A disabled child is automatically reactivated when it is updated.
List records
curl \ -H "Authorization: Bearer $TOKEN" \ https://api.instantdns.io/record/list
The response includes the base hostname, its current IPv4 and IPv6 addresses, and every child record with its active state.
Disable a child
curl \ -H "Authorization: Bearer $TOKEN" \ "https://api.instantdns.io/record/delete?name=camera1"
This is intentionally reversible. The DNS record is removed, but its
metadata is retained. Calling /record/update later
reactivates it.
IPv4 and IPv6
InstantDNS detects the address family used to reach the API. An IPv4 request updates the A record; an IPv6 request updates the AAAA record. The other address family is preserved.
# Force IPv4 curl -4 https://api.instantdns.io/new # Force IPv6 curl -6 https://api.instantdns.io/new
Rate limits
Rate limits exist to keep the free service usable and discourage bulk namespace harvesting.
| Action | Limits |
|---|---|
| New base hostnames | 3/minute, 10/5 minutes, 30/hour |
| Child creation | 10/minute, 30/5 minutes, 100/hour |
| IPv6 protection | Addresses are grouped by network prefix for abuse control. |
A rate-limited request returns HTTP 429 and includes
fields such as:
{
"error": "rate_limit_exceeded",
"limit_type": "per_minute",
"retry_after_seconds": 42,
"limit": 3,
"window_seconds": 60
}
API status
$ curl https://api.instantdns.io/
{"service":"InstantDNS","status":"ok"}