Polfence speaks the standard dyndns2 remote-access protocol. If your client can update Dyn, No-IP or DuckDNS, it can update Polfence.
Send an HTTP GET (or POST) to:
GET https://update.polfence.net/nic/update?hostname=<FQDN>&myip=<IP>&token=<TOKEN>
Plain http:// works too — the update endpoint never redirects, so routers and embedded clients without modern TLS can still update.
Parameters:
The response is plain text, one line per hostname:
Authentication is either the token query parameter or HTTP Basic auth, where the password is your update token. The username is recorded but not checked, so any value works.
Leave out myip and Polfence uses the source address of the request — ideal when the updating device is the one whose IP you want to publish. To set a specific address (or both families), pass them explicitly:
# IPv4 + IPv6 in one call curl "https://update.polfence.net/nic/update?hostname=myhome.polfence.net\ &myip=203.0.113.10,2001:db8::10&token=YOUR_TOKEN"
In your router's Dynamic DNS section, pick a Custom / dyndns2 provider and map the fields:
Run ddclient on any Linux/macOS box that's always on:
# /etc/ddclient.conf protocol=dyndns2 use=web, web=checkip.amazonaws.com server=update.polfence.net ssl=yes login=you@example.com password=YOUR_TOKEN myhome.polfence.net
Every hostname can publish TXT records, so you can issue real certificates — including wildcards like *.myhome.polfence.net — via the ACME DNS-01 challenge. Manage records on the hostname page, or let your ACME client publish them itself through our lego-compatible endpoint (httpreq provider, authenticated with the hostname's update token):
export HTTPREQ_ENDPOINT=https://www.polfence.com/api/acme export HTTPREQ_USERNAME=polfence export HTTPREQ_PASSWORD=YOUR_TOKEN lego --email you@example.com --dns httpreq \ -d 'myhome.polfence.net' -d '*.myhome.polfence.net' run
The same works from Traefik (certificatesresolvers.….acme.dnschallenge.provider=httpreq) and anything else built on lego. Enable Wildcard records on the hostname to also resolve every subdomain to your IP.