CoreDash API: Forespørg Core Web Vitals data fra rigtige brugere

Forespørg din Core Web Vitals data fra rigtige brugere programmatisk. Brug det fra scripts, CI pipelines, eller lad din AI-agent diagnosticere performanceproblemer automatisk.

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

Trusted by market leaders · Client results

whowhatwearfotocasakpnharvardsnvadevintanestleloopearplugsebayhappyhorizonvpndpg mediasaturnmarktplaatscomparemonarchworkivamy work featured on web.devnina carealeteiaerasmusmcperion

Din performance data, uanset hvor du har brug for den

CoreDash indsamler Core Web Vitals fra rigtige brugere, der besøger din side. API'et giver dig adgang til den samme data fra ethvert værktøj, script eller AI-agent. Tre værktøjer, JSON ind, JSON ud.

Den mest interessante use case: at forbinde din AI. CoreDash API'et bruger samme protokol som Model Context Protocol (MCP), hvilket betyder, at AI-værktøjer som Claude, Cursor og Windsurf kan forespørge din rigtige brugerdata direkte. Spørg din AI "hvorfor er min LCP langsom på mobil?", og den trækker den faktiske field data for at svare.

Vi har bygget CWV Superpowers oven på dette. Det er en AI-agent, der kombinerer din CoreDash field data med Chrome DevTools for at diagnosticere og rette Core Web Vitals problemer. API'et er det, der gør det muligt.

Men du har ikke brug for en AI-agent. En curl-kommando fungerer lige så godt.

Godkendelse

Hver anmodning kræver en API-nøgle i Authorization headeren:

Authorization: Bearer cdk_YOUR_API_KEY

For at få en nøgle:

  1. Log ind på app.coredash.app
  2. Gå til dit projekt, derefter AI Insights, derefter Connect Your AI
  3. Klik på Create API Key og kopier den. Den vises kun én gang.

Nøgler starter med cdk_ og er begrænset til et enkelt projekt. Du kan oprette flere nøgler og tilbagekalde dem fra samme side.

Anmodningsformat

API'et bruger JSON-RPC 2.0. Hver anmodning er en POST til:

https://app.coredash.app/api/mcp

Anmodningens body ser sådan ud:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_metrics",
    "arguments": { }
  }
}

Feltet id kan være et hvilket som helst tal eller en streng. Det returneres i svaret. Der er tre værktøjer: get_metrics, get_timeseries, og get_histogram.

get_metrics: nuværende performance

Returnerer de nuværende Core Web Vitals værdier med good/improve/poor vurderinger. Dette er værktøjet, du bruger til spørgsmål som "hvad er min LCP lige nu?".

Parametre

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKomma-separerede metrics der skal returneres
percentilestringp75p50, p75, p80, p90, eller p95
filtersobject{}Filtrér efter dimensioner (se Dimensioner nedenfor)
groupstringGruppér resultater efter en dimensionsnøgle for at sammenligne segmenter
datestring-31dTidsinterval: -6h, today, -1d, -7d, -31d
limitnumber100Maks. 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": {}
    }
  }'

Det rå svar er en JSON-RPC wrapper:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "{ ... JSON streng ... }"
    }]
  }
}

Den faktiske data er en JSON-streng inde i text-feltet. Parsed ser det sådan ud:

{
  "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 fortæller dig, hvor stor en procentdel af rigtige sideindlæsninger der falder i hver vurdering. Dette er ofte mere nyttigt end p75-værdien alene. En LCP på 2450ms med 61% good betyder, at de fleste brugere har en fin oplevelse, men halen trækker p75 ned.

Eksempel: sammenlign mobil vs desktop LCP

Brug group parameteren til at opdele resultater efter enhver dimension. Sådan finder du ud af, om dit LCP problem 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"
      }
    }
  }'

Parsed 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å 3200ms, desktop på 1800ms. Aggregatet ville vise 2500ms, og du ville tænke "ikke fantastisk, men heller ikke forfærdeligt." Den grupperede visning viser den sande historie: desktop er fint, mobil kræver arbejde.

Eksempel: filtrér til en specifik side på mobil

Kombinér filters for at indsnævre til præcis den trafik, du er interesseret i:

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: performance over tid

Returnerer metric-værdier opdelt over tid (bucketed) med automatisk trenddetektering. Dette er værktøjet, du bruger til "er min LCP blevet værre?" og "løste det deploy regressionen?"

Parametre

ParameterTypeStandardBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKomma-separerede metrics
percentilestringp75Hvilken percentil
filtersobject{}Filtrér efter dimensioner
datestring-31dTidsinterval
granularitystringdayBucket-størrelse: hour, 6hours, day, week

Eksempel: LCP trend over de seneste 7 dage

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

Parsed 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"
    }
  }
}

summary sammenligner den anden halvdel af perioden med den første halvdel. Trend-værdier er improving (mere end 5% bedre), stable (inden for 5%), eller regressing (mere end 5% værre). Det er dette, der gør timeseries-endpointet nyttigt til automatiseret overvågning: du behøver ikke selv at parse datapunkterne for at vide, om tingene bliver værre.

get_histogram: distributionsform

Returnerer distributionen af en enkelt metric som ~40 buckets med tællinger per interval. Dette er værktøjet, du bruger, når p75 ser fint ud, men du har mistanke om en lang hale (long tail), eller når du vil se den fulde form af din performance data.

Parametre

ParameterTypeStandardBeskrivelse
metricstringpåkrævetEnkelt metric: LCP, INP, CLS, FCP, eller TTFB
filtersobject{}Filtrér efter dimensioner
datestring-31dTidsinterval

Bemærk: i modsætning til get_metrics, tager dette en enkelt metric (ikke metrics). Én metric per anmodning.

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

Parsed 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 bucket har from/to grænser, en count af estimerede sideindlæsninger i det interval, og en rating baseret på hvor bucket'en befinder sig i forhold til Core Web Vitals grænseværdier. Den sidste bucket har to: null fordi det er den åbne hale.

Bucket-bredder er fastsat per metric: LCP bruger 250ms, INP bruger 25ms, CLS bruger 0.025, FCP bruger 200ms, TTFB bruger 125ms.

Dette er nyttigt til at forstå formen på din data. En p75 på 2400ms kunne betyde, at de fleste brugere ligger omkring 2400ms, eller det kunne betyde, at 60% er under 1000ms og en klump af langsom mobiltrafik trækker i halen. Histogrammet fortæller dig hvilket der gør sig gældende.

Dimensioner

Brug disse nøgler i filters eller som group-værdi. Filtrering indsnævrer dataene til et specifikt segment. Gruppering opdeler resultaterne, så du kan sammenligne segmenter side om side.

Generelt

NøgleNavnEksempelværdier
dEnhedstypemobile, desktop
ccLandUS, NL, DE (ISO 3166-1 alpha-2)
ffSti (Pathname)/products, /checkout (null = /)
uFuld URLUnderstøtter * wildcards, [neq] præfiks til negering
qsQuery String?key=value delen
lbSide-labelBrugerdefineret label fra RUM-snippet
browserBrowserChrome, Safari, Firefox
osStyresystemAndroid, iOS, Windows
ntNavigationstypenavigate, back_forward, reload
fvBesøgstype0 = tilbagevendende, 1 = ny besøgende
liLogget ind-status0 = logget ud, 1 = logget ind, 2 = admin
noNavigationsoprindelse1 = same origin, 2 = cross origin
abA/B TestBrugerdefineret test-label

Enhed og netværk

NøgleNavnEnhed
mEnhedshukommelseGB
dlNetværkshastighedMbps
ccsKlientkapabilitets-score1=Fremragende, 2=God, 3=Moderat, 4=Begrænset, 5=Begrænset (Constrained)
redirOmdirigeringsantalantal

Metric attribution

Disse dimensioner fortæller dig hvad der forårsagede en metric-værdi. Gruppér efter lcpel for at se, hvilke elementer der bliver LCP på tværs af dine sider. Gruppér efter inpel for at finde de interaktioner, der producerer den dårligste INP.

NøgleNavnFor metric
lcpelLCP ElementLCP
lcpetLCP Element TypeLCP: text, image, background-image, video
lcpprioLCP PrioritetLCP: 1=Preloaded, 2=High fetchpriority, 3=Not preloaded, 4=Lazy loaded
lcpurlLCP Billed-URLLCP
inpelINP ElementINP
inpitINP Input TypeINP
inplsINP IndlæsningstilstandINP
lurlLOAF Script URLINP
clselCLS ElementCLS

Filtereksempler

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

Metrics reference

MetricNavnEnhedGoodNeeds 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-percentilen er p75. Det er dette Google bruger til Core Web Vitals-rangering. Hvis 75% af dine sideindlæsninger er under grænseværdien, består du.

Brug API'et som en MCP-server

API-endpointet er en fuldt kompatibel MCP-server. Hvis dit AI-værktøj understøtter MCP (Claude Code, Cursor, Windsurf og andre), kan du forbinde det direkte. AI'en har derefter adgang til get_metrics, get_timeseries, og get_histogram som værktøjer og kan forespørge din field data som en del af enhver samtale.

Det er sådan CWV Superpowers fungerer: det forbinder til CoreDash via MCP, trækker din rigtige brugerdata, åbner din side i Chrome, og sporer den præcise årsag til en langsom metric. API'et leverer "hvad der sker i produktion"-delen, Chrome leverer "hvorfor sker det"-delen.

Du kan også forbinde MCP-serveren til din egen AI-opsætning. Peg din MCP-klient på https://app.coredash.app/api/mcp med din API-nøgle, og din AI kan besvare spørgsmål som "hvilke sider har den dårligste INP på mobil?" ved hjælp af faktisk field data i stedet for at gætte.

Rate limits

Grænser er per projekt per dag og nulstilles ved midnat UTC.

PlanDaglige anmodninger
Trial150
Starter500
Standard500
Pro500+
Enterprise500+

150 anmodninger på trial-planen er rigeligt til manuel udforskning og AI-assisteret fejlfinding. Hvis du kører automatiseret overvågning i CI, giver de betalte planer dig 500 per dag.

Fejlhåndtering

Fejl returneres som JSON-RPC fejl-objekter:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": { "code": -32001, "message": "Invalid or revoked API key." }
}
KodeHTTP statusBetydning
-32001401Dårlig eller manglende API-nøgle
-32002429Rate limit overskredet
-32600400Misdannet anmodning
-32601200Ukendt metode
-32602200Ukendt værktøj eller manglende parametre
-32603500Intern serverfejl

Hvis du får -32001, skal du tjekke, at din nøgle starter med cdk_ og at du ikke har tilbagekaldt den. Hvis du får -32002, har du ramt den daglige grænse. Vent på nulstilling ved midnat UTC eller opgrader din plan.

CoreDash API: Forespørg Core Web Vitals data fra rigtige brugereCore Web Vitals CoreDash API: Forespørg Core Web Vitals data fra rigtige brugere