hosting

DELETE /v1/sites/{siteId}/cdn/swap

Abandon a CDN move and put the site back.

All hosting endpoints

All developer docs

Authentication

Send an API key as a bearer token. The key must carry the hosting.cdn.manage permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X DELETE https://api.zinndigital.com/v1/sites/{siteId}/cdn/swap \
  -H "Authorization: Bearer zdk_live_…"

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Rolls a move back and returns the site to the account it came from. ⭐ Exists because a move can wait on your registrar indefinitely, and that is the correct state rather than a failure — both edges serve the site throughout. Nothing rolls it back on a timer, because doing so would move a site that has been served happily from the destination for days. You say when. ⛔ Refused once the move has completed: the source zone has gone by then, so there is nothing to put the site back onto. ⛔ Also refused once the domain's nameservers have been changed or the new delegation has been seen (cancellable is false): the registry already points at the new zone, and undoing the move would take the site offline. Requires hosting.cdn.manage.

Parameters

NameTypeRequiredWhat it is
siteId (path)UuidYesSite ID (UUIDv7).

Response

NameTypeRequiredWhat it is
idstringYes
site_idstringYes
statusstring<pending, creating, repointing, awaiting_delegation, completed, rolled_back, failed>Yesawaiting_delegation is the state to render carefully: the move is complete on our side, both edges are serving the site, and it is waiting on your registrar. ⛔…
from_kindstringYes
from_labelstringYes
to_kindstringYes
to_labelstringYes
to_account_idobjectYes
nameserversstring[]YesThe nameservers your domain must be delegated to. ⛔ The field this operation exists to deliver: without it the move never completes, and it does not fail either — it simply…
nameservers_appliedbooleanYesWhether we set them (the domain is registered with us, or with a registrar you have connected) or you must.
delegation_observed_atobjectYesWhen the new delegation was observed answering — never when it was requested. The source zone is not removed until this is set.
old_zone_removedbooleanYesAn observation, not an intention. A source zone we could not delete leaves you being billed by that vendor for a site it no longer serves.
records_copiedintegerYesHow many of your OTHER DNS records were carried to the new zone. ⛔ Moving between two zone-owning CDNs re-delegates the whole domain, so your MX, SPF, DMARC and…
records_source_readbooleanYesWhether your existing records could be read at all. ⛔ Read this with records_copied, never instead of it: 0 is the truthful answer for a domain that has nothing but an…
detailstringYes
created_atstringYes
completed_atobjectYes
in_flightbooleanYesawaiting_delegation counts as in flight. It is the state most likely to be read as finished — the site works, both edges serve it — and starting a second move from there would…
cancellablebooleanYesWhether DELETE can still put the site back. ⛔ Narrower than in_flight: false once the domain's nameservers have been changed or the new delegation has been seen answering,…

Errors this endpoint can return

401 · 403 · 404 · 422 · 429