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.

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-05-29

Trusted by market leaders · Client results

aleteiaharvardloopearplugsperionebayvpnmy work featured on web.devnina careerasmusmchappyhorizonmarktplaatsadevintasnvworkivafotocasasaturndpg medianestlewhowhatwearmonarchcomparekpn

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:

  1. Logg inn på app.coredash.app
  2. Gå til prosjektet ditt, deretter AI Insights, deretter Connect Your AI
  3. 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

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerte metrikker som skal returneres
percentilestringp75p50, p75, p80, p90, eller p95
filtersobject{}Filtrer etter dimensjoner (se Dimensjoner nedenfor)
groupstringGrupper resultater etter en dimensjonsnøkkel for å sammenligne segmenter
datestring-31dTidsintervall: -6h, today, -1d, -7d, -31d
limitnumber100Maks 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

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerte metrikker
percentilestringp75Hvilken persentil
filtersobject{}Filtrer etter dimensjoner
datestring-31dTidsintervall
granularitystringdayBolkstø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

ParameterTypeStandardBeskrivelse
metricstringpåkrevdEnkelt metrikk: LCP, INP, CLS, FCP, eller TTFB
filtersobject{}Filtrer etter dimensjoner
datestring-31dTidsintervall

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økkelNavnEksempelverdier
dEnhetstype (Device Type)mobile, desktop
ccLand (Country)US, NL, DE (ISO 3166-1 alpha-2)
ffFilbane (Pathname)/products, /checkout (null = /)
uFull URLStøtter * jokertegn (wildcards), [neq] prefiks for negering
qsSpørrestreng (Query String)Delen med ?key=value
lbSidetikett (Page Label)Egendefinert etikett fra RUM-kodebiten
browserNettleser (Browser)Chrome, Safari, Firefox
osOperativsystem (Operating System)Android, iOS, Windows
ntNavigasjonstype (Navigation Type)navigate, back_forward, reload
fvBesøkende Type (Visitor Type)0 = gjentakende, 1 = ny besøkende
liInnloggingsstatus (Logged In Status)0 = utlogget, 1 = innlogget, 2 = admin
noNavigasjonsopprinnelse (Navigation Origin)1 = same origin, 2 = cross origin
abA/B-testEgendefinert testetikett

Enhet og nettverk

NøkkelNavnEnhet
mEnhetsminne (Device Memory)GB
dlNettverkshastighet (Network Speed)Mbps
ccsKlientkapasitetspoeng (Client Capability Score)1=Excellent, 2=Good, 3=Moderate, 4=Limited, 5=Constrained
redirAntall 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økkelNavnFor metrikk
lcpelLCP-element (LCP Element)LCP
lcpetLCP-elementtype (LCP Element Type)LCP: text, image, background-image, video
lcpprioLCP-prioritet (LCP Priority)LCP: 1=Preloaded, 2=High fetchpriority, 3=Not preloaded, 4=Lazy loaded
lcpurlLCP-bilde-URL (LCP Image URL)LCP
inpelINP-element (INP Element)INP
inpitINP Inndatatype (INP Input Type)INP
inplsINP Innlastingstilstand (INP Load State)INP
lurlLOAF Script-URL (LOAF Script URL)INP
clselCLS-element (CLS Element)CLS

Filtereksempler

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

Metrikkreferanse

MetrikkNavnEnhetGod (Good)Trenger forbedring (Needs improvement)Dårlig (Poor)
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

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.

PlanDaglige forespørsler
Trial150
Starter500
Standard500
Pro500+
Enterprise500+

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." }
}
KodeHTTP-statusBetydning
-32001401Ugyldig eller manglende API-nøkkel
-32002429Hastighetsbegrensning (Rate 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 nullstillingen ved midnatt UTC eller oppgrader planen din.


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