hosting

GET /v1/sites/{siteId}/wp-credentials

The WordPress admin login for a site.

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/sites/{siteId}/wp-credentials \
  -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

Requires `sites.view` and `sites.panel_access` — the key that already means "a customer reaching their own site". Every read is audit-logged: a password revealed by session alone is only safe if looking at it is attributable. Re-reads the site's own `wp_users` row before answering, so the screen a human is looking at is never stale. A site that cannot be reached is not an error: the stored record is returned unchanged and `checked_at` says when the platform last managed to look.

Parameters

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

Response

NameTypeRequiredWhat it is
site_idUuidYesUUIDv7 identifier — sortable by creation time (docs/02 §8).
usernamestringYesThis site's own admin username, re-read from the site's `wp_users` row on every request. A customer who renames the account in phpMyAdmin, wp-admin or wp-cli sees the new name h…
emailstringYes`wp_users.user_email` on the site itself — where a WordPress password reset would actually go. Empty until the platform has managed to read one.
passwordstringYesThe current password, or empty when it cannot be shown — see `can_reveal`. It is derived from a platform key and the site's rotation epoch, never stored, so there is no per-site…
can_revealbooleanYesFalse when the customer set their own password (nothing of ours to show) or the environment has no signing key. Rotating makes it true again.
is_custombooleanYesThe password in use was set by the customer through this app, so there is nothing of ours to show. Distinct from `changed_outside_app`.
changed_outside_appbooleanYesProven: the password the platform holds no longer opens the site, so it was changed outside of the Zinn Digital® Hosting App — phpMyAdmin, wp-admin or wp-cli. WordPress stores `…
checked_atstringYesWhen the platform last managed to LOOK at the site's admin row. Null means never.
verified_atstringYesWhen the platform last PROVED these credentials are the live ones. Null means never. Deliberately separate from `checked_at`: "we have not been able to reach this site for a wee…
login_urlstringYesWhere to sign in.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429