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

Trusted by market leaders · Client results

monarchcompareloopearplugsmy work featured on web.devharvardworkivakpnebaydpg medianestleerasmusmchappyhorizonnina carewhowhatwearadevintasaturnvpnperionaleteiasnvmarktplaatsfotocasa

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 valfritt verktyg, skript eller AI-agent. Tre verktyg, JSON in, JSON ut.

Det mest intressanta användningsområdet: 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å mobil?” så hämtar den faktisk field data för att svara.

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

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

Driver du en byrå eller hanterar många projekt från ett konto? Det finns ett separat Agency API som använder en huvudnyckel för att skapa, uppdatera och ta bort projekt, samt för att hämta data för alla projekt med en enda nyckel. Resten av den här sidan täcker API:et för data per projekt.

Autentisering

Varje anrop 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 och 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 enskilt projekt. Du kan skapa flera nycklar och återkalla dem från samma sida.

Format för anrop

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

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

Anropets body ser ut så här:

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

Fältet id kan vara valfritt nummer eller sträng. Det returneras i svaret. Det finns tre verktyg: get_metrics, get_timeseries och get_histogram.

get_metrics: aktuell prestanda

Returnerar aktuella Core Web Vitals-värden med betygen good/improve/poor. Detta är verktyget du använder för frågor av typen ”vad är min LCP just nu?”.

Parametrar

ParameterTypStandardvärdeBeskrivning
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerade mätetal att returnera
percentilestringp75p50, p75, p80, p90 eller p95
filtersobject{}Filtrera på 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ätetal

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 ett JSON-RPC-omslag:

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

Faktisk data är en JSON-sträng inuti fältet text. Tolkad 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 vilken procentandel av de faktiska sidladdningarna som hamnar i varje betyg. Detta är ofta mer användbart än enbart p75-värdet. En LCP på 2450 ms med 61 % good innebär att de flesta användare har en bra upplevelse, men svansen drar ner p75-värdet.

Exempel: jämför LCP på mobil vs desktop

Använd parametern group för att dela upp resultaten efter valfri dimension. Det är så här 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"
      }
    }
  }'

Tolkad 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, desktop på 1800 ms. Aggregatet skulle visa 2500 ms och du skulle tänka ”inte toppen, men inte uselt”. Den grupperade vyn visar den verkliga bilden: desktop är bra, mobil behöver åtgärdas.

Exempel: filtrera på en specifik sida på mobil

Kombinera filters för att smalna av 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 ”löste den driftsättningen prestandaförsämringen?”.

Parametrar

ParameterTypStandardvärdeBeskrivning
metricsstringLCP,INP,CLS,FCP,TTFBKommaseparerade mätetal
percentilestringp75Vilken percentil
filtersobject{}Filtrera på dimensioner
datestring-31dTidsintervall
granularitystringdayIntervallstorlek: 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"
      }
    }
  }'

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

Objektet summary jämför den andra halvan av perioden med den första. 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 automatisk övervakning: du behöver inte tolka datapunkterna själv för att veta om saker och ting blir sämre.

get_histogram: fördelningens form

Returnerar fördelningen för ett enskilt mätetal som cirka 40 staplar 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 den fullständiga formen på din prestandadata.

Parametrar

ParameterTypStandardvärdeBeskrivning
metricstringobligatoriskEnskilt mätetal: LCP, INP, CLS, FCP eller TTFB
filtersobject{}Filtrera på dimensioner
datestring-31dTidsintervall

Observera: till skillnad från get_metrics tar detta en enskild metric (inte metrics). Ett mätetal per anrop.

Exempel: LCP-fördelning 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"
      }
    }
  }'

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

Varje stapel har gränser för from/to, ett antal (count) uppskattade sidladdningar i det intervallet, samt ett betyg (rating) baserat på var stapeln hamnar i förhållande till gränsvärdena för Core Web Vitals. Den sista stapeln har to: null eftersom den är den öppna svansen.

Bredden på varje stapel är fast per mätetal: LCP använder 250 ms, INP använder 25 ms, CLS använder 0,025, FCP använder 200 ms, TTFB använder 125 ms.

Detta är användbart för att förstå formen på din data. En p75 på 2400 ms kan innebära att de flesta användare ligger runt 2400 ms, eller så kan det innebära att 60 % ligger under 1000 ms och att en del långsam mobiltrafik drar ner svansen. Histogrammet visar vilket.

Dimensioner

Använd dessa nycklar i filters eller som group-värde. Filtrering smalnar av 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ödjer jokertecken (*), prefixet [neq] för negation
qsFrågesträngDelen med ?key=value
lbSidetikettAnpassad etikett från RUM-kodsnutten
browserWebbläsareChrome, Safari, Firefox
osOperativsystemAndroid, iOS, Windows
ntNavigeringstypnavigate, back_forward, reload
fvBesökartyp0 = återkommande, 1 = ny besökare
liInloggningsstatus0 = utloggad, 1 = inloggad, 2 = administratör
noNavigeringsursprung1 = samma ursprung (same origin), 2 = korsande ursprung (cross origin)
abA/B-testAnpassad testetikett

Enhet och nätverk

NyckelNamnEnhet
mEnhetsminneGB
dlNätverkshastighetMbps
ccsClient Capability Score1=Utmärkt, 2=Bra, 3=Måttlig, 4=Begränsad, 5=Starkt begränsad
redirAntal omdirigeringarantal

Attribuering av mätetal

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

NyckelNamnFör mätetal
lcpelLCP-elementLCP
lcpetLCP-elementtypLCP: text, image, background-image, video
lcpprioLCP-prioritetLCP: 1=Förhandsladdad, 2=Hög fetchpriority, 3=Ej förhandsladdad, 4=Lazy-laddad
lcpurlLCP-bild-URLLCP
inpelINP-elementINP
inpitINP-inmatningstypINP
inplsLaddningstillstånd för INPINP
lurlLOAF-skript-URLINP
clselCLS-elementCLS

Exempel på filter

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

Referens för mätetal

MätetalNamnEnhetBraBehöver förbättrasDålig
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 denna som Google använder för rankning av Core Web Vitals. Om 75 % av dina sidladdningar ligger under tröskelvärdet blir du godkänd.

Använd API:et som en MCP-server

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

Det är så här CWV Superpowers fungerar: det 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ätetal. API:et tillhandahåller delen ”vad som händer i produktion”, Chrome tillhandahåller delen ”varför det händer”.

Du kan också ansluta MCP-servern till din egen AI-konfiguration. Peka din MCP-klient mot https://app.coredash.app/api/mcp med din API-nyckel, så kan din AI svara på frågor som ”vilka sidor har sämst INP på mobil?” med hjälp av faktisk field data i stället för att gissa.

Anropsbegränsningar

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

PlanDagliga anrop
Trial150
Starter500
Standard500
Pro500+
Enterprise500+

150 anrop på Trial-planen är mer än tillräckligt för manuell utforskning och AI-assisterad felsökning. Om du kör automatisk ö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
-32001401Ogiltig eller saknad API-nyckel
-32002429Anropsbegränsningen har överskridits
-32600400Felaktigt utformat anrop
-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