hosting

GET /v1/sites/{siteId}/vitals

Get a site's homepage Core Web Vitals.

모든 hosting 엔드포인트

인증

Bearer 토큰으로 API 키를 전송하세요. 이 엔드포인트는 명세에 특정 권한을 명시하지 않으므로, 가정하기보다는 키에 필요한 최소한의 권한을 부여하고 응답을 확인하세요.

이 엔드포인트는 조직 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)UuidSite ID (UUIDv7).

응답

이름유형필수설명
availablebooleanWhether any vitals reading exists for this site yet.
urlstringThe exact URL measured. Empty when unavailable.
sourcestring<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_availablebooleanWhether 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_msobjectLargest Contentful Paint, p75, milliseconds. Good ≤ 2500, poor > 4000.
cls_milliobjectCumulative 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_msobjectInteraction 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_msobjectTime to First Byte — a diagnostic, not a Core Web Vital.
fcp_msobjectFirst Contentful Paint — a diagnostic, not a Core Web Vital.
performance_scoreobjectLighthouse 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_scoreobjectLighthouse 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_scoreobjectLighthouse best-practices score, 0–100 — mixed content, deprecated APIs, console errors. `null` on a `field` reading.
seo_scoreobjectLighthouse SEO score, 0–100. `null` on a `field` reading.
stack_packsstring[]The technology stacks Lighthouse detected on this run (`wordpress`, `woocommerce`, …). **Ids only.** Lighthouse also ships stack-specific remediation *text*; that is untranslate…
bandVitalsBandA 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_bandVitalsBandA 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_bandVitalsBandA 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_bandVitalsBandA 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_atobject
opportunitiesSiteVitalsOpportunity[]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…
screenshotsSiteVitalsScreenshotsWhat 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