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

Hent dine 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-05-29

Trusted by market leaders · Client results

kpnnina carecompareadevintamy work featured on web.devnestleebayworkivaperionwhowhatwearhappyhorizonmonarchdpg mediaharvardfotocasavpnmarktplaatsaleteiaerasmusmcloopearplugssnvsaturn

Dine performancedata, lige hvor du har brug for dem

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

Det mest interessante brugsscenarie: Forbind 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 hente dine data fra rigtige brugere direkte. Spørg din AI "hvorfor er min LCP langsom på mobil?", og den henter de faktiske field data for at svare.

Vi har bygget CWV Superpowers oven på dette. Det er en AI-agent, der kombinerer dine CoreDash field data med Chrome DevTools for at diagnosticere og løse 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.

Driver du et bureau, eller administrerer du many projekter fra én konto? Der findes et separat Agency API, som bruger en masternøgle til at oprette, opdatere og slette projekter samt hente data på tværs af dem alle med en enkelt nøgle. Resten af denne side dækker data-API'et per projekt.

Autentificering

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

Authorization: Bearer cdk_YOUR_API_KEY

Sådan får du en nøgle:

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

Nøgler starter med cdk_ og er afgræ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 sendes tilbage i svaret. Der er tre værktøjer: get_metrics, get_timeseries og get_histogram.

get_metrics: aktuel performance

Returnerer de aktuelle Core Web Vitals-værdier med vurderingerne good/improve/poor. Dette er det værktøj, du bruger til spørgsmål af typen "hvad er min LCP lige nu?".

Parametre

ParameterTypeStandardværdiBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerede metrics, der skal returneres
percentilestringp75p50, p75, p80, p90 eller p95
filtersobject{}Filtrer efter dimensioner (se Dimensioner nedenfor)
groupstringGrupper resultater efter en dimensionsnøgle for at sammenligne segmenter
datestring-31dTidsinterval: -6h, today, -1d, -7d, -31d
limitnumber100Maks. antal 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 string ... }"
    }]
  }
}

De faktiske data er en JSON-streng inde i text-feltet. Når de er parset, ser de 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 }
    }
  }
}

Objektet distribution fortæller dig, hvor stor en procentdel af de rigtige sideindlæsninger, der falder inden for hver vurdering. Dette er ofte mere nyttigt end p75-værdien alene. En LCP på 2.450 ms med 61 % good betyder, at de fleste brugere har en fin oplevelse, men halen trækker p75-værdien ned.

Eksempel: Sammenlign LCP på mobil og desktop

Brug parameteren group til at opdele resultaterne efter en vilkårlig dimension. Det er sådan, du finder 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"
      }
    }
  }'

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å 3.200 ms, desktop på 1.800 ms. Det samlede resultat ville vise 2.500 ms, og du ville tænke "ikke fantastisk, men ikke forfærdeligt". Den grupperede visning viser den virkelige historie: desktop er fin, mobil kræver arbejde.

Eksempel: Filtrer til en specifik side på mobil

Kombiner filters for at indsnævre til præcis den trafik, du fokuserer på:

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 med automatisk trenddetektering. Dette er det værktøj, du bruger til spørgsmål som "er min LCP blevet værre?" og "løste det deploy regressionen?".

Parametre

ParameterTypeStandardværdiBeskrivelse
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerede metrics
percentilestringp75Hvilken percentil
filtersobject{}Filtrer efter dimensioner
datestring-31dTidsinterval
granularitystringdayIntervalstø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"
      }
    }
  }'

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

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

get_histogram: fordelingens form

Returnerer fordelingen for en enkelt metric som ~40 buckets med antal per interval. Dette er værktøjet, du skal bruge, hvis p75 ser fin ud, men du mistænker en lang hale, eller hvis du vil se den fulde form af dine performancedata.

Parametre

ParameterTypeStandardværdiBeskrivelse
metricstringpåkrævetEnkelt metric: LCP, INP, CLS, FCP eller TTFB
filtersobject{}Filtrer efter dimensioner
datestring-31dTidsinterval

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

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 bucket har from/to-grænser, et count af estimerede sideindlæsninger i det pågældende interval samt en rating baseret på, hvor den pågældende bucket ligger i forhold til tærskelværdierne for Core Web Vitals. Den sidste bucket har to: null, fordi det er den åbne ende af halen.

Bredden på hver bucket er fastlagt per metric: LCP bruger 250 ms, INP bruger 25 ms, CLS bruger 0,025, FCP bruger 200 ms, TTFB bruger 125 ms.

Dette er nyttigt til at forstå formen på dine data. En p75 på 2.400 ms kan betyde, at de fleste brugere ligger omkring 2.400 ms, eller det kan betyde, at 60 % er under 1.000 ms, og at en del langsom mobiltrafik trækker halen ud. Histogrammet fortæller dig, hvad der er tilfældet.

Dimensioner

Brug disse nøgler i filters eller som værdien for group. Filtrering indsnævrer data 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)
ffStinavn/products, /checkout (null = /)
uFuld URLUnderstøtter *-wildcards, [neq]-præfiks til negation
qsQuery-strengDelen med ?key=value
lbSidelabelBrugerdefineret label fra RUM-snippeten
browserBrowserChrome, Safari, Firefox
osOperativsystemAndroid, 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 testlabel

Enhed og netværk

NøgleNavnEnhed
mEnhedshukommelseGB
dlNetværkshastighedMbps
ccsClient Capability Score1=Fremragende, 2=God, 3=Moderat, 4=Begrænset, 5=Meget begrænset
redirAntal omdirigeringerantal

Metric-attribuering

Disse dimensioner fortæller dig, hvad der forårsagede en metric-værdi. Grupper efter lcpel for at se, hvilke elementer der udgør LCP på dine sider. Grupper efter inpel for at finde de interaktioner, der resulterer i den værste INP.

NøgleNavnFor metric
lcpelLCP-elementLCP
lcpetLCP-elementtypeLCP: text, image, background-image, video
lcpprioLCP-prioritetLCP: 1=Preloaded, 2=Høj fetchpriority, 3=Ikke preloaded, 4=Lazy loaded
lcpurlLCP-billed-URLLCP
inpelINP-elementINP
inpitINP-inputtypeINP
inplsINP-indlæsningsstatusINP
lurlLOAF-script-URLINP
clselCLS-elementCLS

Filtereksempler

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

Metrics-reference

MetricNavnEnhedGodKræver forbedringDårlig
LCPLargest Contentful Paintms< 2.5002.500 til 4.000> 4.000
INPInteraction to Next Paintms< 200200 til 500> 500
CLSCumulative Layout Shift< 0,10,1 til 0,25> 0,25
FCPFirst Contentful Paintms< 1.8001.800 til 3.000> 3.000
TTFBTime to First Bytems< 800800 til 1.800> 1.800

Standardpercentilen er p75. Det er den, Google bruger til rangering af Core Web Vitals. Hvis 75 % af dine sideindlæsninger er under tærskelværdien, består du.

Brug af 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. Din AI får derefter adgang til get_metrics, get_timeseries og get_histogram som værktøjer og kan hente dine field data som en del af enhver samtale.

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

Du kan også forbinde MCP-serveren til dit eget AI-setup. Peg din MCP-klient mod https://app.coredash.app/api/mcp med din API-nøgle, og din AI kan svare på spørgsmål som "hvilke sider har den værste INP på mobil?" ved hjælp af faktiske field data i stedet for at gætte.

Rate limits

Grænserne gælder 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-fejlobjekter:

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

Hvis du får -32001, skal du kontrollere, at din nøgle starter med cdk_, og at du ikke har tilbagekaldt den. Hvis du får -32002, har du nået den daglige grænse. Vent på nulstillingen ved midnat UTC, eller opgrader dit abonnement.

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