API Documentation

Update your dynamic DNS records programmatically

DynDNS2 Protocol (Standard)

KyedNS supports the standard DynDNS2 protocol used by routers, ddclient, and other DynDNS clients.

Update IP Address
GET https://kyedns.com/api/v1/nic/update?hostname=HOSTNAME&myip=IP_ADDRESS
ParameterRequiredDescription
hostnameYesFull hostname (e.g., myserver.dyndns.dk or api.example.com)
myipNoIP address to set. Omit to use your current IP automatically.
Authentication

Use HTTP Basic Auth:

  • Username: the full hostname
  • Password: the update token set in the record settings
Response Codes
ResponseMeaning
good 1.2.3.4IP successfully updated
nochg 1.2.3.4IP unchanged (already set)
badauthInvalid credentials
nohostHostname not found
911Server error

Examples

curl
# Update with auto-detected IP
curl -u "myserver.dyndns.dk:YOUR_TOKEN" \
  "https://kyedns.com/api/v1/nic/update?hostname=myserver.dyndns.dk"

# Update with specific IP
curl -u "myserver.dyndns.dk:YOUR_TOKEN" \
  "https://kyedns.com/api/v1/nic/update?hostname=myserver.dyndns.dk&myip=203.0.113.50"

# Update IPv6
curl -u "myserver.dyndns.dk:YOUR_TOKEN" \
  "https://kyedns.com/api/v1/nic/update?hostname=myserver.dyndns.dk&myip=2001:db8::1"
ddclient
# /etc/ddclient.conf
protocol=dyndns2
use=web, web=https://kyedns.com/ip
ssl=yes
server=kyedns.com
login=myserver.dyndns.dk
password='YOUR_TOKEN'
myserver.dyndns.dk
PowerShell (Windows)
$cred = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("myserver.dyndns.dk:YOUR_TOKEN"))
Invoke-WebRequest -Uri "https://kyedns.com/api/v1/nic/update?hostname=myserver.dyndns.dk" `
  -Headers @{Authorization = "Basic $cred"}

Other Endpoints

Check your IP
GET https://kyedns.com/ip

Returns your public IP address as plain text. No authentication required.

Alternative update endpoints

These are equivalent to the primary endpoint above and exist for compatibility:

  • /api/v1/update?hostname=...&token=...
  • /api/v1/domain_update?hostname=...&token=...

Dual-Stack (IPv4 + IPv6)

KyedNS supports dual-stack: both IPv4 and IPv6 addresses for the same hostname. Each protocol updates independently — sending an IPv4 address preserves the existing IPv6, and vice versa.

# Update IPv4 (keeps existing IPv6)
curl -u "host:token" "https://kyedns.com/api/v1/nic/update?hostname=host.dyndns.dk&myip=1.2.3.4"

# Update IPv6 (keeps existing IPv4)
curl -u "host:token" "https://kyedns.com/api/v1/nic/update?hostname=host.dyndns.dk&myip=2001:db8::1"