CoreDash API: Hämta Core Web Vitals-data från riktiga användare

Hämta din Core Web Vitals-data från riktiga användare programmatiskt. Använd det från skript, CI-pipelines, eller låt din AI-agent diagnostisera prestandaproblem automatiskt.

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

Trusted by market leaders · Client results

saturncompareebaymy work featured on web.deverasmusmcsnvharvardloopearplugsperionnestleworkivakpnmonarchadevintadpg mediamarktplaatsfotocasawhowhatwearhappyhorizonnina carealeteiavpn

Din prestandadata, var du än behöver den

CoreDash samlar in Core Web Vitals från riktiga användare som besöker din webbplats. API:et ger dig tillgång till samma data från alla verktyg, skript eller AI-agenter. Tre verktyg, JSON in, JSON ut.

Det mest intressanta användningsfallet: att ansluta din AI. CoreDash API använder samma protokoll som Model Context Protocol (MCP), vilket innebär att AI-verktyg som Claude, Cursor och Windsurf kan hämta din data från riktiga användare direkt. Fråga din AI "varför är min LCP långsam på mobilen?" och den hämtar den faktiska fältdatan för att svara.

Vi byggde CWV Superpowers ovanpå detta. Det är en AI-agent som kombinerar din fältdata från CoreDash med Chrome DevTools för att diagnostisera och åtgärda problem med Core Web Vitals. API:et är det som gör det möjligt.

Men du behöver ingen AI-agent. Ett curl-kommando fungerar lika bra.

Autentisering

Varje begäran behöver en API-nyckel i Authorization-headern:

Authorization: Bearer cdk_YOUR_API_KEY

För att få en nyckel:

  1. Logga in på app.coredash.app
  2. Gå till ditt projekt, sedan AI Insights, därefter Connect Your AI
  3. Klicka på Create API Key och kopiera den. Den visas bara en gång.

Nycklar börjar med cdk_ och är begränsade till ett enda projekt. Du kan skapa flera nycklar och återkalla dem från samma sida.

Format för begäran

API:et använder JSON-RPC 2.0. Varje begäran är en POST till:

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

Kroppen för begäran ser ut så här:

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

Fältet id kan vara vilket nummer eller sträng som helst. Det ekar tillbaka i svaret. Det finns tre verktyg: get_metrics, get_timeseries och get_histogram.

get_metrics: aktuell prestanda

Returnerar de aktuella Core Web Vitals-värdena med bra/förbättra/dålig-betyg. Detta är verktyget du använder för frågor i stil med "vad är min LCP just nu?".

Parametrar

ParameterTypStandardBeskrivning
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerade mätvärden att returnera
percentilestringp75p50, p75, p80, p90 eller p95
filtersobject{}Filtrera efter dimensioner (se Dimensioner nedan)
groupstringGruppera resultat efter en dimensionsnyckel för att jämföra segment
datestring-31dTidsintervall: -6h, today, -1d, -7d, -31d
limitnumber100Maximalt antal segment vid gruppering (max 500)

Exempel: hämta alla mätvärden

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åa svaret är en JSON-RPC-omslag:

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

Den faktiska datan är en JSON-sträng inuti fältet text. Analyserad ser den ut så här:

{
  "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 talar om för dig vilken procentandel av de riktiga sidvisningarna som hamnar i varje betyg. Detta är ofta mer användbart än enbart p75-värdet. En LCP på 2450ms med 61% bra betyder att de flesta användare har en okej upplevelse, men svansen drar ner p75-värdet.

Exempel: jämför LCP för mobil vs desktop

Använd parametern group för att dela upp resultaten efter valfri dimension. Det är så du tar reda på om ditt LCP-problem är ett 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"
      }
    }
  }'

Analyserat 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 skulle visa 2500ms och du skulle tänka "inte jättebra, men inte katastrof". Den grupperade vyn visar den verkliga bilden: desktop är okej, mobilen behöver arbete.

Exempel: filtrera till en specifik sida på mobilen

Kombinera filters för att avgränsa till exakt den trafik du bryr dig 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: prestanda över tid

Returnerar mätvärden grupperade över tid med automatisk trenddetektering. Detta är verktyget du använder för frågor som "har min LCP blivit sämre?" och "fixade den där driftsättningen regressionen?".

Parametrar

ParameterTypStandardBeskrivning
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerade mätvärden
percentilestringp75Vilken percentil
filtersobject{}Filtrera efter dimensioner
datestring-31dTidsintervall
granularitystringdayHinkstorlek: hour, 6hours, day, week

Exempel: LCP-trend under de senaste 7 dagarna

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

Analyserat 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 jämför den andra halvan av perioden med den första halvan. Trendvärden är improving (mer än 5 % bättre), stable (inom 5 %) eller regressing (mer än 5 % sämre). Det är detta som gör timeseries-ändpunkten användbar för automatiserad övervakning: du behöver inte analysera datapunkterna själv för att veta om saker och ting blir sämre.

get_histogram: distributionens form

Returnerar distributionen av ett enda mätvärde som ~40 hinkar med antal per intervall. Detta är verktyget du använder när p75 ser bra ut men du misstänker en lång svans, eller när du vill se hela formen på din prestandadata.

Parametrar

ParameterTypStandardBeskrivning
metricstringrequiredEnskilt mätvärde: LCP, INP, CLS, FCP eller TTFB
filtersobject{}Filtrera efter dimensioner
datestring-31dTidsintervall

Obs: till skillnad från get_metrics tar denna ett enda metric (inte metrics). Ett mätvärde per begäran.

Exempel: LCP-distribution på mobilen

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

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

Varje hink har from/to-gränser, ett count av uppskattade sidvisningar i det intervallet, och en rating baserat på var hinken ligger i förhållande till Core Web Vitals-tröskelvärdena. Den sista hinken har to: null eftersom det är en öppen svans.

Hinkbredder är fasta per mätvärde: LCP använder 250ms, INP använder 25ms, CLS använder 0.025, FCP använder 200ms, TTFB använder 125ms.

Detta är användbart för att förstå formen på din data. En p75 på 2400ms kan betyda att de flesta användare ligger runt 2400ms, eller så kan det betyda att 60 % är under 1000ms och en andel långsam mobiltrafik drar i svansen. Histogrammet berättar för dig vilket som stämmer.

Dimensioner

Använd dessa nycklar i filters eller som värde för group. Filtrering avgränsar datan till ett specifikt segment. Gruppering delar upp resultaten så att du kan jämföra segment sida vid sida.

Allmänt

NyckelNamnExempelvärden
dEnhetstypmobile, desktop
ccLandUS, NL, DE (ISO 3166-1 alpha-2)
ffSökväg/products, /checkout (null = /)
uFullständig URLStöder *-wildcards, [neq]-prefix för negation
qsFrågesträng?key=value-delen
lbSidetikettAnpassad etikett från RUM-kodavsnittet
browserWebbläsareChrome, Safari, Firefox
osOperativsystemAndroid, iOS, Windows
ntNavigeringstypnavigate, back_forward, reload
fvBesökstyp0 = återkommande, 1 = ny besökare
liInloggningsstatus0 = utloggad, 1 = inloggad, 2 = admin
noNavigeringsursprung1 = samma ursprung, 2 = annat ursprung (cross origin)
abA/B-testAnpassad testetikett

Enhet och nätverk

NyckelNamnEnhet
mEnhetsminneGB
dlNätverkshastighetMbps
ccsKapacitetspoäng för klient1=Utmärkt, 2=Bra, 3=Måttlig, 4=Begränsad, 5=Kraftigt begränsad
redirAntal omdirigeringarantal

Tillskrivning av mätvärden

Dessa dimensioner berättar för dig vad som orsakade ett mätvärde. Gruppera efter lcpel för att se vilka element som blir LCP över dina sidor. Gruppera efter inpel för att hitta de interaktioner som ger sämst INP.

NyckelNamnFör mätvärde
lcpelLCP-elementLCP
lcpetLCP-elementtypLCP: text, image, background-image, video
lcpprioLCP-prioritetLCP: 1=Förinladdad (Preloaded), 2=Hög hämtningsprioritet (fetchpriority), 3=Inte förinladdad, 4=Latladdad (Lazy loaded)
lcpurlLCP-bildens URLLCP
inpelINP-elementINP
inpitINP-inmatningstypINP
inplsINP-laddningsstatusINP
lurlLOAF Script-URLINP
clselCLS-elementCLS

Filterexempel

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

Mätvärdesreferens

MätvärdeNamnEnhetBraKräver förbättringDåligt
LCPLargest Contentful Paintms< 25002500 till 4000> 4000
INPInteraction to Next Paintms< 200200 till 500> 500
CLSCumulative Layout Shift< 0.10.1 till 0.25> 0.25
FCPFirst Contentful Paintms< 18001800 till 3000> 3000
TTFBTime to First Bytems< 800800 till 1800> 1800

Standardpercentilen är p75. Det är vad Google använder för rankning med Core Web Vitals. Om 75 % av dina sidvisningar ligger under tröskelvärdet, så blir du godkänd.

Använda API:et som en MCP-server

API-ändpunkten är en fullt kompatibel MCP-server. Om ditt AI-verktyg stöder MCP (Claude Code, Cursor, Windsurf med flera) kan du ansluta det direkt. AI:n har då tillgång till get_metrics, get_timeseries och get_histogram som verktyg och kan hämta din fältdata som en del av valfri konversation.

Det är så CWV Superpowers fungerar: den ansluter till CoreDash via MCP, hämtar din data från riktiga användare, öppnar din webbplats i Chrome och spårar den exakta orsaken till ett långsamt mätvärde. API:et tillhandahåller "vad händer i produktion"-delen, Chrome tillhandahåller "varför händer det"-delen.

Du kan också ansluta MCP-servern till din egen AI-installation. Peka din MCP-klient mot https://app.coredash.app/api/mcp med din API-nyckel, och din AI kan svara på frågor som "vilka sidor har sämst INP på mobilen?" med hjälp av faktisk fältdata istället för att gissa.

Anropsgränser

Gränserna gäller per projekt och dag, och återställs vid midnatt UTC.

PlanDagliga förfrågningar
Trial150
Starter500
Standard500
Pro500+
Enterprise500+

150 förfrågningar på Trial-planen är gott om för manuell utforskning och AI-assisterad felsökning. Om du kör automatiserad övervakning i CI ger de betalda planerna dig 500 per dag.

Felhantering

Fel returneras som JSON-RPC-felobjekt:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": { "code": -32001, "message": "Invalid or revoked API key." }
}
KodHTTP-statusBetydelse
-32001401Felaktig eller saknad API-nyckel
-32002429Anropsgränsen har överskridits
-32600400Felformaterad begäran
-32601200Okänd metod
-32602200Okänt verktyg eller saknade parametrar
-32603500Internt serverfel

Om du får -32001, kontrollera att din nyckel börjar med cdk_ och att du inte har återkallat den. Om du får -32002 har du nått den dagliga gränsen. Vänta på återställningen vid midnatt UTC eller uppgradera din plan.

CoreDash API: Hämta Core Web Vitals-data från riktiga användareCore Web Vitals CoreDash API: Hämta Core Web Vitals-data från riktiga användare