API Version 1
Fully DuckDNS-Compatible — Simple Migration
Overview
PuffinDNS offers a drop-in replacement for DuckDNS. The V1 API is fully compatible with DuckDNS, so if you already use DuckDNS in scripts, routers, or applications, you can migrate by simply replacing duckdns.org with puffindns.org.
duckdns.org → puffindns.org
A/AAAA Record Update API
Update your domain(s) with a single HTTPS GET request:
https://www.puffindns.org/update?domains={DOMAINS}&token={TOKEN}[&ip={IPV4/6}][&ipv6={IPV6}][&verbose=true][&clear=true]
Parameters
| Parameter | Required | Description |
|---|---|---|
domains |
Yes | Comma-separated list of subdomains or FQDNs to update. |
token |
Yes | Your PuffinDNS Legacy V1 Account-wide token. |
ip |
No | IPv4 or IPv6 address. If omitted, your IPv4 address if connecting over IPv4. |
ipv6 |
No | Explicit IPv6 address. Auto-detect IPv6 not possible with V1 API. |
verbose |
No | If true, returns detailed status information. |
clear |
No | If true, clears both IPv4 and IPv6 records for the domain(s). |
Example Request
https://www.puffindns.org/update?domains=myhome,router&token=12345678-abcd-1234-efgh-1234567890ab&ip=203.0.113.42&ipv6=2001:db8::1234
Example Responses
Normal Response:
OK
Verbose Response:
OK
203.0.113.42
2001:db8::1234
UPDATED
Verbose Response Line Breakdown
- OK
- Current IPv4 address (blank if none)
- Current IPv6 address (blank if none)
- UPDATED or NOCHANGE
Error Response:
KO
Minimal Path-Style Request (No Parameters)
For basic routers or IoT devices that cannot send query parameters:
https://www.puffindns.org/update/{DOMAIN}/{TOKEN}[/{IP}]
Restrictions
- DOMAIN: Single subdomain (no commas)
- TOKEN: Your account token
- IP: Optional IPv4 or IPv6 address. If omitted, IPv4 is auto-detected if connecting via IPv4.
TXT Record Update API
TXT records apply to the base subdomain and all sub-subdomains (e.g. xxx.mysub.puffindns.org shares the same TXT record as mysub.puffindns.org).
https://www.puffindns.org/update?domains={DOMAINS}&token={TOKEN}&txt={TEXT}[&verbose=true][&clear=true]
Parameters
| Parameter | Required | Description |
|---|---|---|
domains |
Yes | Comma-separated list of subdomains. |
token |
Yes | Your account token. |
txt |
Yes (unless clear=true) | TXT record value. |
verbose |
No | If true, returns current TXT value and update status. |
clear |
No | If true, clears TXT record (ignores txt). |
Example Response
Verbose mode example:
OK
sometxt=thistext
UPDATED
Migrating from DuckDNS
Migration is simple:
No code changes needed other than replacing the base domain (you may need to change the subdomain you reference depending on what you have registered on PuffinDNS):
duckdns.org → puffindns.org
All parameters, request formats, and responses are identical to DuckDNS.
Quick Actions
Migration Tips
- Replace duckdns.org with puffindns.org
- Keep all existing parameters
- No script modifications needed
- Works with routers and IoT devices