hosting

GET /v1/sites/{siteId}/preview-urls

Get the URLs at which a site can be viewed before its DNS resolves.

All hosting endpoints

Authentication

Send an API key as a bearer token. The key must carry the sites.view 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 GET https://api.zinndigital.com/v1/sites/{siteId}/preview-urls \
  -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

How a customer sees their site **before** they point their domain at us — the "temporary URL" the product has advertised on both lines since the first feature matrix (docs/37) and the import flow tells them to use ("Check it over, then point your domain at us"). Requires `sites.view`. Every hostname is **read from the hosting platform, never derived**: they are not uniformly `<label>.<preview-domain>` and a formula produces confidently wrong links (one live package answers with a datacentre label in the middle of the hostname). `vendor_branded` marks a URL whose hostname is not under our configured preview domain — a docs/62 §3.7 breach. Such a URL is reported so staff can see it, and **must not be offered to a customer** by any client. A site with no preview URL returns `200` with an empty `urls` and a machine-readable `unavailable_reason` — that is an answer, not an error, and it is the answer for a site on our own fleet (`unsupported_driver`) as well as for a hosted site the vendor issued nothing for (`none_issued`). ⛔ A fleet site is deliberately **not** a `404` here, unlike the `/hosting/*` reads: a vendor package is a property of the vendor, so a site without one has no such resource, but a preview URL is a property of the site and "this platform cannot mint one yet" is something the customer is owed.

Parameters

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

Response

NameTypeRequiredWhat it is
urlsSitePreviewUrl[]YesEvery preview URL the platform serves for this site.
unavailable_reasonstring<, unsupported_driver, none_issued>YesWhy there is no usable preview URL, blank when there is one. A stable machine identifier the client localises — never display text.

Errors this endpoint can return

401 · 403 · 404 · 429 · 503