hosting

POST /v1/sites/{siteId}/edge-domains

Point a domain at this site's deploy target.

All hosting endpoints

Authentication

Send an API key as a bearer token. The key must carry the hosting.deploy.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 POST https://api.zinndigital.com/v1/sites/{siteId}/edge-domains \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "hostname": <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

Attaches the hostname at the provider and, unless `write_dns` is false, publishes its DNS records in the same call — on the customer's own connected DNS account where they have one, otherwise on ours. A DNS failure does not fail the bind: the binding at the provider has already happened, and reporting failure would leave the customer retrying into an "already bound" error. The DNS outcome is on the returned row instead. Requires `hosting.deploy.manage`.

Parameters

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

Request body

NameTypeRequiredWhat it is
hostnamestringYes
write_dnsbooleanNoPublish the DNS records in the same call. Defaults to true because doing the DNS for the customer is the point of this surface; opting out is the unusual request.

Response

NameTypeRequiredWhat it is
hostnamestringYes
is_primarybooleanYes
statusstring<pending, active, failed>YesThe provider's verdict on the binding.
is_apexbooleanYesWhether this hostname is the zone apex. An apex cannot hold a CNAME, so its record set is provider-specific and sometimes impossible — see `refusal`.
dns_modestring<unknown, our_zone, byo_dns, nameservers, manual>YesWhich DNS tier this hostname landed on. `unknown` means nothing has been attempted yet and must not be rendered as "no action needed".
dns_zonestringYes
dns_vendorstringYes
dns_written_atstringYes
resolvesbooleanYesThree-valued. `true` every wanted record is live, `false` at least one answered and is wrong, `null` no check has answered. `null` is not `false`.
last_checked_atstringYes
last_check_detailstringYes
recordsDnsRecordPlan[]Yes
refusalstringYesNon-empty when no valid record set exists for this hostname at this provider — today, a Cloudflare Pages apex on a zone that is not on Cloudflare DNS, because that provider publ…

Errors this endpoint can return

401 · 403 · 404 · 422 · 429