Authentication
Send an API key as a bearer token. The key must carry the sites.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/sites/{siteId}/ssl \
-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
Asks the vendor to issue the free certificate the package includes, then returns the site's TLS state as `getSiteSsl` would. It returns `200` and the whole resource rather than `201` and a certificate, because issuance is not instant: what the customer needs back is the state of the thing they were looking at, and the certificate appears in it once the authority has answered. Issuing again while a certificate is already valid is not an error — the request is safe to repeat, which matters because the customer's most likely next action after seeing nothing happen is to press the button again. A package type that does not permit free certificates is refused `422` **before** the vendor is called, with our sentence rather than a vendor error string. `404` for a site with no vendor hosting package, exactly as `getSiteHosting`. Requires `sites.manage`.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
siteId (path) | Uuid | Yes | Site ID (UUIDv7). |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
available | boolean | Yes | Whether the package type exposes a certificate surface at all. False renders an explanation rather than an empty list, so "nothing has been issued yet" and "not part of this pla… |
certificates | SiteSslCertificate[] | Yes | The certificates installed on the package. |
force_https | boolean | Yes | Whether plain HTTP is redirected to HTTPS, or null when the package does not report the setting. Null is a third state the client must render as unknown: an unchecked toggle wou… |
free_ssl_permitted | boolean | Yes | Whether this package type permits requesting the free certificate. An absent vendor capability means **refused**, never "probably on" — the refusal is ours, in our words, before… |
force_ssl_permitted | boolean | Yes | Whether this package type permits changing HTTPS enforcement. |
external_ssl_permitted | boolean | Yes | Whether this package type permits installing a certificate the customer obtained elsewhere (`installSiteExternalSsl`). Reported separately from `free_ssl_permitted` because they… |
Errors this endpoint can return
401 · 403 · 404 · 409 · 422 · 429 · 503