身份验证
请将 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… |
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… |
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… |
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 untranslated… |
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 page:… |
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 page:… |
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 page:… |
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 page:… |
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 reading… |
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… |
此端点可能返回的错误
401 · 403 · 404 · 429