CoreDash API: Hent Core Web Vitals-data fra reelle brukere
Hent Core Web Vitals-dataene dine fra reelle brukere programmatisk. Bruk det fra skript, CI-pipelines, eller la AI-agenten din diagnostisere ytelsesproblemer automatisk.

Ytelsesdataene dine, der du trenger dem
CoreDash samler inn Core Web Vitals fra reelle brukere som besøker nettstedet ditt. API-et gir deg tilgang til de samme dataene fra alle verktøy, skript eller AI-agenter. Tre verktøy, JSON inn, JSON ut.
Det mest interessante bruksområdet: å koble til AI-en din. CoreDash API-et bruker samme protokoll som Model Context Protocol (MCP). Det betyr at AI-verktøy som Claude, Cursor og Windsurf kan hente data fra dine reelle brukere direkte. Spør AI-en din «hvorfor er LCP-en min treg på mobil?», så henter den de faktiske field data-ene for å svare.
Vi bygde CWV Superpowers på toppen av dette. Det er en AI-agent som kombinerer CoreDash field data med Chrome DevTools for å diagnostisere og fikse problemer med Core Web Vitals. API-et gjør dette mulig.
Men du trenger ikke en AI-agent. En curl-kommando fungerer like bra.
Driver du et byrå eller administrerer mange prosjekter fra én konto? Det finnes et eget Agency API som bruker en hovednøkkel til å opprette, oppdatere og slette prosjekter, og til å hente data på tvers av alle med én enkelt nøkkel. Resten av denne siden dekker data-API-et per prosjekt.
Autentisering
Alle forespørsler må ha en API-nøkkel i Authorization-headeren:
Authorization: Bearer cdk_YOUR_API_KEY
Slik får du en nøkkel:
- Logg inn på app.coredash.app
- Gå til prosjektet ditt, deretter AI Insights, og så Connect Your AI
- Klikk på Create API Key og kopier den. Den vises bare én gang.
Nøkler starter med cdk_ og er begrenset til et enkelt prosjekt. Du kan opprette flere nøkler og tilbakekalle dem fra den samme siden.
Forespørselsformat
API-et bruker JSON-RPC 2.0. Hver forespørsel er en POST til:
https://app.coredash.app/api/mcp
Forespørselsdelen ser slik ut:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_metrics",
"arguments": { }
}
}
Feltet id kan være et hvilket som helst tall eller en streng. Det returneres i svaret. Det finnes tre verktøy: get_metrics, get_timeseries og get_histogram.
get_metrics: gjeldende ytelse
Returnerer gjeldende verdier for Core Web Vitals med vurderingene good/improve/poor. Dette er verktøyet du bruker for spørsmål som «hva er LCP-en min akkurat nå?».
Parametere
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
metrics | string | LCP,INP,CLS,FCP,TTFB | Kommaseparerte metrikker som skal returneres |
percentile | string | p75 | p50, p75, p80, p90 eller p95 |
filters | object | {} | Filtrer etter dimensjoner (se dimensjoner nedenfor) |
group | string | Grupper resultater etter en dimensjonsnøkkel for å sammenligne segmenter | |
date | string | -31d | Tidsrom: -6h, today, -1d, -7d, -31d |
limit | number | 100 | Maks antall segmenter ved gruppering (maks 500) |
Eksempel: hent alle metrikker
curl -X POST https://app.coredash.app/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdk_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_metrics",
"arguments": {}
}
}'
Det rå svaret er en JSON-RPC-pakke:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{ ... JSON string ... }"
}]
}
}
De faktiske dataene er en JSON-streng i feltet text. Parset ser det slik ut:
{
"period": "last 31 days",
"percentile": "p75",
"metrics": {
"LCP": {
"value": 2450,
"unit": "ms",
"rating": "improve",
"distribution": { "good": 61.2, "improve": 22.4, "poor": 16.4 }
},
"INP": {
"value": 180,
"unit": "ms",
"rating": "good",
"distribution": { "good": 82.1, "improve": 12.3, "poor": 5.6 }
},
"CLS": {
"value": 0.08,
"unit": "",
"rating": "good",
"distribution": { "good": 74.5, "improve": 18.2, "poor": 7.3 }
}
}
}
Objektet distribution forteller deg hvor stor prosentandel av de reelle sidevisningene som havner i hver kategori. Dette er ofte mer nyttig enn bare p75-verdien. En LCP på 2450 ms med 61 % good betyr at de fleste brukere har en fin opplevelse, men halen drar p75 ned.
Eksempel: sammenlign LCP på mobil og desktop
Bruk parameteren group for å dele opp resultatene etter en hvilken som helst dimensjon. Slik finner du ut om LCP-problemet ditt gjelder mobil:
curl -X POST https://app.coredash.app/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdk_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_metrics",
"arguments": {
"metrics": "LCP",
"group": "d",
"date": "-7d"
}
}
}'
Parset svar:
{
"period": "last 7 days",
"percentile": "p75",
"groupedBy": "d",
"groupName": "Device Type",
"segments": [
{
"segment": "mobile",
"value": "mobile",
"metrics": {
"LCP": {
"value": 3200, "unit": "ms", "rating": "improve",
"distribution": { "good": 52.3, "improve": 28.1, "poor": 19.6 }
}
}
},
{
"segment": "desktop",
"value": "desktop",
"metrics": {
"LCP": {
"value": 1800, "unit": "ms", "rating": "good",
"distribution": { "good": 78.5, "improve": 15.2, "poor": 6.3 }
}
}
}
]
}
Mobil på 3200 ms, desktop på 1800 ms. Samleverdien ville vist 2500 ms, og du ville tenkt «ikke spesielt bra, men ikke helt forferdelig». Den grupperte visningen viser sannheten: desktop er grei, mobil krever arbeid.
Eksempel: filtrer til en spesifikk side på mobil
Kombiner filters for å snevre inn til akkurat den trafikken du bryr deg om:
curl -X POST https://app.coredash.app/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdk_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_metrics",
"arguments": {
"metrics": "LCP,CLS",
"filters": { "ff": "/checkout", "d": "mobile" },
"date": "-7d"
}
}
}'
get_timeseries: ytelse over tid
Returnerer metrikkverdier oppdelt i tidsbøtter med automatisk trendgjenkjenning. Dette er verktøyet du bruker for «har LCP-en min blitt dårligere?» og «fikset den deployen regresjonen?».
Parametere
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
metrics | string | LCP,INP,CLS,FCP,TTFB | Kommaseparerte metrikker |
percentile | string | p75 | Hvilken persentil |
filters | object | {} | Filtrer etter dimensjoner |
date | string | -31d | Tidsrom |
granularity | string | day | Bøttestørrelse: hour, 6hours, day, week |
Eksempel: LCP-trend over de siste 7 dagene
curl -X POST https://app.coredash.app/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdk_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_timeseries",
"arguments": {
"metrics": "LCP",
"date": "-7d",
"granularity": "day"
}
}
}'
Parset svar:
{
"period": "last 7 days",
"percentile": "p75",
"granularity": "day",
"dataPoints": 7,
"timeseries": [
{ "date": "2026-03-10T00:00:00.000Z", "LCP": { "value": 2600, "unit": "ms", "rating": "improve" } },
{ "date": "2026-03-11T00:00:00.000Z", "LCP": { "value": 2450, "unit": "ms", "rating": "improve" } },
{ "date": "2026-03-12T00:00:00.000Z", "LCP": { "value": 2300, "unit": "ms", "rating": "good" } }
],
"summary": {
"LCP": {
"recent": 2350,
"previous": 2680,
"change": -12.3,
"trend": "improving",
"unit": "ms"
}
}
}
Sammendraget (summary) sammenligner den andre halvdelen av perioden med den første. Trendverdiene er improving (mer enn 5 % bedre), stable (innenfor 5 %) eller regressing (mer enn 5 % verre). Dette er det som gjør timeseries-endepunktet nyttig for automatisert overvåking: du slipper å tolke datapunktene selv for å vite om ting blir dårligere.
get_histogram: fordelingsform
Returnerer fordelingen av en enkelt metrikk som ~40 bøtter med antall per intervall. Dette er verktøyet du bruker når p75 ser fin ut, men du mistenker en lang hale, eller når du vil se den fulle formen på ytelsesdataene dine.
Parametere
| Parameter | Type | Standardverdi | Beskrivelse |
|---|---|---|---|
metric | string | påkrevd | Enkelt metrikk: LCP, INP, CLS, FCP eller TTFB |
filters | object | {} | Filtrer etter dimensjoner |
date | string | -31d | Tidsrom |
Merk: i motsetning til get_metrics, tar denne en enkelt metric (ikke metrics). Én metrikk per forespørsel.
Eksempel: LCP-fordeling på mobil
curl -X POST https://app.coredash.app/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdk_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "get_histogram",
"arguments": {
"metric": "LCP",
"filters": { "d": "mobile" },
"date": "-7d"
}
}
}'
Parset svar:
{
"period": "last 7 days",
"metric": "LCP",
"unit": "ms",
"filters": { "d": "mobile" },
"buckets": [
{ "from": 0, "to": 250, "count": 1250, "rating": "good" },
{ "from": 250, "to": 500, "count": 3400, "rating": "good" },
{ "from": 500, "to": 750, "count": 2800, "rating": "good" },
{ "from": 2500, "to": 2750, "count": 890, "rating": "improve" },
{ "from": 4000, "to": 4250, "count": 120, "rating": "poor" },
{ "from": 9750, "to": null, "count": 15, "rating": "poor" }
],
"total": 45000
}
Hver bøtte har from/to-grenser, et antall (count) estimerte sidevisninger i det intervallet, og en vurdering (rating) basert på hvor bøtten ligger i forhold til grenseverdiene for Core Web Vitals. Den siste bøtten har to: null fordi den representerer den åpne halen.
Bøttebreddene er faste per metrikk: LCP bruker 250 ms, INP bruker 25 ms, CLS bruker 0,025, FCP bruker 200 ms, TTFB bruker 125 ms.
Dette er nyttig for å forstå formen på dataene dine. En p75 på 2400 ms kan bety at de fleste brukerne ligger rundt 2400 ms, eller det kan bety at 60 % er under 1000 ms og en andel treg mobiltrafikk drar i halen. Histogrammet forteller deg hva som er tilfelle.
Dimensjoner
Bruk disse nøklene i filters eller som group-verdi. Filtrering snevrer inn dataene til et bestemt segment. Gruppering deler opp resultatene slik at du kan sammenligne segmenter side om side.
Generelt
| Nøkkel | Navn | Eksempelverdier |
|---|---|---|
d | Enhetstype | mobile, desktop |
cc | Land | US, NL, DE (ISO 3166-1 alfa-2) |
ff | Stibane (pathname) | /products, /checkout (null = /) |
u | Full URL | Støtter * jokertegn, [neq]-prefiks for negering |
qs | Spørrestreng (query string) | Delen med ?key=value |
lb | Sideetikett (page label) | Egendefinert etikett fra RUM-kodesnutten |
browser | Nettleser | Chrome, Safari, Firefox |
os | Operativsystem | Android, iOS, Windows |
nt | Navigasjonstype | navigate, back_forward, reload |
fv | Besøkende-type | 0 = returnerende, 1 = ny besøkende |
li | Innloggingsstatus | 0 = utlogget, 1 = innlogget, 2 = admin |
no | Navigasjonsopprinnelse | 1 = same origin, 2 = cross origin |
ab | A/B-test | Egendefinert testetikett |
Enhet og nettverk
| Nøkkel | Navn | Enhet |
|---|---|---|
m | Enhetsminne | GB |
dl | Nettverkshastighet | Mbps |
ccs | Client Capability Score | 1=Excellent, 2=Good, 3=Moderate, 4=Limited, 5=Constrained |
redir | Antall viderekoblinger (redirects) | antall |
Metrikk-attribusjon
Disse dimensjonene forteller deg hva som forårsaket en metrikkverdi. Grupper etter lcpel for å se hvilke elementer som utløser LCP-en på sidene dine. Grupper etter inpel for å finne interaksjonene som gir dårligst INP.
| Nøkkel | Navn | For metrikk |
|---|---|---|
lcpel | LCP-element | LCP |
lcpet | LCP-elementtype | LCP: text, image, background-image, video |
lcpprio | LCP-prioritet | LCP: 1=Preloaded, 2=High fetchpriority, 3=Not preloaded, 4=Lazy loaded |
lcpurl | Bilde-URL for LCP | LCP |
inpel | INP-element | INP |
inpit | INP-inndatatype (input type) | INP |
inpls | INP-lastetilstand (load state) | INP |
lurl | LOAF skript-URL | INP |
clsel | CLS-element | CLS |
Filtereksempler
{ "d": "mobile" }
{ "ff": "/checkout", "d": "desktop" }
{ "cc": "US", "browser": "Chrome" }
{ "u": "[neq]*/admin/*" }
Metrikkreferanse
| Metrikk | Navn | Enhet | God | Trenger forbedring | Dårlig |
|---|---|---|---|---|---|
LCP | Largest Contentful Paint | ms | < 2500 | 2500 til 4000 | > 4000 |
INP | Interaction to Next Paint | ms | < 200 | 200 til 500 | > 500 |
CLS | Cumulative Layout Shift | < 0,1 | 0,1 til 0,25 | > 0,25 | |
FCP | First Contentful Paint | ms | < 1800 | 1800 til 3000 | > 3000 |
TTFB | Time to First Byte | ms | < 800 | 800 til 1800 | > 1800 |
Standard persentil er p75. Dette er hva Google bruker for rangering av Core Web Vitals. Hvis 75 % av sidevisningene dine er under grenseverdien, består du.
Bruk av API-et som en MCP-server
API-endepunktet er en fullt kompatibel MCP-server. Hvis AI-verktøyet ditt støtter MCP (Claude Code, Cursor, Windsurf med flere), kan du koble det til direkte. AI-en får da tilgang til get_metrics, get_timeseries og get_histogram som verktøy, og kan gjøre spørringer mot dine field data som en del av enhver samtale.
Det er slik CWV Superpowers fungerer: den kobler seg til CoreDash via MCP, henter data fra dine reelle brukere, åpner nettstedet ditt i Chrome og sporer den nøyaktige årsaken til en treg metrikk. API-et leverer «hva som skjer i produksjon»-delen, mens Chrome leverer «hvorfor det skjer»-delen.
Du kan også koble MCP-serveren til ditt eget AI-oppsett. Pek MCP-klienten din mot https://app.coredash.app/api/mcp med API-nøkkelen din, og AI-en din kan svare på spørsmål som «hvilke sider har dårligst INP på mobil?» ved å bruke faktiske field data i stedet for å gjette.
Rate limits
Grensene gjelder per prosjekt per dag og nullstilles ved midnatt UTC.
| Plan | Daglige forespørsler |
|---|---|
| Trial | 150 |
| Starter | 500 |
| Standard | 500 |
| Pro | 500+ |
| Enterprise | 500+ |
150 forespørsler på trial-planen er mer enn nok for manuell utforskning og AI-assistert feilsøking. Hvis du kjører automatisert overvåking i CI, gir de betalte planene deg 500 per dag.
Feilhåndtering
Feil returneres som JSON-RPC-feilobjekter:
{
"jsonrpc": "2.0",
"id": 1,
"error": { "code": -32001, "message": "Invalid or revoked API key." }
}
| Kode | HTTP-status | Betydning |
|---|---|---|
-32001 | 401 | Feil eller manglende API-nøkkel |
-32002 | 429 | Grensen for antall forespørsler er overskredet (rate limit exceeded) |
-32600 | 400 | Ugyldig forespørsel (malformed request) |
-32601 | 200 | Ukjent metode (unknown method) |
-32602 | 200 | Ukjent verktøy eller manglende parametere |
-32603 | 500 | Intern serverfeil (internal server error) |
Hvis du får -32001, sjekk at nøkkelen din starter med cdk_ og at du ikke har tilbakekalt den. Hvis du får -32002, har du nådd den daglige grensen. Vent til nullstillingen ved midnatt UTC eller oppgrader planen din.

