身份验证
请将 API 密钥作为 bearer 令牌发送。此端点在规范中未指明具体的权限,因此请为您的密钥赋予所需的最小权限,并通过检查响应来确认,而不是盲目假设。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/vitals \
-H "Authorization: Bearer zdk_live_…"已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
The site's newest Core Web Vitals reading — LCP, CLS and INP for its **homepage**, with the "good / needs improvement / poor" band for each and for the reading as a whole. Backs the Performance tab's vitals card and the free SEO Basics tile, both of which are sold as included on every plan and every site. RLS-scoped to a site the caller can view (`sites.view`); an out-of-scope or unknown id is a `404`, exactly like `getSite`. **Homepage only, by design.** Every surface that sells this sells *homepage* Core Web Vitals. Measuring every URL of every site is a different product. **Collection is asynchronous.** Readings are taken off the request path by a scheduled collector and read back here — a live Lighthouse run would be a 20-second uncached external call on a tab that mounts for every site (CLAUDE.md §2.16). Until a site has been measured, `available` is `false`, every metric is `null` and every band is `unknown`. **`source` must be rendered.** A `lab` reading is a synthetic Lighthouse run; a `field` reading is what real Chrome users experienced (Chrome UX Report) and is what Google ranks on. Field data does not exist for sites below CrUX's traffic threshold — which is most low-traffic sites — so `lab` is the coverage tier. Presenting a lab score as though real users produced it is a false claim about what visitors experienced, so clients must label which one they are showing.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
siteId (path) | Uuid | 是 | Site ID (UUIDv7). |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
available | boolean | 是 | Whether any vitals reading exists for this site yet. |
url | string | 是 | The exact URL measured. Empty when unavailable. |
source | string<field, lab, > | 是 | `field` = Chrome UX Report (real users, what Google ranks on); `lab` = a synthetic Lighthouse run. Clients MUST label which is shown. Empty string when unavailable, following `p… |
field_available | boolean | 是 | Whether real-user (field) data exists for this site at all, independent of which reading is returned — so the UI can say "no real-user data yet" while still showing the lab number. |
lcp_ms | object | 是 | Largest Contentful Paint, p75, milliseconds. Good ≤ 2500, poor > 4000. |
cls_milli | object | 是 | Cumulative Layout Shift, p75, in **thousandths** (0.083 → `83`). An integer so no band comparison is ever made against a float at the 0.1/0.25 boundaries; clients render `cls_mi… |
inp_ms | object | 是 | Interaction to Next Paint, p75, milliseconds. Good ≤ 200, poor > 500. INP replaced First Input Delay as a Core Web Vital in March 2024; FID is retired and is deliberately not re… |
ttfb_ms | object | 是 | Time to First Byte — a diagnostic, not a Core Web Vital. |
fcp_ms | object | 是 | First Contentful Paint — a diagnostic, not a Core Web Vital. |
performance_score | object | 是 | Lighthouse performance score, 0–100. Always `null` on a `field` reading — the Chrome UX Report computes no score, and inventing one would present a number Google never produced. |
accessibility_score | object | 是 | Lighthouse accessibility score, 0–100 (docs/85 §2.1). Lighthouse computes all four of its categories from a **single** page load, so this costs about a second on a 10–30 s run —… |
best_practices_score | object | 是 | Lighthouse best-practices score, 0–100 — mixed content, deprecated APIs, console errors. `null` on a `field` reading. |
seo_score | object | 是 | Lighthouse SEO score, 0–100. `null` on a `field` reading. |
stack_packs | string[] | 是 | The technology stacks Lighthouse detected on this run (`wordpress`, `woocommerce`, …). **Ids only.** Lighthouse also ships stack-specific remediation *text*; that is untranslate… |
band | VitalsBand | 是 | A Core Web Vitals verdict against Google's published p75 thresholds. The overall `band` is the **worst** of the three measured metrics, because that is how Google assesses a pag… |
lcp_band | VitalsBand | 是 | A Core Web Vitals verdict against Google's published p75 thresholds. The overall `band` is the **worst** of the three measured metrics, because that is how Google assesses a pag… |
cls_band | VitalsBand | 是 | A Core Web Vitals verdict against Google's published p75 thresholds. The overall `band` is the **worst** of the three measured metrics, because that is how Google assesses a pag… |
inp_band | VitalsBand | 是 | A Core Web Vitals verdict against Google's published p75 thresholds. The overall `band` is the **worst** of the three measured metrics, because that is how Google assesses a pag… |
measured_at | object | 是 | — |
opportunities | SiteVitalsOpportunity[] | 是 | What is actually making this page slow, **largest saving first** — the "why" behind the numbers above. ⚠️ An empty array does **not** mean "nothing to fix". It means this readin… |
screenshots | SiteVitalsScreenshots | 是 | What the page looked like while it loaded — the filmstrip and the finished render. `available` is reported separately from the parent envelope's flag because a perfectly good me… |
此端点可能返回的错误
401 · 403 · 404 · 429