hosting
GET /v1/sites/{siteId}/vitals
Get a site's homepage Core Web Vitals.
Аутентификация
Передайте API-ключ в качестве маркера носителя (bearer token). Эта конечная точка не указывает конкретное разрешение в спецификации, поэтому предоставьте своему ключу минимум необходимых прав и проверьте ответ, вместо того чтобы делать предположения.
Этот эндпоинт не принимает идентификатор организации. Ваш ключ уже определяет организацию, к которой он принадлежит, и ответ ограничивается ее рамками.
Попробовать
Замените всё в угловых скобках на собственные значения, а плейсхолдер ключа — на ключ из вашей панели управления.
curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/vitals \
-H "Authorization: Bearer zdk_live_…"Вошли в систему? Консоль API в вашей панели управления автоматически подставляет реальный идентификатор вашей организации и ваш собственный ключ, а также выполняет запрос к работающему 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