hosting

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

Where this site's posts go.

All hosting endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The key must carry the links.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/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, because…
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