Skip to content

Dynway API

Dynway is WAYSCloud Dynamic DNS for networks where the public IPv4 or IPv6 address can change.

Use it to give a home router, office network, lab server, camera gateway, VPN endpoint, or small self-hosted service a stable hostname such as home.dynway.eu. The router updates the hostname through the standard DynDNS2 protocol, while the WAYSCloud API is used to create the name and manage the router credentials. IPv4 updates maintain the A record; IPv6 updates maintain the AAAA record.

The control API below manages customer-owned Dynway names and router tokens. The router update endpoint is documented here as /nic/update, but it is served from https://dynupdate.wayscloud.services.

Endpoints

MethodPathDescription
GET/v1/dyn/namesList Dynway names
POST/v1/dyn/namesCreate Dynway name
GET/v1/dyn/names/{name}Get Dynway name
DELETE/v1/dyn/names/{name}Delete Dynway name
GET/v1/dyn/names/{name}/tokensList router tokens
POST/v1/dyn/names/{name}/tokensCreate router token
POST/v1/dyn/names/{name}/tokens/rotateRotate router token
DELETE/v1/dyn/names/{name}/tokens/{token_id}Revoke router token
GET/nic/updateDynDNS2 router update

GET /v1/dyn/names

List Dynway names

List the customer-owned Dynway hostnames that can be updated by routers or small servers. Each name is a stable *.dynway.eu hostname with current IPv4/IPv6 state, update timestamps, and active router token metadata. Requires dyn:read scope; dyn:write implies read.

Response:

FieldTypeDescription
namesarray
quotainteger
usedinteger

Example:

bash
curl https://api.wayscloud.services/v1/dyn/names \
  -H "X-API-Key: YOUR_API_KEY"

POST /v1/dyn/names

Create Dynway name

Create one customer-owned hostname under dynway.eu. In v1 each customer can have one live name. Requires dyn:write scope.

Request Body:

FieldTypeDescription
namestringRequired. Single dynway.eu label, for example home for home.dynway.eu.

Example:

json
{
  "name": "home"
}

Response:

FieldTypeDescription
idstring
namestring
fqdnstring
current_ipstringLegacy IPv4 address field. Use current_ipv4/current_ipv6 for dual-stack state.
current_ipv4stringCurrent public IPv4 address used for the A record.
current_ipv6stringCurrent public IPv6 address used for the AAAA record.
last_update_atstring
last_seen_atstring
seen_countinteger
dns_removal_pendingboolean
created_atstring
active_token_countinteger
active_token_idsarray

Example:

bash
curl -X POST https://api.wayscloud.services/v1/dyn/names \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{...}'

GET /v1/dyn/names/

Get Dynway name

Get current state for one dynamic DNS name, including current IP, last update timestamps, and active router token IDs.

Response:

FieldTypeDescription
idstring
namestring
fqdnstring
current_ipstringLegacy IPv4 address field. Use current_ipv4/current_ipv6 for dual-stack state.
current_ipv4stringCurrent public IPv4 address used for the A record.
current_ipv6stringCurrent public IPv6 address used for the AAAA record.
last_update_atstring
last_seen_atstring
seen_countinteger
dns_removal_pendingboolean
created_atstring
active_token_countinteger
active_token_idsarray

Example:

bash
curl https://api.wayscloud.services/v1/dyn/names/{name} \
  -H "X-API-Key: YOUR_API_KEY"

DELETE /v1/dyn/names/

Delete Dynway name

Soft-delete a Dynway name and revoke its active router tokens. External DNS record deletion is handled by the guarded cleanup process, so dns_removal_pending is set to true.

Response:

FieldTypeDescription
namestring
fqdnstring
deletedboolean
dns_removal_pendingboolean
revoked_tokensinteger

Example:

bash
curl -X DELETE https://api.wayscloud.services/v1/dyn/names/{name} \
  -H "X-API-Key: YOUR_API_KEY"

GET /v1/dyn/names/{name}/tokens

List router tokens

List router token metadata for a Dynway name. Token passwords are never returned after creation.

Response:

FieldTypeDescription
tokensarray

Example:

bash
curl https://api.wayscloud.services/v1/dyn/names/{name}/tokens \
  -H "X-API-Key: YOUR_API_KEY"

POST /v1/dyn/names/{name}/tokens

Create router token

Issue the first active router token for a Dynway name. The router password is returned once and cannot be retrieved later.

Request Body:

FieldTypeDescription
descriptionstring

Example:

json
{
  "description": "home-router"
}

Response:

FieldTypeDescription
dyn_name_idstring
namestring
fqdnstring
token_idstring
usernamestringSame value as token_id; use as DynDNS Basic Auth username.
passwordstringRouter password returned once at token creation or rotation.
created_atstring
warningstring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/dyn/names/{name}/tokens \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{...}'

POST /v1/dyn/names/{name}/tokens/rotate

Rotate router token

Revoke active router tokens for the Dynway name and return one new token. Update the router immediately with the returned username/password.

Request Body:

FieldTypeDescription
descriptionstring

Example:

json
{
  "description": "home-router"
}

Response:

FieldTypeDescription
dyn_name_idstring
namestring
fqdnstring
token_idstring
usernamestringSame value as token_id; use as DynDNS Basic Auth username.
passwordstringRouter password returned once at token creation or rotation.
created_atstring
warningstring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/dyn/names/{name}/tokens/rotate \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{...}'

DELETE /v1/dyn/names/{name}/tokens/

Revoke router token

Revoke one active router token and invalidate the dataplane warm cache.

Response:

FieldTypeDescription
token_idstring
revokedboolean

Example:

bash
curl -X DELETE https://api.wayscloud.services/v1/dyn/names/{name}/tokens/{token_id} \
  -H "X-API-Key: YOUR_API_KEY"

GET /nic/update

DynDNS2 router update

Update the A or AAAA record for a Dynway hostname from a router or small server.

This endpoint is served from https://dynupdate.wayscloud.services, not from the main API host. Use HTTP Basic Auth with the Dynway token ID as username and the router password as password.

Dynway accepts public IPv4 and IPv6 addresses. IPv4 updates maintain the A record; IPv6 updates maintain the AAAA record. Dynway follows DynDNS2 response semantics: protocol success and protocol errors are returned as HTTP 200, and the response body contains values such as good <ip>, nochg <ip>, badauth, nohost, notfqdn, badagent, abuse, or 911.

Example:

bash
curl https://api.wayscloud.services/nic/update \
  -H "X-API-Key: YOUR_API_KEY"