support

POST /v1/sites/{siteId}/diagnose

Run the support AI against one site — check it, fix what is fixable, record the rest.

All support endpoints

Authentication

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

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

Runs every diagnostic probe against the named site: whether it is being throttled by its plan's LVE limits (the cause of `508 Resource Limit Is Reached`), whether a `php.ini` value is below what the plan already allows, whether it runs a retired PHP version, and how much of its disk allowance is used. Remedies on the platform's named safe list are then applied — audit-logged and reversible — and everything that cannot be fixed becomes a **recommendation** the customer and staff can both see. ⛔⛔ **A remedy can never grant a limit the plan does not include.** Every one runs through the same customer-band service a person would use, and an application that moved what the site is entitled to is refused rather than reported as applied. ⛔ `complete` is `false` and `blind_probes` names what could not be read. "We found nothing wrong" and "we could not look" are different answers and the client must render them differently. Requires `hosting.php.manage`.

Parameters

NameTypeRequiredWhat it is
siteId (path)UuidYesThe site to check.

Request body

NameTypeRequiredWhat it is
apply_fixesbooleanNoSet `false` to diagnose without applying anything. The default applies the safe list, which is the platform's ruled behaviour.

Response

NameTypeRequiredWhat it is
completebooleanYesFalse when any probe could not run.
blind_probesstring[]YesThe probes that could not look.
probesSiteDiagnosticProbe[]Yes
findingsTicketDeflectionFinding[]Yes
appliedstring[]YesRemedies applied automatically, by key. Every one is audit-logged.
refusedobject[]NoRemedies that were attempted and refused, with the reason code. `ENTITLEMENT_DRIFT` means the platform detected that a fix would have changed what the site is entitled to and st…
recommendationsSupportRecommendation[]Yes
notifiedintegerNoHow many customers were e-mailed. At most one message per finding, ever.
notify_skipped_not_in_good_standingintegerNoNotifications skipped because the account is suspended or unpaid. ⛔ Counted rather than silently dropped — a skip and a broken emitter look identical otherwise.
notify_failedintegerNoNotifications that were attempted and raised. ⛔ Its own number: a broken emitter and a quiet run both report `notified: 0`, so a customer who was never told would otherwise be i…

Errors this endpoint can return

401 · 403 · 404 · 422