hosting

GET /v1/wordpress/sites/{siteId}

One WordPress site's stored posture, with its component listings.

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/wordpress/sites/{siteId} \
  -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 same row `listWordPressSites` returns, plus the stored plugin, theme and administrator listings the manager's detail drawer shows. Still Postgres only — the listings are whatever the last collection stored, with `snapshot.collected_at` beside them so the age is visible. `404` for a site outside the caller's scope **and** for one that does not run WordPress — a 403 would confirm the id exists. Requires `sites.view`.

Parameters

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

Response

NameTypeRequiredWhat it is
site_idstringYes
namestringYes
primary_domainstringYes
stack_typestringYes`wordpress` or `woocommerce` — a shop IS a WordPress site.
product_linestringYes
deploy_targetstringYes
statusstringYes
php_versionstringYes
plan_namestringYesThe plan a customer would recognise, or `""`. Never an id.
site_urlstringYes
admin_urlstringYes
update_stateWordPressUpdateStateYes⛔⛔ **`unknown` is a real member and must never be rendered as `current`.** *"We have not looked"* and *"you are up to date"* are different statements, and a manager that collaps…
reachabilityWordPressReachabilityYesWhat a **visitor** gets from the site's own homepage, from a cache-busted request. ⛔⛔ This is the only field on this surface measured over the path a human actually uses. Every…
http_statusintegerYes
http_error_codeWordPressProbeErrorCodeYesWhy the homepage request did not complete, blank when it did (whatever the status). A code rather than a sentence, because a sentence composed in the engine is English for ever…
http_checked_atstringYes
can_installbooleanYesWhether software can be installed on this site's platform at all. ⛔ `false` for every managed hosting site — this platform exposes no shell and no install endpoint across its AP…
capabilitiesobjectYesWhat this site's platform permits, as of the last collection.
diskWordPressAllowanceYesOne countable resource. ⛔ **Three states, not two.** `limit: null, unlimited: false` is *no ceiling is stated*; `unlimited: true` is *the plan sells this as unlimited*, which is…
bandwidthWordPressAllowanceYesOne countable resource. ⛔ **Three states, not two.** `limit: null, unlimited: false` is *no ceiling is stated*; `unlimited: true` is *the plan sells this as unlimited*, which is…
snapshotWordPressSnapshotYes⛔ **Null means nobody has ever collected this site.** A client renders that as *"not checked yet"* with a refresh action — never as zeroes, which read as "you are up to date".
pluginsWordPressComponent[]Yes
themesWordPressComponent[]Yes
adminsWordPressAdmin[]Yes

Errors this endpoint can return

401 · 403 · 404 · 429