hosting
POST /v1/sites/{siteId}/vitals/checks
Measure one page of this site on demand.
Ìfàṣẹ́pọ̀
Fi bọ́kì kọ́kọ́ (bearer token) ránṣẹ́ gẹ́gẹ́ bí àmì ìdánimọ̀ API. Ibùdó yìí kò sọ àṣẹ pàtó kan nínú àlàyé rẹ̀, nítorí náà fún kọ́kọ́ rẹ̀ ní ohun tó kéré jù lọ tí ó nílò kí o sì ṣàyẹ̀wò ìdáhùn náà dípò kí o kàn rò ó.
Ojú abánisọ̀rọ̀ yìí kò gba id ajọ kankan. Kọ́kọ́rọ́ rẹ ti mọ ajọ ti o jẹ ti e, a o si fèsì nipa rẹ̀.
Gbiyanju rẹ
Rọ́pọ̀ èyíkéyìí nínú àwọn àmì ìtọ́ka < > pẹ̀lú iye tirẹ̀, àti àmì ìdánimọ̀ bọ́tìnnì náà pẹ̀lú bọ́tìnnì kan láti inú dásibọ̀ọ̀dù rẹ.
curl -X POST https://api.zinndigital.com/v1/sites/{siteId}/vitals/checks \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "url": <string> }'Ṣé o ti wọlé? Iwọ̀n api ní nú ìgbékalẹ̀ rẹ kún id àjọ gidi rẹ ati bọtini tirẹ, o si nṣiṣẹ ibeere na lòdì si api gidi ki o le rii esi gidi na. Ṣí ojú abáná yìí sílẹ̀ nínú kọnsólù API
Àwọn kúlẹ̀kúlẹ̀
getSiteVitals measures the homepage on a schedule, which makes the product descriptive. This makes it diagnostic: "the homepage is fine, it is /shop/category/boots that is slow". Gated on sites.view — asking how fast your own page is changes nothing about it. Returns 202, never the measurement. A Lighthouse run takes 10-30 seconds; holding the request open is the uncached hot-path work CLAUDE.md 2.16 forbids and it times out behind Cloudflare. Poll getSiteVitalsCheck with the returned id until status is done or failed. A URL outside this site is a 404, not a 403. A 403 would confirm that some other organisation owns that hostname, turning this endpoint into an ownership oracle over the estate. The submitted address may be a path (/shop/boots), a bare hostname, or an absolute URL; it is normalised — lowercased, port and trailing dot stripped, leading www. folded — before being compared against the site's primary_domain and its aliases. The URL that comes back is rebuilt on whichever of the site's own hostnames matched, not on the folded form and not on what was typed: a site that lives on www. is measured on www., because the apex may 301 or not resolve at all. Clients should display the returned url. A recent identical check is returned instead of starting a new one. Within the cache window the stored measurement comes back with cached: true and status already done, and it costs no quota. Clients should render measured_at rather than implying the page was just re-measured. A check of the same URL that is still running is returned too — same 202, cached: false, status queued or running. A double-click is therefore one measurement and one quota unit, not two. Clients get an id to poll either way, so no branch on this is needed; it is documented because the id may be one the caller has already seen. A check that has not finished within the staleness window is reported failed with error_code: timed_out, by the read path rather than by a writer. Nothing writes a terminal status when a workflow is cancelled or its task queue has no worker, so a client that waits for one would poll a running check for ever. 429 when the organisation's daily allowance is spent, with Retry-After and a body naming the limit. The allowance exists because one customer in a refresh loop would otherwise burn the whole estate's shared PageSpeed quota and take a free feature down for everyone. Cached results never count against it.
Àwọn ìpìlẹ̀
| Orúkọ | Iru | Tí a nílò | Kini o jẹ |
|---|---|---|---|
siteId (path) | Uuid | Bẹẹni | Site ID (UUIDv7). |
Akoonu ibeere naa
| Orúkọ | Iru | Tí a nílò | Kini o jẹ |
|---|---|---|---|
url | string | Bẹẹni | The page to measure. A path (/shop/boots), a bare hostname, or an absolute URL. It must resolve to this site's primary_domain or one of its aliases — anything else is a 404,… |
Idahun
| Orúkọ | Iru | Tí a nílò | Kini o jẹ |
|---|---|---|---|
id | string | Bẹẹni | — |
url | string | Bẹẹni | The normalised absolute URL that was (or is being) measured. |
status | string<queued, running, done, failed> | Bẹẹni | failed is a finished state with a customer-readable error, not an infrastructure fault — a page that is down or blocked to crawlers reaches it. |
cached | boolean | Bẹẹni | True when this is a stored measurement of the same URL served from the cache window rather than a run that was just started. Render measured_at rather than implying the page was… |
error | string | Bẹẹni | Empty unless status is failed. A sentence written for a customer to act on; never a stack trace or an internal hostname. English, and a FALLBACK — it is authored… |
error_code | string | Bẹẹni | A stable machine reason the client turns into a localised sentence: no_data, no_result, check_failed, timed_out. Empty unless status is failed. New members are… |
created_at | string | Bẹẹni | — |
finished_at | string | Bẹẹkọ | — |
result | SiteVitals | Bẹẹkọ | The measurement, present once status is done. Null while queued or running and on failure — never a zeroed placeholder, which would render as a real measurement of a page that… |
remaining_today | object | Bẹẹni | Checks left in this organisation's rolling daily allowance, so the UI can warn before the button is refused rather than only explaining a 429 afterwards.… |
Awọn aṣiṣe ti ibudo ipari yii le da pada
401 · 403 · 404 · 422 · 429 · 503