hosting

PUT /v1/sites/{siteId}/maintenance-mode

Take a site into or out of maintenance.

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 PUT https://api.zinndigital.com/v1/sites/{siteId}/maintenance-mode \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": <boolean> }'

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

Switches every alias at once and returns the whole new state, so the client re-renders from the server's answer rather than from what it asked for. `PUT` because the body states the desired end state: sending the same value twice is the same site. ⛔ The customer's own maintenance-page HTML travels with the vendor's row, and this operation carries it through unchanged. A toggle built from scratch blanks it, replacing a page the customer wrote with a default one — which is why the write reads the existing row first. Turning it **on** takes the site off the internet for every visitor, so the client confirms before calling. Requires `sites.view` **and** `sites.panel_access`. `404` for a site with no managed hosting package.

Parameters

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

Request body

NameTypeRequiredWhat it is
enabledbooleanYesWhether visitors should be shown the maintenance page. There is no third value: `getSiteMaintenanceMode` may report a mixed set of aliases, but a caller asking to change it must…

Response

NameTypeRequiredWhat it is
availablebooleanYesWhether the package exposes maintenance mode at all. False renders an explanation rather than an empty list.
enabledbooleanYes⛔ `true` only when **every** alias is in maintenance. One alias still serving is a live site, and a single rounded boolean would hide that from a customer who believes they took…
aliasesSiteMaintenanceAlias[]YesEach alias on the package and its own state.
permittedbooleanYesWhether the package type includes maintenance mode. An absent vendor capability is a **refusal**, never an assumption that it is probably on.

Errors this endpoint can return

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