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
| Method | Path | Description |
|---|---|---|
GET | /v1/dyn/entitlement | Get Dynway entitlement |
GET | /v1/dyn/webhook-endpoints | List Dynway webhook endpoints |
POST | /v1/dyn/webhook-endpoints | Create 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-secret | Rotate Dynway webhook signing secret |
GET | /v1/dyn/webhook-deliveries | List Dynway webhook deliveries |
GET | /v1/dyn/webhook-deliveries/{delivery_id} | Get Dynway webhook delivery |
POST | /v1/dyn/webhook-deliveries/{delivery_id}/retry | Retry Dynway webhook delivery |
GET | /v1/dyn/events | List Dynway event history |
GET | /v1/dyn/names | List Dynway names |
POST | /v1/dyn/names | Create Dynway name |
GET | /v1/dyn/names/availability | Check Dynway name availability |
GET | /v1/dyn/names/{name}/status | Get Dynway name status |
GET | /v1/dyn/names/{name}/events | List 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-source | Get active update source |
GET | /v1/dyn/names/{name}/desktop-agents | List Dynway Desktop agents |
POST | /v1/dyn/names/{name}/desktop-agents | Enroll Dynway Desktop |
POST | /v1/dyn/names/{name}/desktop-agents/replace | Replace active update source with Dynway Desktop |
POST | /v1/dyn/names/{name}/desktop-agents/{agent_id}/rotate | Rotate Dynway Desktop credential |
DELETE | /v1/dyn/names/{name}/desktop-agents/{agent_id} | Revoke Dynway Desktop agent |
GET | /v1/dyn/names/{name}/tokens | List router tokens |
POST | /v1/dyn/names/{name}/tokens | Create router token |
POST | /v1/dyn/names/{name}/tokens/rotate | Rotate router token |
DELETE | /v1/dyn/names/{name}/tokens/{token_id} | Revoke router token |
GET | /nic/update | DynDNS2 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:
| Field | Type | Description |
|---|---|---|
plan | string | Required. Values: home_free, business_fleet |
customer_type | string | Required. |
enabled | boolean | Required. |
disabled_reason | string | |
name_quota | integer | Required. |
active_tokens_per_name | integer | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
endpoints | array | Required. |
quota | integer | Required. |
used | integer | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | Required. |
url | string | Required. Public HTTPS webhook target. Private, local, and reserved targets are rejected. |
event_types | array | Required. |
is_active | boolean |
Example:
{
"name": "NOC receiver",
"url": "https://hooks.example.com/dynway",
"event_types": [
"dyn.update.good",
"dyn.name.dns_drift"
],
"is_active": true
}Response:
| Field | Type | Description |
|---|---|---|
endpoint | DynWebhookEndpoint | Required. |
signing_secret | string | Required. HMAC signing secret returned only on create or rotation. It is stored in Vault, never maindb. |
warning | string | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
id | string | Required. |
name | string | Required. |
url | string | Required. |
event_types | array | Required. |
is_active | boolean | Required. |
created_at | string | Required. |
updated_at | string | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | |
url | string | |
event_types | array | |
is_active | boolean |
Example:
{
"event_types": [
"dyn.name.dns_drift",
"dyn.name.recovered"
],
"is_active": true
}Response:
| Field | Type | Description |
|---|---|---|
id | string | Required. |
name | string | Required. |
url | string | Required. |
event_types | array | Required. |
is_active | boolean | Required. |
created_at | string | Required. |
updated_at | string | Required. |
Example:
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:
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:
| Field | Type | Description |
|---|---|---|
endpoint | DynWebhookEndpoint | Required. |
signing_secret | string | Required. HMAC signing secret returned only on create or rotation. It is stored in Vault, never maindb. |
warning | string | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
deliveries | array | Required. |
next_cursor | string | Required. Opaque descending delivery-history cursor. |
has_more | boolean | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
id | string | Required. |
endpoint_id | string | Required. |
endpoint_name | string | |
source_event_id | string | Required. The customer-visible Dynway source event ID. |
event_type | string | Required. |
status | string | Required. Values: pending, delivering, delivered, failed, exhausted, cancelled |
attempt_count | integer | Required. |
max_attempts | integer | Required. |
response_code | integer | |
response_body_sample | string | Bounded sample returned by the customer endpoint. |
error_message | string | Sanitized delivery diagnostic; never contains a signing secret or Vault path. |
next_retry_at | string | |
attempted_at | string | |
created_at | string | Required. |
delivered_at | string |
Example:
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:
| Field | Type | Description |
|---|---|---|
id | string | Required. |
endpoint_id | string | Required. |
endpoint_name | string | |
source_event_id | string | Required. The customer-visible Dynway source event ID. |
event_type | string | Required. |
status | string | Required. Values: pending, delivering, delivered, failed, exhausted, cancelled |
attempt_count | integer | Required. |
max_attempts | integer | Required. |
response_code | integer | |
response_body_sample | string | Bounded sample returned by the customer endpoint. |
error_message | string | Sanitized delivery diagnostic; never contains a signing secret or Vault path. |
next_retry_at | string | |
attempted_at | string | |
created_at | string | Required. |
delivered_at | string |
Example:
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:
| Field | Type | Description |
|---|---|---|
events | array | Required. |
next_cursor | string | Required. Opaque cursor for the next page in descending event order. |
has_more | boolean | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
names | array | |
quota | integer | Plan-specific live-name limit. |
used | integer | |
plan | string | Values: home_free, business_fleet |
enabled | boolean | Whether new Dynway names may be created for this account. |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | Required. Single dynway.eu label, for example home for home.dynway.eu. |
Example:
{
"name": "home"
}Response:
| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
fqdn | string | |
current_ip | string | Legacy IPv4 address field. Use current_ipv4/current_ipv6 for dual-stack state. |
current_ipv4 | string | Current public IPv4 address used for the A record. |
current_ipv6 | string | Current public IPv6 address used for the AAAA record. |
last_update_at | string | |
last_seen_at | string | |
seen_count | integer | |
status | string | Current materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift |
dns_drift_detected | boolean | Whether the most recent authoritative DNS observation differed from Dynway state. |
dns_checked_at | string | Most recent successful authoritative DNS drift check. |
metadata | object | Business Fleet labels, tags, and monitoring settings. Null for Home Free. |
dns_removal_pending | boolean | |
created_at | string | |
active_token_count | integer | |
active_token_ids | array |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | Required. |
fqdn | string | Required. |
available | boolean | Required. Whether no live Dynway name currently holds this label. |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | Required. |
fqdn | string | Required. |
status | string | Required. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift |
status_since | string | |
current_ipv4 | string | |
current_ipv6 | string | |
last_update_at | string | |
last_seen_at | string | |
last_good_at | string | |
last_nochg_at | string | |
last_result | string | |
last_error_at | string | |
last_error_code | string | |
dns_drift_detected | boolean | Required. |
dns_checked_at | string | Most recent successful authoritative DNS drift check. |
ipv4_status | string | |
ipv6_status | string | |
monitoring_enabled | boolean | Required. Business Fleet monitoring setting. Always false for Home Free. |
expected_interval_seconds | integer | Business Fleet expected check-in interval. |
offline_after_seconds | integer | Business Fleet offline threshold. |
next_expected_by | string | Next expected router check-in for monitored Business Fleet names. |
Example:
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:
| Field | Type | Description |
|---|---|---|
events | array | Required. |
next_cursor | string | Required. Opaque cursor for the next page in descending event order. |
has_more | boolean | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
fqdn | string | |
current_ip | string | Legacy IPv4 address field. Use current_ipv4/current_ipv6 for dual-stack state. |
current_ipv4 | string | Current public IPv4 address used for the A record. |
current_ipv6 | string | Current public IPv6 address used for the AAAA record. |
last_update_at | string | |
last_seen_at | string | |
seen_count | integer | |
status | string | Current materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift |
dns_drift_detected | boolean | Whether the most recent authoritative DNS observation differed from Dynway state. |
dns_checked_at | string | Most recent successful authoritative DNS drift check. |
metadata | object | Business Fleet labels, tags, and monitoring settings. Null for Home Free. |
dns_removal_pending | boolean | |
created_at | string | |
active_token_count | integer | |
active_token_ids | array |
Example:
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:
| Field | Type | Description |
|---|---|---|
display_name | string | |
site_code | string | |
location_label | string | |
tags | array | |
expected_interval_seconds | integer | |
offline_after_seconds | integer | |
monitoring_enabled | boolean |
Example:
{
"display_name": "Oslo gateway",
"tags": [
"oslo",
"vpn"
],
"expected_interval_seconds": 900,
"offline_after_seconds": 1800
}Response:
| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
fqdn | string | |
current_ip | string | Legacy IPv4 address field. Use current_ipv4/current_ipv6 for dual-stack state. |
current_ipv4 | string | Current public IPv4 address used for the A record. |
current_ipv6 | string | Current public IPv6 address used for the AAAA record. |
last_update_at | string | |
last_seen_at | string | |
seen_count | integer | |
status | string | Current materialized status when the Business Fleet schema is available. Values: unknown, online, late, offline, auth_error, abuse_limited, server_error, dns_drift |
dns_drift_detected | boolean | Whether the most recent authoritative DNS observation differed from Dynway state. |
dns_checked_at | string | Most recent successful authoritative DNS drift check. |
metadata | object | Business Fleet labels, tags, and monitoring settings. Null for Home Free. |
dns_removal_pending | boolean | |
created_at | string | |
active_token_count | integer | |
active_token_ids | array |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | |
fqdn | string | |
deleted | boolean | |
dns_removal_pending | boolean | |
revoked_tokens | integer |
Example:
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:
| Field | Type | Description |
|---|---|---|
name | string | Required. |
fqdn | string | Required. |
active_source | object | Null when the name has no active router or desktop updater. |
Example:
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:
| Field | Type | Description |
|---|---|---|
agents | array | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
device_label | string | Required. |
platform | string | Required. Values: windows, macos, linux |
version | string |
Example:
{
"device_label": "Office Mac",
"platform": "macos",
"version": "1.0.0"
}Response:
Example:
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:
| Field | Type | Description |
|---|---|---|
device_label | string | Required. |
platform | string | Required. Values: windows, macos, linux |
version | string | |
confirm_replace | boolean | Required. Must be true to revoke the existing active source and replace it atomically. |
Example:
{
"device_label": "Office Mac",
"platform": "macos",
"version": "1.0.0",
"confirm_replace": true
}Response:
Example:
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:
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:
| Field | Type | Description |
|---|---|---|
agent_id | string | Required. |
revoked | boolean | Required. |
Example:
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:
| Field | Type | Description |
|---|---|---|
tokens | array |
Example:
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:
| Field | Type | Description |
|---|---|---|
description | string |
Example:
{
"description": "home-router"
}Response:
| Field | Type | Description |
|---|---|---|
dyn_name_id | string | |
name | string | |
fqdn | string | |
token_id | string | |
username | string | Same value as token_id; use as DynDNS Basic Auth username. |
password | string | Router password returned once at token creation or rotation. |
created_at | string | |
warning | string |
Example:
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:
| Field | Type | Description |
|---|---|---|
description | string |
Example:
{
"description": "home-router"
}Response:
| Field | Type | Description |
|---|---|---|
dyn_name_id | string | |
name | string | |
fqdn | string | |
token_id | string | |
username | string | Same value as token_id; use as DynDNS Basic Auth username. |
password | string | Router password returned once at token creation or rotation. |
created_at | string | |
warning | string |
Example:
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:
| Field | Type | Description |
|---|---|---|
token_id | string | |
revoked | boolean |
Example:
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:
curl https://api.wayscloud.services/nic/update \
-H "X-API-Key: YOUR_API_KEY"