hosting
POST /v1/sites/{siteId}/vitals/checks
Measure one page of this site on demand.
การยืนยันตัวตน
ส่ง API key เป็น bearer token เอนด์พอยต์นี้ไม่ได้ระบุสิทธิ์การใช้งานเฉพาะในข้อกำหนด ดังนั้นควรให้คีย์ของคุณมีสิทธิ์น้อยที่สุดเท่าที่จำเป็นและให้ตรวจสอบจากการตอบกลับแทนที่จะคาดเดา
ปลายทางนี้ไม่ต้องใช้รหัสองค์กร คีย์ของคุณระบุองค์กรที่เป็นเจ้าของอยู่แล้ว และการตอบกลับจะถูกจำกัดขอบเขตไว้เฉพาะองค์กรนั้น
ทดลองใช้เลย
แทนที่สิ่งใดๆ ที่อยู่ภายในวงเล็บแหลมด้วยค่าของคุณเอง และตัวยึดตำแหน่งคีย์ด้วยคีย์จากแดชบอร์ดของคุณ
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> }'เข้าสู่ระบบแล้วใช่ไหม คอนโซล API ในแดชบอร์ดของคุณจะเติมรหัสองค์กรจริงและคีย์ของคุณเองโดยอัตโนมัติ และทำการส่งคำขอไปยัง API จริง เพื่อให้คุณเห็นผลลัพธ์ที่เป็นข้อมูลจริง เปิดจุดสิ้นสุดนี้ในคอนโซล API
รายละเอียด
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.
พารามิเตอร์
| ชื่อ | ประเภท | จำเป็นต้องมี | ลักษณะของสิ่งนี้ |
|---|---|---|---|
siteId (path) | Uuid | ใช่ | Site ID (UUIDv7). |
เนื้อหาคำขอ
| ชื่อ | ประเภท | จำเป็นต้องมี | ลักษณะของสิ่งนี้ |
|---|---|---|---|
url | string | ใช่ | 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,… |
การตอบกลับ
| ชื่อ | ประเภท | จำเป็นต้องมี | ลักษณะของสิ่งนี้ |
|---|---|---|---|
id | string | ใช่ | — |
url | string | ใช่ | The normalised absolute URL that was (or is being) measured. |
status | string<queued, running, done, failed> | ใช่ | 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 | ใช่ | 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 | ใช่ | 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 | ใช่ | 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 | ใช่ | — |
finished_at | string | ไม่ใช่ | — |
result | SiteVitals | ไม่ใช่ | 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 | ใช่ | 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.… |
ข้อผิดพลาดที่เอนด์พอยต์นี้สามารถส่งกลับได้
401 · 403 · 404 · 422 · 429 · 503