compute

POST /v1/panels/connections

Connect a running Plesk panel so it can be managed from here.

All compute endpoints

Authentication

Send an API key as a bearer token. The key must carry the connections.manage 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/panels/connections \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "host": <string> }'

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 credential is stored in Vault and **never** in a row. Supply either an API key (preferred — it can be revoked in Plesk without changing the administrator password) or the administrator login and password. ⭐ **The panel is probed before the connection is kept.** A panel that cannot be reached, or whose credential is refused, is rejected while the customer still has their Plesk tab open and can fix it — rather than failing later, when nobody remembers what they typed. ⛔ `422` distinguishes *we could not reach it* from *it refused our credential*. Those send the customer to their firewall and to their password respectively, and merging them makes people change a password that was working. Requires `connections.manage`.

Request body

NameTypeRequiredWhat it is
hoststringYes
portintegerNo
labelstringNo
licence_idUuidNo
verify_tlsbooleanNo
api_keystringNoA Plesk API key. Stored in Vault, never in a row.
usernamestringNo
passwordstringNoThe administrator's password. Stored in Vault, never in a row.

Response

NameTypeRequiredWhat it is
idUuidYesUUIDv7 identifier — sortable by creation time (docs/02 §8).
hoststringYes
portintegerYes
panelstringYes
labelstringYes
licence_idUuidYesThe licence this panel runs on, where we sold it. Null is a supported case, not an error: a customer may connect a panel they licensed elsewhere.
proved_capabilitiesstring[]Yes⛔⛔ **What this CONNECTION demonstrated, not what the adapter can express.** A Plesk box can answer every read and refuse `/cli/*/call` outright, and both one-click login and lic…
panel_versionstringYes
panel_hostnamestringYesThe panel's own hostname, which need not be the host we connect to.
licence_namestringYesThe edition the panel reports it is licensed for.
verify_tlsbooleanYesWhether we verify the panel's TLS certificate. Per connection, because many Plesk boxes present a self-signed certificate on 8443 — the panel's own default before a customer ins…
checked_atstringYes⛔ `null` means **never checked**, which is not the same as *failed*. A client must render the two differently.
last_errorstringYesEmpty when the last check succeeded. Otherwise the reason, which distinguishes *we could not reach it* from *it refused our credential* — the two send a customer to opposite pla…

Errors this endpoint can return

401 · 403 · 422 · 429