hosting

GET /v1/sites/{siteId}/cms-target

Where this site's posts go.

All hosting endpoints

Authentication

Send an API key as a bearer token. This endpoint does not state a specific permission in the specification, so give your key the least it needs and check the response rather than assuming.

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}/cms-target \
  -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 site's content target. Gated on `links.view`. ⛔ A site with no configured target is **200, not 404**. Most WordPress sites on our own fleet need no configuration at all — we hold a managed shell on the box, so the target is derived from the site — and the response then describes that derived target and its capabilities with `hasCredential: false`. Treating "no row" as "no target" would report most of the estate as unconfigured. ⛔ No secret is ever returned, in any form — not masked, not last-four. `hasCredential` is a boolean and the only consumer of the value is the adapter making the call.

Parameters

NameTypeRequiredWhat it is
siteId (path)stringYes

Response

NameTypeRequiredWhat it is
site_idstringYes
kindstring<, wordpress, headless_rest, git_static>YesEmpty when nothing claims this site. For a site with no configured row this is the **derived** target — most WordPress sites on our own fleet need no configuration at all, becau…
presetstring<, payload, strapi, directus, ghost, shopify, webflow, custom>Yes
base_urlstringYesThe CMS's API root. Empty for a target whose address is derived from the site (fleet WordPress, a connected Git repository).
collectionstringYesThe collection posts are created in — `posts` on Payload, a blog id on Shopify, a collection id on Webflow, the content directory on a Git target.
auth_schemestring<, bearer, payload_api_key, ghost_admin_jwt, shopify_token, header>Yes
auth_headerstringYesFor the `header` auth scheme — which header the key is sent in.
field_mapobjectYesRenames, for a destination that spells our fields differently. ⛔ It **renames**; it never adds a capability. A field map cannot make a target able to carry a tag it has no field…
enabledbooleanYesA disabled target is skipped and reads as `needs_setup` — kept rather than deleted so pausing publishing to a site does not lose its set-up.
has_credentialbooleanYes
capabilitiesstring[]Yes
detected_identitystringYesWhat the destination said it was, last time it answered.
last_probe_atstringYes
last_probe_reachablebooleanYes⛔ `null` means **never probed**; `false` means probed and could not be reached. Those are different facts and a client must not render them the same.
last_probe_codestringYes
last_probe_detailstringYes

Errors this endpoint can return

401 · 403 · 404