hosting

POST /v1/sites/{siteId}/clone

Copy this site onto a new domain, as a new site.

All hosting endpoints

All developer docs

Authentication

Send an API key as a bearer token. This endpoint does not state a specific permission in the specification, so give your key the least it needs and check the response rather than assuming.

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 POST https://api.zinndigital.com/v1/sites/{siteId}/clone \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "primary_domain": <string> }'

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

Creates a new site on the same plan, product line, stack and region as this one, takes a copy of this site's files and database, and restores that copy onto the new site once it has finished being built — then points the copy's stored web addresses (a WordPress database names its own URLs) at the new domain. This site is only read, never changed. ⭐ A clone is a site blueprint capture and a blueprint deploy in one call, so it is durable end to end and every guard those enforce applies here. The copy is kept as a blueprint named after both domains, and progress is read from GET /v1/sites/{siteId}/clones. The copy's backup does not spend the on-demand backup allowance: a clone is paid for with a site slot, which is checked exactly as POST /v1/sites checks it. A refusal from that check (no slot left, the domain taken) creates nothing. Refusals carry a machine code in error.details[0].code: site_not_active and clone_not_supported (422), backup_in_flight (409). ⛔ "As staging" is a different product — a private copy on the SAME site that publishes back — and lives at /v1/sites/{siteId}/wordpress/staging. Requires both sites.create and sites.blueprint.manage: it spends a site slot and it reads this site's whole content into a copy.

Parameters

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

Request body

NameTypeRequiredWhat it is
primary_domainstringYesThe new site's domain. It must not be in use by any site.
namestringNoA name for the new site in your site list. Defaults to the domain.

Response

NameTypeRequiredWhat it is
siteSiteYes
cloneSiteCloneYes

Errors this endpoint can return

401 · 403 · 404 · 409 · 422 · 429 · 503