hosting
GET /v1/sites/{siteId}/domain-pointing
Does this site's domain actually reach us?
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}/domain-pointing \
-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
The measured answer, composed from the domain's public NS and A/AAAA records, a docroot nonce fetched through the public name, and whether we host a site on that name at all — never from a flag anybody set. Carries the exact next step for the customer and what to set where. A site we have not measured yet answers unknown with a null measured_at rather than a 404: "we have not looked" is a real answer and must not read as "fine". Requires sites.view.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
siteId (path) | Uuid | Yes | Site ID (UUIDv7). |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
hostname | string | Yes | — |
state | string<moving_in, serving, serving_via_other_dns, propagating, awaiting_record, awaiting_pointing, pointed_elsewhere, zone_expired, unknown> | Yes | serving reaches us on our nameservers. serving_via_other_dns is PROVEN to reach us through DNS the customer runs — never show it a nameserver instruction, that would take a… |
reason | string | Yes | A stable machine code for the leg that decided the state. |
next_action | string<set_nameservers_at_registrar, add_record_at_your_dns_provider, recreate_dns_zone, > | Yes | The step the customer takes, or empty when there is none. A stable code, never a sentence — the words are localized on the surface. |
measured_at | string | Yes | When the VERDICT was reached. Null means never measured. Deliberately not the delegation row's checked_at, which moves on every reading including one that established nothing. |
observed | object | Yes | — |
set | object | Yes | What the customer must set. Empty lists mean "not applicable". |
move | object | No | Present when a partner moved (or is moving) the site in: who holds the zone, the records pointing at us, proxied or not, the SSL mode and the certificate state. |
Errors this endpoint can return
401 · 403 · 404 · 429