hosting

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

Generate a new WordPress admin password 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 POST 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

Sets a new password on the server first and records it only once WordPress has it, so a failure can never leave the customer holding a password that does not open their site. Requires `sites.view` and `sites.panel_access`, and is audit-logged. Re-reads the site's admin row before resolving which user to act on. Without that step this call fails with "no such user" for exactly the customers who need it — the ones who renamed their WordPress admin outside the app — so the one action that repairs a drifted credential was the one that stopped working once there was drift to repair.

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