How does the myaddr.tools Update API work?
Updated
The myaddr.tools Update API is a single HTTP endpoint at https://myaddr.tools/update that manages the DNS records for the name you claimed. You authenticate with the secret key you received at registration, then add or update an IP address, add an ACME dns-01 challenge TXT record, or delete your addresses. The endpoint is deliberately forgiving: it treats GET, POST, and PUT as equivalent update requests, reads parameters from the URL query string or from POST/PUT bodies, and accepts bodies as either application/x-www-form-urlencoded or application/json. On success it responds with the body OK and status code 200; otherwise it returns a helpful error message with a 4xx status.
This is for anyone who has already claimed a name and holds its secret key. If you don't have a key yet, claim a name first — the key is what gives you control over the name, and losing it means losing the name.
Adding or updating an IP address
Send a GET, POST, or PUT request to /update with two parameters:
| Parameter | Value |
|---|---|
key |
Your secret key |
ip |
Any valid IPv4 or IPv6 address, or self to use the requester's IP address |
For example, a GET request using your own connection's IP:
https://myaddr.tools/update?key=YOUR_KEY&ip=self
Expected result: the response body is OK with status 200, and the record now points at that address.
Two behaviors matter here:
- IPv4 and IPv6 are tracked separately. Adding an IPv4 address replaces any existing IPv4 address, and the same applies to IPv6. One update does not overwrite the other family.
- You can force the address family by using the host
ipv4.myaddr.toolsoripv6.myaddr.toolsinstead ofmyaddr.tools. This is useful whenip=selfmight otherwise resolve to the wrong family — for instance, on a dual-stack host where you want to publish only the IPv6 address.
Adding an ACME dns-01 challenge
To satisfy a dns-01 challenge for a TLS certificate (for example from Let's Encrypt), send a GET, POST, or PUT request to /update with:
| Parameter | Value |
|---|---|
key |
Your secret key |
acme_challenge |
The challenge value |
The acme_challenge value is served as a TXT record on all _acme-challenge subdomains. Challenge TXT records are removed automatically after a few minutes, so you don't need to clean them up yourself — but you do need to complete the challenge before they disappear.
Deleting an IP address
Send a DELETE request to /update with your key. This removes both the IPv4 and IPv6 addresses. The endpoint always responds with status code 204.
DELETE https://myaddr.tools/update?key=YOUR_KEY
Note the asymmetry: an update request replaces one address family at a time, while a delete clears both at once.
Keeping the name alive
The API is also how you keep your registration from expiring:
- Each IP address (IPv4 and IPv6) must be updated at least once every 90 days to remain active, and the two families are tracked independently.
- If no updates are made to your name for 120 days, the registration is deleted and the name is released.
So a periodic update call — even one that re-sends the same address — doubles as your keep-alive. If you want to remove the registration entirely and release the name immediately, send a DELETE request to https://myaddr.tools/reg with your key.
Common sticking points
- Using the wrong key. The key is the only credential; there is no account recovery. A
4xxwith an error message usually means the key is wrong or missing. - Forgetting the family split. If you only ever update IPv4, your IPv6 record (if any) still needs its own update within the 90-day window.
- Assuming the challenge record persists. ACME TXT records vanish after a few minutes, so run the challenge promptly after adding it.
- Mixing up
/updateand/reg./updatemanages DNS records;/regmanages the registration itself.