partner
GET /v1/partner/customers/{externalId}/hosting-slots
How many sites each of your customer's hosting plans can still take.
Authentication
Send an API key as a bearer token. The key must carry the partner.domains 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/partner/customers/{externalId}/hosting-slots \
-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
One row per product line the customer holds a site-hosting plan on. max_sites, used_sites and free_sites come from the SAME function that refuses a site create when a plan is full, so a row with free_sites > 0 is one createPartnerSiteMove will accept. Every site that is not yet deleted counts as used — including one that failed to build and one being deleted. A customer on a free TRIAL has a row too (kind: trial): its subscription_id is the trial's id, which createPartnerSiteMove accepts as subscription_id. replaceable_sites lists the sites a move may import into instead of taking a free slot, each with replaceable_reason: temporary_host (still on a temporary address of ours) or empty_starter (the site the plan or trial was delivered with, on the customer's own domain, never imported into — the move re-checks that it is still empty and refuses with replace_site_not_empty if it is not). available_sites is free_sites plus the replaceable ones: the number to decide on whether a move can be offered. A plan that cannot take an imported site is listed with importable: false so you can say why. Requires partner.domains.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
externalId (path) | string | Yes | YOUR id for that customer — whatever your own system calls them. It is what makes linking idempotent, and it is scoped to your partner programme: another partner's id is a 404… |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
slots | PartnerHostingSlot[] | Yes | — |
Errors this endpoint can return
401 · 403 · 404 · 429