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. A router or Dynway Desktop updates the hostname through the standard DynDNS2 protocol, while the WAYSCloud API is used to create the name and manage the updater credentials. IPv4 updates maintain the A record; IPv6 updates maintain the AAAA record.

Dynway has no separate account. Private WAYSCloud accounts receive Home Free and business accounts receive Business Fleet. Use GET /v1/dyn/entitlement to read the authenticated customer's plan and enforced limits; do not infer either from router activity.

Each live hostname has one active update source. The control API below manages customer-owned Dynway names, router tokens, and desktop updater credentials; changing source is explicit and atomic. The router update endpoint is documented here as /nic/update, but it is served from https://dynupdate.wayscloud.services.

Endpoints

MethodPathDescription
GET/v1/dyn/entitlementGet Dynway entitlement
GET/v1/dyn/webhook-endpointsList Dynway webhook endpoints
POST/v1/dyn/webhook-endpointsCreate Dynway webhook endpoint
GET/v1/dyn/webhook-endpoints/{endpoint_id}Get Dynway webhook endpoint
PATCH/v1/dyn/webhook-endpoints/{endpoint_id}Update Dynway webhook endpoint
DELETE/v1/dyn/webhook-endpoints/{endpoint_id}Delete Dynway webhook endpoint
POST/v1/dyn/webhook-endpoints/{endpoint_id}/rotate-secretRotate Dynway webhook signing secret
GET/v1/dyn/webhook-deliveriesList Dynway webhook deliveries
GET/v1/dyn/webhook-deliveries/{delivery_id}Get Dynway webhook delivery
POST/v1/dyn/webhook-deliveries/{delivery_id}/retryRetry Dynway webhook delivery
GET/v1/dyn/eventsList Dynway event history
GET/v1/dyn/namesList Dynway names
POST/v1/dyn/namesCreate Dynway name
GET/v1/dyn/names/availabilityCheck Dynway name availability
GET/v1/dyn/names/{name}/statusGet Dynway name status
GET/v1/dyn/names/{name}/eventsList Dynway name event history
GET/v1/dyn/names/{name}Get Dynway name
PATCH/v1/dyn/names/{name}Update Business Fleet name metadata
DELETE/v1/dyn/names/{name}Delete Dynway name
GET/v1/dyn/names/{name}/update-sourceGet active update source
GET/v1/dyn/names/{name}/desktop-agentsList Dynway Desktop agents
POST/v1/dyn/names/{name}/desktop-agentsEnroll Dynway Desktop
POST/v1/dyn/names/{name}/desktop-agents/replaceReplace active update source with Dynway Desktop
POST/v1/dyn/names/{name}/desktop-agents/{agent_id}/rotateRotate Dynway Desktop credential
DELETE/v1/dyn/names/{name}/desktop-agents/{agent_id}Revoke Dynway Desktop agent
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/entitlement

Get Dynway entitlement

Return the authenticated customer's Dynway plan and currently enforced limits. Private WAYSCloud accounts map to Home Free; business accounts map to Business Fleet. The result is derived from canonical WAYSCloud account state and must not be inferred from router activity.

Response:

FieldTypeDescription
planstringRequired. Values: home_free, business_fleet
customer_typestringRequired.
enabledbooleanRequired.
disabled_reasonstring
name_quotaintegerRequired.
active_tokens_per_nameintegerRequired.

Example:

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

GET /v1/dyn/webhook-endpoints

List Dynway webhook endpoints

List webhook endpoints owned by the authenticated Business Fleet customer. Endpoint configuration is customer-scoped; signing secrets and Vault references are never returned. Requires dyn:read.

Response:

FieldTypeDescription
endpointsarrayRequired.
quotaintegerRequired.
usedintegerRequired.

Example:

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

POST /v1/dyn/webhook-endpoints

Create Dynway webhook endpoint

Create one Business Fleet webhook endpoint for selected Dynway event types. Targets must use HTTPS and resolve only to public addresses. The HMAC signing secret is returned exactly once, is kept in Vault, and is never stored in maindb. Requires active Dynway service and dyn:write.

Request Body:

FieldTypeDescription
namestringRequired.
urlstringRequired. Public HTTPS webhook target. Private, local, and reserved targets are rejected.
event_typesarrayRequired.
is_activeboolean

Example:

json
{
  "name": "NOC receiver",
  "url": "https://hooks.example.com/dynway",
  "event_types": [
    "dyn.update.good",
    "dyn.name.dns_drift"
  ],
  "is_active": true
}

Response:

FieldTypeDescription
endpointDynWebhookEndpointRequired.
signing_secretstringRequired. HMAC signing secret returned only on create or rotation. It is stored in Vault, never maindb.
warningstringRequired.

Example:

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

GET /v1/dyn/webhook-endpoints/

Get Dynway webhook endpoint

Get one customer-owned Business Fleet webhook endpoint. Signing secrets and Vault references are never returned. Requires dyn:read.

Response:

FieldTypeDescription
idstringRequired.
namestringRequired.
urlstringRequired.
event_typesarrayRequired.
is_activebooleanRequired.
created_atstringRequired.
updated_atstringRequired.

Example:

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

PATCH /v1/dyn/webhook-endpoints/

Update Dynway webhook endpoint

Update a Business Fleet webhook endpoint without changing its signing secret. Omitted fields remain unchanged. HTTPS/public-target validation runs again when url changes. Requires active Dynway service and dyn:write.

Request Body:

FieldTypeDescription
namestring
urlstring
event_typesarray
is_activeboolean

Example:

json
{
  "event_types": [
    "dyn.name.dns_drift",
    "dyn.name.recovered"
  ],
  "is_active": true
}

Response:

FieldTypeDescription
idstringRequired.
namestringRequired.
urlstringRequired.
event_typesarrayRequired.
is_activebooleanRequired.
created_atstringRequired.
updated_atstringRequired.

Example:

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

DELETE /v1/dyn/webhook-endpoints/

Delete Dynway webhook endpoint

Soft-delete a Business Fleet webhook endpoint, deactivate it, and retire its signing secret from Vault after the database commit. The endpoint remains removable even when Dynway is otherwise explicitly inactive. Requires dyn:write.

Example:

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

POST /v1/dyn/webhook-endpoints/{endpoint_id}/rotate-secret

Rotate Dynway webhook signing secret

Create a replacement signing secret in Vault, atomically point the endpoint to it, then retire the prior secret. The replacement is returned exactly once. Requires active Dynway service and dyn:write.

Response:

FieldTypeDescription
endpointDynWebhookEndpointRequired.
signing_secretstringRequired. HMAC signing secret returned only on create or rotation. It is stored in Vault, never maindb.
warningstringRequired.

Example:

bash
curl -X POST https://api.wayscloud.services/v1/dyn/webhook-endpoints/{endpoint_id}/rotate-secret \
  -H "X-API-Key: YOUR_API_KEY"

GET /v1/dyn/webhook-deliveries

List Dynway webhook deliveries

List customer-owned Business Fleet webhook delivery diagnostics in descending creation order. It returns bounded response samples and sanitized errors, but never callback payloads, signing secrets, or Vault references. Requires dyn:read.

Response:

FieldTypeDescription
deliveriesarrayRequired.
next_cursorstringRequired. Opaque descending delivery-history cursor.
has_morebooleanRequired.

Example:

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

GET /v1/dyn/webhook-deliveries/

Get Dynway webhook delivery

Get one customer-owned Business Fleet webhook delivery diagnostic without exposing its callback payload, signing secret, or Vault reference. Requires dyn:read.

Response:

FieldTypeDescription
idstringRequired.
endpoint_idstringRequired.
endpoint_namestring
source_event_idstringRequired. The customer-visible Dynway source event ID.
event_typestringRequired.
statusstringRequired. Values: pending, delivering, delivered, failed, exhausted, cancelled
attempt_countintegerRequired.
max_attemptsintegerRequired.
response_codeinteger
response_body_samplestringBounded sample returned by the customer endpoint.
error_messagestringSanitized delivery diagnostic; never contains a signing secret or Vault path.
next_retry_atstring
attempted_atstring
created_atstringRequired.
delivered_atstring

Example:

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

POST /v1/dyn/webhook-deliveries/{delivery_id}/retry

Retry Dynway webhook delivery

Queue one terminal failed or exhausted Business Fleet delivery for a fresh retry cycle. The API only updates the durable ledger; the delivery worker performs the actual callback. Requires active Dynway service, an active endpoint, and dyn:write.

Response:

FieldTypeDescription
idstringRequired.
endpoint_idstringRequired.
endpoint_namestring
source_event_idstringRequired. The customer-visible Dynway source event ID.
event_typestringRequired.
statusstringRequired. Values: pending, delivering, delivered, failed, exhausted, cancelled
attempt_countintegerRequired.
max_attemptsintegerRequired.
response_codeinteger
response_body_samplestringBounded sample returned by the customer endpoint.
error_messagestringSanitized delivery diagnostic; never contains a signing secret or Vault path.
next_retry_atstring
attempted_atstring
created_atstringRequired.
delivered_atstring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/dyn/webhook-deliveries/{delivery_id}/retry \
  -H "X-API-Key: YOUR_API_KEY"

GET /v1/dyn/events

List Dynway event history

List sanitized event history owned by the authenticated WAYSCloud customer. Home Free returns at most 10 events from the last 24 hours. Business Fleet returns up to 100 events per page from the last 30 days. The optional status filter uses each name's current materialized status, while event_type filters the historical event type. Router passwords, authorization data, raw URLs, source streams, and router fingerprints are never returned.

Response:

FieldTypeDescription
eventsarrayRequired.
next_cursorstringRequired. Opaque cursor for the next page in descending event order.
has_morebooleanRequired.

Example:

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

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, materialized status, update timestamps, and active router token metadata. Business Fleet responses also include customer labels, tags, and monitoring settings. Use status to filter by current materialized status. Requires dyn:read scope; dyn:write implies read.

Response:

FieldTypeDescription
namesarray
quotaintegerPlan-specific live-name limit.
usedinteger
planstringValues: home_free, business_fleet
enabledbooleanWhether new Dynway names may be created for this account.

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 within the authenticated customer's Home Free or Business Fleet quota. 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
statusstringCurrent materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift
dns_drift_detectedbooleanWhether the most recent authoritative DNS observation differed from Dynway state.
dns_checked_atstringMost recent successful authoritative DNS drift check.
metadataobjectBusiness Fleet labels, tags, and monitoring settings. Null for Home Free.
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/availability

Check Dynway name availability

Check whether a valid *.dynway.eu label is currently free to create. This is an advisory lookup for authenticated WAYSCloud customers: it never reveals who owns an unavailable name, and creation still enforces the live-name uniqueness constraint to handle concurrent requests. Requires dyn:read scope; dyn:write implies read.

Response:

FieldTypeDescription
namestringRequired.
fqdnstringRequired.
availablebooleanRequired. Whether no live Dynway name currently holds this label.

Example:

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

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

Get Dynway name status

Get the customer-visible materialized status for one live Dynway hostname. Home Free receives basic address and last-seen state. Business Fleet also receives its monitoring configuration and the next expected router check-in when monitoring is active. Requires dyn:read scope.

Response:

FieldTypeDescription
namestringRequired.
fqdnstringRequired.
statusstringRequired. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift
status_sincestring
current_ipv4string
current_ipv6string
last_update_atstring
last_seen_atstring
last_good_atstring
last_nochg_atstring
last_resultstring
last_error_atstring
last_error_codestring
dns_drift_detectedbooleanRequired.
dns_checked_atstringMost recent successful authoritative DNS drift check.
ipv4_statusstring
ipv6_statusstring
monitoring_enabledbooleanRequired. Business Fleet monitoring setting. Always false for Home Free.
expected_interval_secondsintegerBusiness Fleet expected check-in interval.
offline_after_secondsintegerBusiness Fleet offline threshold.
next_expected_bystringNext expected router check-in for monitored Business Fleet names.

Example:

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

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

List Dynway name event history

List sanitized event history for one live customer-owned Dynway hostname. Home Free returns at most 10 events from the last 24 hours; Business Fleet returns up to 100 events per page from the last 30 days. Requires dyn:read scope.

Response:

FieldTypeDescription
eventsarrayRequired.
next_cursorstringRequired. Opaque cursor for the next page in descending event order.
has_morebooleanRequired.

Example:

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

GET /v1/dyn/names/

Get Dynway name

Get current state for one dynamic DNS name, including current IP, materialized status, last update timestamps, active router token IDs, and Business Fleet metadata when applicable.

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
statusstringCurrent materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift
dns_drift_detectedbooleanWhether the most recent authoritative DNS observation differed from Dynway state.
dns_checked_atstringMost recent successful authoritative DNS drift check.
metadataobjectBusiness Fleet labels, tags, and monitoring settings. Null for Home Free.
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"

PATCH /v1/dyn/names/

Update Business Fleet name metadata

Update labels, tags, and monitoring settings for one live Dynway name. This endpoint is available only to active Business Fleet accounts and requires dyn:write. Omitted fields remain unchanged. offline_after_seconds must be greater than or equal to expected_interval_seconds; both values use conservative server-side bounds.

Request Body:

FieldTypeDescription
display_namestring
site_codestring
location_labelstring
tagsarray
expected_interval_secondsinteger
offline_after_secondsinteger
monitoring_enabledboolean

Example:

json
{
  "display_name": "Oslo gateway",
  "tags": [
    "oslo",
    "vpn"
  ],
  "expected_interval_seconds": 900,
  "offline_after_seconds": 1800
}

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
statusstringCurrent materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift
dns_drift_detectedbooleanWhether the most recent authoritative DNS observation differed from Dynway state.
dns_checked_atstringMost recent successful authoritative DNS drift check.
metadataobjectBusiness Fleet labels, tags, and monitoring settings. Null for Home Free.
dns_removal_pendingboolean
created_atstring
active_token_countinteger
active_token_idsarray

Example:

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

DELETE /v1/dyn/names/

Delete Dynway name

Soft-delete a Dynway name and revoke its active router and desktop updater credentials. 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}/update-source

Get active update source

Return the one active Dynway update source for a live name. A source is either a router token or a Dynway Desktop installation. The response contains customer-safe status metadata only; it never returns a credential identifier, password, or secret.

Response:

FieldTypeDescription
namestringRequired.
fqdnstringRequired.
active_sourceobjectNull when the name has no active router or desktop updater.

Example:

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

GET /v1/dyn/names/{name}/desktop-agents

List Dynway Desktop agents

List current and revoked desktop updater installations for one live name. Secrets are never returned from this endpoint.

Response:

FieldTypeDescription
agentsarrayRequired.

Example:

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

POST /v1/dyn/names/{name}/desktop-agents

Enroll Dynway Desktop

Create a desktop updater credential when the name has no active update source. The secret is returned once to the enrolling client and cannot be retrieved later. If another router or desktop client is already active, use the explicit replace endpoint instead.

Request Body:

FieldTypeDescription
device_labelstringRequired.
platformstringRequired. Values: windows, macos, linux
versionstring

Example:

json
{
  "device_label": "Office Mac",
  "platform": "macos",
  "version": "1.0.0"
}

Response:

Example:

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

POST /v1/dyn/names/{name}/desktop-agents/replace

Replace active update source with Dynway Desktop

Atomically revoke the active router or desktop updater and enroll this desktop installation. Set confirm_replace to true. The operation leaves no interval in which two updater credentials are active.

Request Body:

FieldTypeDescription
device_labelstringRequired.
platformstringRequired. Values: windows, macos, linux
versionstring
confirm_replacebooleanRequired. Must be true to revoke the existing active source and replace it atomically.

Example:

json
{
  "device_label": "Office Mac",
  "platform": "macos",
  "version": "1.0.0",
  "confirm_replace": true
}

Response:

Example:

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

POST /v1/dyn/names/{name}/desktop-agents/{agent_id}/rotate

Rotate Dynway Desktop credential

Replace the credential for the active desktop updater and return the new secret once. The previous credential is invalidated synchronously before the mutation commits.

Response:

Example:

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

DELETE /v1/dyn/names/{name}/desktop-agents/

Revoke Dynway Desktop agent

Immediately revoke a desktop updater credential. When the agent is the active source, the name is left without an active updater until a router or desktop client is enrolled explicitly.

Response:

FieldTypeDescription
agent_idstringRequired.
revokedbooleanRequired.

Example:

bash
curl -X DELETE https://api.wayscloud.services/v1/dyn/names/{name}/desktop-agents/{agent_id} \
  -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. A live desktop source blocks this operation until it is explicitly replaced or revoked.

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. A live desktop source blocks this operation until it is explicitly replaced or revoked.

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"