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

Ytelsesdataene dine, akkurat der du trenger dem
CoreDash samler inn Core Web Vitals fra ekte brukere som besøker nettstedet ditt. API-et gir deg tilgang til de samme dataene fra ethvert verktøy, skript eller AI-agent. 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), noe som betyr at AI-verktøy som Claude, Cursor og Windsurf kan hente data fra ekte brukere direkte. Spør AI-en din "hvorfor er LCP-en min treg på mobil?" og den henter de faktiske feltdataene for å svare.
Vi bygde CWV Superpowers på toppen av dette. Det er en AI-agent som kombinerer CoreDash-feltdataene dine med Chrome DevTools for å diagnostisere og fikse Core Web Vitals-problemer. API-et er det som gjør det 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 dem alle med en enkelt nøkkel. Resten av denne siden dekker data-API-et per prosjekt.
Autentisering
Hver forespørsel trenger en API-nøkkel i Authorization-headeren:
Authorization: Bearer cdk_YOUR_API_KEY
For å få en nøkkel:
- Logg inn på app.coredash.app
- Gå til prosjektet ditt, deretter AI Insights, deretter Connect Your AI
- Klikk på Create API Key og kopier den. Den vises bare én gang.
Nøklene starter med cdk_ og er begrenset til et enkelt prosjekt. Du kan opprette flere nøkler og tilbakekalle dem fra samme side.
Forespørselsformat
API-et bruker JSON-RPC 2.0. Hver forespørsel er en POST til:
https://app.coredash.app/api/mcp Forespørselskroppen (request body) 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 streng. Det blir returnert i responsen. Det er tre verktøy: get_metrics, get_timeseries og get_histogram.
get_metrics: nåværende ytelse
Returnerer de nåværende Core Web Vitals-verdiene med good/improve/poor rangeringer. Dette er verktøyet du bruker for spørsmål av typen "hva er min LCP akkurat nå?".
Parametere
| Parameter | Type | Standard | 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 | Tidsintervall: -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": {}
}
}' Råresponsen er en JSON-RPC-wrapper:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{ ... JSON string ... }"
}]
}
} De faktiske dataene er en JSON-streng inne i text-feltet. Tolket (parsed) 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 }
}
}
} distribution-objektet forteller deg hvilken prosentandel av ekte sideinnlastinger som faller inn i hver rangering. Dette er ofte mer nyttig enn p75-verdien alene. En LCP på 2450 ms med 61 % good betyr at de fleste brukere har en fin opplevelse, men halen (the tail) trekker p75-verdien ned.
Eksempel: sammenlign LCP på mobil vs. skrivebord
Bruk group-parameteren for å dele opp resultatene etter en hvilken som helst dimensjon. Slik finner du ut om LCP-problemet ditt er et mobilproblem:
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"
}
}
}' Tolket respons:
{
"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, skrivebord på 1800 ms. Aggregatet ville vist 2500 ms, og du ville tenkt "ikke bra, men ikke forferdelig". Den grupperte visningen viser den virkelige historien: skrivebord er greit, mobil trenger arbeid.
Eksempel: filtrer til en bestemt side på mobil
Kombiner filters for å begrense deg 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 inndelt i bolker (bucketed) over tid med automatisk trenddeteksjon. Dette er verktøyet du bruker for "har min LCP blitt verre?" og "fikset den utrullingen regresjonen?".
Parametere
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
metrics | string | LCP,INP,CLS,FCP,TTFB | Kommaseparerte metrikker |
percentile | string | p75 | Hvilken persentil |
filters | object | {} | Filtrer etter dimensjoner |
date | string | -31d | Tidsintervall |
granularity | string | day | Bolkstø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"
}
}
}' Tolket respons:
{
"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"
}
}
} summary sammenligner andre halvdel av perioden med første halvdel. Trendverdier er improving (mer enn 5 % bedre), stable (innenfor 5 %), eller regressing (mer enn 5 % verre). Det er dette som gjør timeseries-endepunktet nyttig for automatisert overvåking: du trenger ikke tolke datapunktene selv for å vite om ting blir verre.
get_histogram: distribusjonsform
Returnerer distribusjonen av en enkelt metrikk som ~40 bolker (buckets) med antall per område. Dette er verktøyet du bruker når p75 ser bra ut, men du mistenker en lang hale (long tail), eller når du vil se den fulle formen på ytelsesdataene dine.
Parametere
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
metric | string | påkrevd | Enkelt metrikk: LCP, INP, CLS, FCP, eller TTFB |
filters | object | {} | Filtrer etter dimensjoner |
date | string | -31d | Tidsintervall |
Merk: i motsetning til get_metrics, tar denne en enkelt metric (ikke metrics). Én metrikk per forespørsel.
Eksempel: LCP-distribusjon 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"
}
}
}' Tolket respons:
{
"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 bolk har from/to grenser, et count av estimerte sideinnlastinger i det området, og en rating basert på hvor bolken er plassert i forhold til Core Web Vitals-terskler. Den siste bolken har to: null fordi den er den åpne halen.
Bolkbreddene 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 brukere ligger rundt 2400 ms, eller det kan bety at 60 % er under 1000 ms og en andel av treg mobiltrafikk trekker halen utover. Histogrammet forteller deg hva som gjelder.
Dimensjoner
Bruk disse nøklene i filters eller som group-verdi. Filtrering begrenser 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 (Device Type) | mobile, desktop |
cc | Land (Country) | US, NL, DE (ISO 3166-1 alpha-2) |
ff | Filbane (Pathname) | /products, /checkout (null = /) |
u | Full URL | Støtter * jokertegn (wildcards), [neq] prefiks for negering |
qs | Spørrestreng (Query String) | Delen med ?key=value |
lb | Sidetikett (Page Label) | Egendefinert etikett fra RUM-kodebiten |
browser | Nettleser (Browser) | Chrome, Safari, Firefox |
os | Operativsystem (Operating System) | Android, iOS, Windows |
nt | Navigasjonstype (Navigation Type) | navigate, back_forward, reload |
fv | Besøkende Type (Visitor Type) | 0 = gjentakende, 1 = ny besøkende |
li | Innloggingsstatus (Logged In Status) | 0 = utlogget, 1 = innlogget, 2 = admin |
no | Navigasjonsopprinnelse (Navigation Origin) | 1 = same origin, 2 = cross origin |
ab | A/B-test | Egendefinert testetikett |
Enhet og nettverk
| Nøkkel | Navn | Enhet |
|---|---|---|
m | Enhetsminne (Device Memory) | GB |
dl | Nettverkshastighet (Network Speed) | Mbps |
ccs | Klientkapasitetspoeng (Client Capability Score) | 1=Excellent, 2=Good, 3=Moderate, 4=Limited, 5=Constrained |
redir | Antall Omdirigeringer (Redirect Count) | antall |
Metrikk-attribusjon
Disse dimensjonene forteller deg hva som forårsaket en metrikkverdi. Grupper etter lcpel for å se hvilke elementer som blir LCP på tvers av sidene dine. Grupper etter inpel for å finne interaksjonene som produserer dårligst INP.
| Nøkkel | Navn | For metrikk |
|---|---|---|
lcpel | LCP-element (LCP Element) | LCP |
lcpet | LCP-elementtype (LCP Element Type) | LCP: text, image, background-image, video |
lcpprio | LCP-prioritet (LCP Priority) | LCP: 1=Preloaded, 2=High fetchpriority, 3=Not preloaded, 4=Lazy loaded |
lcpurl | LCP-bilde-URL (LCP Image URL) | LCP |
inpel | INP-element (INP Element) | INP |
inpit | INP Inndatatype (INP Input Type) | INP |
inpls | INP Innlastingstilstand (INP Load State) | INP |
lurl | LOAF Script-URL (LOAF Script URL) | INP |
clsel | CLS-element (CLS Element) | CLS |
Filtereksempler
{ "d": "mobile" }
{ "ff": "/checkout", "d": "desktop" }
{ "cc": "US", "browser": "Chrome" }
{ "u": "[neq]*/admin/*" } Metrikkreferanse
| Metrikk | Navn | Enhet | God (Good) | Trenger forbedring (Needs improvement) | Dårlig (Poor) |
|---|---|---|---|---|---|
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 |
Standardpersentilen er p75. Det er dette Google bruker for Core Web Vitals-rangering. Hvis 75 % av sideinnlastingene dine er under terskelen, består du.
Bruke 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 og andre), kan du koble det til direkte. AI-en har da tilgang til get_metrics, get_timeseries og get_histogram som verktøy, og kan hente feltdataene dine som en del av en hvilken som helst samtale.
Slik fungerer CWV Superpowers: den kobler til CoreDash via MCP, henter dataene fra ekte brukere, åpner nettstedet ditt i Chrome, og sporer den nøyaktige årsaken til en treg metrikk. API-et leverer delen med "hva som skjer i produksjon", Chrome leverer delen med "hvorfor det skjer".
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 feltdata i stedet for å gjette.
Hastighetsbegrensninger (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å prøveversjonen (trial) er rikelig 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 | Ugyldig eller manglende API-nøkkel |
-32002 | 429 | Hastighetsbegrensning (Rate limit) overskredet |
-32600 | 400 | Ugyldig utformet forespørsel |
-32601 | 200 | Ukjent metode |
-32602 | 200 | Ukjent verktøy eller manglende parametere |
-32603 | 500 | Intern serverfeil |
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.

