Dynamic DNS


To configure Dynamic DNS, log onto your SERVFAIL account, pick a zone and open the "dynamic dns" page. Enter the full domain name (it has to contained within the zone you're currently editing) It will spit out a per-subdomain token which can be used with the endpoints described below.

Endpoints

Requesting the first URL will set the record to the caller's IP; Parameter ip is optional and sets the record to an IPv4/IPv6 address you specify. Of note: if you're running a dual-stack setup, you may need to call this address twice, once forcing IPv4 and once IPv6; our side will only change one record at a time.

Important: please do NOT call the endpoint more frequently than once per minute (and preferably every 5 minutes). While it doesn't cause any big problems for us, we still don't like mindless, wasteful traffic: A single device requesting the endpoint once every 10 seconds will make 8640 requests per day - do you really need this?

Responses

On 2026-02-18 we changed the success/failure responses. Apologies if this broke your monitoring or automations. The new responses are as follows:

ResponseStatus CodeDescription
NOK: missing token400The token parameter is missing
NOK: bad token403DDNS token is invalid or missing. Note: DDNS uses separate per-domain tokens, unrelated to the main API token from the settings.
NOK: Backend error. Please contact the sysop. Error string: <reason>500Generic backend error, often related to an invalid IP address formatting, or problems with the zone.
NOK: Nameserver <ns> is unreachable. Please contact the sysop.500Something broke, but it's on us. Let us know so we can investigate
OK: updated. meow!200Success. Indicates that the record got added or modified.
OK: IP matches existing record200Address matches what's already there, no action taken.

Confirmed-working devices

DDNS is a de-facto standard, but everyone seems to implement it going off of vibes. Here's an incomplete list of working devices:

DeviceNotesQuirks
MikroTikdoesn't have real DynDNS support, but you can use a generic HTTP requester in a Scheduler scriptSetting triggers based on interface up/down is unreliable and causes excessive traffic. - please only use the scheduler
generic FRITZ!Boxname the "password" field as "token", use whatever as user.
UniFi Cloud GatewaysUCGs use inadyn as DDNS update service.Remove the protocol at the beginning https:// and replace <token> with %p and <ip> with %i so it looks like this: beta.servfail.network/ddns?token=%p and if you need the ip use beta.servfail.network/ddns?token=%p&ip=%i. As the username use whatever you like, as password put your token.

Quirks