CoreDash API: Hent Core Web Vitals-data fra ekte brukere

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

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-23

Trusted by market leaders · Client results

snvwhowhatwearfotocasamarktplaatsmy work featured on web.devnestlecomparevpnworkivasaturnebayaleteiaadevintaloopearplugsmonarchhappyhorizonerasmusmcperionharvardnina caredpg mediakpn

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: tilkobling av din AI. 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 reelle brukerdata direkte. Spør din AI "hvorfor er min LCP treg på mobil?" og den henter faktiske feltdata for å svare.

Vi bygget CWV Superpowers på toppen av dette. Det er en AI-agent som kombinerer dine CoreDash feltdata 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.

Autentisering

Hver forespørsel trenger en API-nøkkel i Authorization-headeren:

Authorization: Bearer cdk_YOUR_API_KEY

For å få en nøkkel:

  1. Logg inn på app.coredash.app
  2. Gå til prosjektet ditt, deretter AI Insights, og så Connect Your AI
  3. Klikk Create API Key og kopier den. Den vises bare én gang.

Nøkler starter med cdk_ og er knyttet 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 ekkoes tilbake i responsen. Det er tre verktøy: get_metrics, get_timeseries og get_histogram.

get_metrics: nåværende ytelse

Returnerer gjeldende Core Web Vitals-verdier med vurderingene good/improve/poor. Dette er verktøyet du bruker for spørsmål som "hva er min LCP akkurat nå?".

Parametere

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerte metrics som skal returneres
percentilestringp75p50, p75, p80, p90 eller p95
filtersobject{}Filtrer på dimensjoner (se Dimensjoner nedenfor)
groupstringGrupper resultater på en dimensjonsnøkkel for å sammenligne segmenter
datestring-31dTidsintervall: -6h, today, -1d, -7d, -31d
limitnumber100Maks antall segmenter ved gruppering (maks 500)

Eksempel: hent alle metrics

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": {}
    }
  }'

Den 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 inni text-feltet. Ferdig 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 faktiske sidevisninger som faller inn under hver vurdering. Dette er ofte mer nyttig enn p75-verdien alene. En LCP på 2450ms med 61 % good betyr at de fleste brukere har en grei opplevelse, men halen trekker p75-verdien ned.

Eksempel: sammenlign mobil vs desktop LCP

Bruk parameteren group for å dele opp resultater 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"
      }
    }
  }'

Parset 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å 3200ms, desktop på 1800ms. Aggregatet ville vist 2500ms og du ville tenkt "ikke bra, men ikke forferdelig". Den grupperte visningen viser den virkelige historien: desktop er bra, 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 verdier for metrics gruppert over tid med automatisk trenddeteksjon. Dette er verktøyet du bruker for spørsmål som "har min LCP blitt verre?" og "fikset den utrullingen regresjonen?".

Parametere

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerte metrics
percentilestringp75Hvilken persentil
filtersobject{}Filtrer på dimensjoner
datestring-31dTidsintervall
granularitystringdayIntervallstørrelse (bucket): hour, 6hours, day, week

Eksempel: LCP-trend 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 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"
    }
  }
}

Feltet summary sammenligner siste 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 å parse datapunktene selv for å vite om ting blir verre.

get_histogram: fordelingsform

Returnerer fordelingen for en enkelt metric som ~40 buckets (intervaller) med antall per område. Dette er verktøyet du bruker når p75 ser bra ut, men du mistenker en lang hale, eller når du ønsker å se den fulle formen på ytelsesdataene dine.

Parametere

ParameterTypeStandardBeskrivelse
metricstringrequiredEnkelt metric: LCP, INP, CLS, FCP eller TTFB
filtersobject{}Filtrer på dimensjoner
datestring-31dTidsintervall

Merk: i motsetning til get_metrics, tar denne en enkelt metric (ikke metrics). Én metric 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 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 bucket har from/to-grenser, en count av estimerte sidevisninger i det området, og en rating basert på hvor bucket-en befinner seg i forhold til tersklene for Core Web Vitals. Den siste bucket-en har to: null fordi den er den åpne halen.

Bredden på buckets er faste per metric: LCP bruker 250ms, INP bruker 25ms, CLS bruker 0.025, FCP bruker 200ms, TTFB bruker 125ms.

Dette er nyttig for å forstå formen på dataene dine. En p75 på 2400ms kan bety at de fleste brukere ligger rundt 2400ms, eller det kan bety at 60 % er under 1000ms og en porsjon treg mobiltrafikk trekker ut halen. Histogrammet forteller deg hva som er tilfellet.

Dimensjoner

Bruk disse nøklene i filters eller som group-verdi. Filtrering snevrer inn dataene til et spesifikt segment. Gruppering deler opp resultatene slik at du kan sammenligne segmenter side om side.

Generelt

NøkkelNavnEksempelverdier
dEnhetstype (Device Type)mobile, desktop
ccLandUS, NL, DE (ISO 3166-1 alpha-2)
ffFilbane (Pathname)/products, /checkout (null = /)
uFull URLStøtter *-jokertegn, [neq]-prefiks for negering
qsSpørrestreng (Query String)Delen med ?key=value
lbSideetikett (Page Label)Egendefinert etikett fra RUM-kodesnutten
browserNettleserChrome, Safari, Firefox
osOperativsystemAndroid, iOS, Windows
ntNavigasjonstypenavigate, back_forward, reload
fvBesøkende-type0 = tilbakevendende, 1 = ny besøkende
liInnlogget-status0 = logget ut, 1 = logget inn, 2 = admin
noNavigasjonsopprinnelse1 = same origin, 2 = cross origin
abA/B-testEgendefinert testetikett

Enhet og nettverk

NøkkelNavnEnhet
mEnhetsminneGB
dlNettverkshastighetMbps
ccsClient Capability Score1=Utmerket, 2=God, 3=Moderat, 4=Begrenset, 5=Innskrenket
redirAntall viderekoblingerantall

Metric attribution

Disse dimensjonene forteller deg hva som forårsaket en metric-verdi. Grupper på lcpel for å se hvilke elementer som blir LCP på tvers av sidene dine. Grupper på inpel for å finne interaksjonene som gir dårligst INP.

NøkkelNavnFor metric
lcpelLCP-elementLCP
lcpetLCP-elementtypeLCP: text, image, background-image, video
lcpprioLCP-prioritetLCP: 1=Preloaded, 2=High fetchpriority, 3=Not preloaded, 4=Lazy loaded
lcpurlLCP bilde-URLLCP
inpelINP-elementINP
inpitINP inndatatypeINP
inplsINP lastetilstandINP
lurlLOAF skript-URLINP
clselCLS-elementCLS

Eksempler på filtre

{ "d": "mobile" }
{ "ff": "/checkout", "d": "desktop" }
{ "cc": "US", "browser": "Chrome" }
{ "u": "[neq]*/admin/*" }

Referanse for metrics

MetricNavnEnhetGoodNeeds improvementPoor
LCPLargest Contentful Paintms< 25002500 til 4000> 4000
INPInteraction to Next Paintms< 200200 til 500> 500
CLSCumulative Layout Shift< 0.10.1 til 0.25> 0.25
FCPFirst Contentful Paintms< 18001800 til 3000> 3000
TTFBTime to First Bytems< 800800 til 1800> 1800

Standard persentil er p75. Det er dette Google bruker for rangering av Core Web Vitals. Hvis 75 % av sidevisningene dine er under terskelen, 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 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 spørre etter feltdataene dine som en del av enhver samtale.

Dette er hvordan CWV Superpowers fungerer: den kobler til CoreDash via MCP, henter reelle brukerdata, åpner nettstedet ditt i Chrome, og sporer den eksakte årsaken til en treg metric. API-et gir deg "hva som skjer i produksjon"-delen, Chrome gir deg "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 kan svare på spørsmål som "hvilke sider har dårligst INP på mobil?" ved å bruke faktiske feltdata i stedet for å gjette.

Rate limits

Grensene gjelder per prosjekt per dag og tilbakestilles ved midnatt UTC.

AbonnementDaglige forespørsler
Trial150
Starter500
Standard500
Pro500+
Enterprise500+

150 forespørsler på Trial-abonnementet er rikelig for manuell utforskning og AI-assistert feilsøking. Hvis du kjører automatisert overvåking i CI, gir de betalte abonnementene 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." }
}
KodeHTTP-statusBetydning
-32001401Ugyldig eller manglende API-nøkkel
-32002429Rate limit overskredet
-32600400Ugyldig utformet forespørsel
-32601200Ukjent metode
-32602200Ukjent verktøy eller manglende parametere
-32603500Intern 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 tilbakestillingen ved midnatt UTC eller oppgrader abonnementet ditt.

CoreDash API: Hent Core Web Vitals-data fra ekte brukereCore Web Vitals CoreDash API: Hent Core Web Vitals-data fra ekte brukere