hosting
GET /v1/sites/{siteId}/external-backup
How we reach an externally hosted site to back it up.
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}/external-backup \
-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 configured backup channel for a site hosted somewhere else, or an object with `configured: false` when nobody has set one up yet. A cheap database read; it never touches the customer's server. Never returns a credential. `credential_present` says whether one is stored in our secret store; the key or password itself cannot be read back through any endpoint once it has been saved. `422` when the site is one we host — its backups are already managed and this surface would be a second, contradictory answer to *"is this site backed up?"*. Gated on `sites.view`.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
siteId (path) | Uuid | Yes | Site ID (UUIDv7). |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
configured | boolean | Yes | False when nobody has connected this site yet. The rest of the object is still present and empty — a screen must not have to tell "not set up" from "failed to load" by the absen… |
channel | ExternalBackupChannel | string<> | Yes | Empty string when `configured` is false. |
enabled | boolean | Yes | A disabled connection is paused, not deleted — the set-up survives. |
can_restore | boolean | Yes | Whether we can push a backup back down this channel. **False for `connector`**, and that is not a limitation to route around: a WordPress plugin cannot run inside a WordPress to… |
summary | string | Yes | One sentence stating what this connection can and cannot do, composed server-side so every surface says the same thing about the backup/restore asymmetry. |
ssh_host | string | Yes | Empty on a `connector` connection. |
ssh_port | integer | Yes | — |
ssh_username | string | Yes | — |
remote_path | string | Yes | The site's document root — what we archive, and what we restore into. |
credential_present | boolean | Yes | Whether a credential is stored in our secret store. The credential itself is never returned by any endpoint. |
last_verified_at | string | Yes | Null when the connection has never been checked. |
last_verified_ok | boolean | Yes | Null means never checked, which is not the same as failing — the absence of a measurement is not a measurement. |
last_verify_detail | string | Yes | — |
Errors this endpoint can return
401 · 403 · 404 · 422