CoreDash Uptime API och MCP-verktyg: monitorer och kontroller
Lista, lägg till, ändra och pausa uptime-monitorer med din CoreDash API-nyckel, och läs deras kontroller via REST eller MCP.
Uptime-monitorer via CoreDash API
Läs och ändra dina CoreDash-projekts uptime-monitorer via REST, med API-nyckeln du redan använder för din RUM-data. En AI-agent läser dem via MCP.
Snabbstart
- Bas-URL
https://app.coredash.app/api/uptime/monitors, JSON in och JSON ut. - Headern
Authorization: Bearer cdk_your_key, med en projektnyckel eller masternyckel. - Första anropet:
GET /api/uptime/monitorslistar dina monitorer med deras status och de senaste 7 dagarnas uptime.
curl https://app.coredash.app/api/uptime/monitors \
-H "Authorization: Bearer cdk_your_key"
API-nycklar för uptime-monitorer
Uptime-slutpunkterna tar nycklarna från CoreDash API och Agency API.
| Nyckel | Börjar med | Ser | En ny monitor hamnar i |
|---|---|---|---|
| Projektnyckel | cdk_ | Det egna projektets monitorer | Alltid det egna projektet |
| Masternyckel | cdk_master_ | Monitorerna i alla projekt du äger eller bjudits in till | Projektet du anger i project_id, ett som du äger |
Skapa en projektnyckel på sidan Connect Your AI i projektets sidomeny: ge den ett namn och klicka på Generate API key. Samma nycklar finns i projektinställningarna under API Keys (MCP). Endast projektets ägare kan skapa dem. En masternyckel hämtas från sidan Agency API i sidomenyn, på agency-konton. När ett projekt har löpt ut får dess projektnyckel 401 vid varje anrop.
En gäst i ett projekt kan läsa dess monitorer. För att lägga till, ändra, flytta och ta bort dem krävs ett projekt du äger.
OAuth-tokenet från en AI-anslutning som Claude (mcp_at_) kan bara läsa. POST, PATCH och DELETE med det ger 403.
Uptime-slutpunkter
| Metod och sökväg | Vad den gör | Returnerar |
|---|---|---|
GET /api/uptime/monitors | Listar alla monitorer som nyckeln kan se, sorterade efter namn. | 200, { "monitors": [...] }, var och en med en summary |
POST /api/uptime/monitors | Lägger till en monitor. Första kontrollen körs i nästa runda, vid :00 eller :30. | 201, { "monitor": {...} } |
GET /api/uptime/monitors/:id | En enskild monitor med sina kontroller, nyast först. ?limit= anger antalet kontroller: standardvärde 300, som mest 2100. | 200, { "monitor", "summary", "checks", "rum" } |
PATCH /api/uptime/monitors/:id | Ändrar fälten du skickar och lämnar resten orörda. | 200, { "monitor": {...} } |
DELETE /api/uptime/monitors/:id | Tar bort monitorn och alla dess kontroller. | 200, { "deleted": true } |
Origin-IP och headervärdena är hemligheter. De returneras från POST, PATCH och GET /api/uptime/monitors/:id. Listan och MCP-verktygen utelämnar origin_ip och visar varje headervärde som ••••.
Monitor-objektet
| Fält | Betydelse |
|---|---|
id | Monitorns id, för :id i sökvägarna. |
name, url | Namnet i appen och URL:en som kontrolleras. |
project_id | CoreDash-projektet som monitorn tillhör. |
paused | true så länge monitorn inte kontrolleras. |
expect_status | HTTP-statusen som räknas som up. Standardvärde 200. |
origin_check | true när en origin-IP är angiven, så att varje runda även kontrollerar själva servern. |
origin_ip | Serverns IP-adress. Endast i svaren som innehåller hemligheter. |
headers | Extra request-headers, [{ "name", "value" }]. |
state | pending, up, failing, down, warn, blocked eller paused. Se statustabellen nedan. |
last_check_at, last_up_at | Senaste rundan, och senaste rundan som svarade up. |
down_since | När den är nere: tidpunkten för den första misslyckade rundan. Annars null. |
last_down | Det senaste driftavbrottet som avslutades, { "from", "to" }, eller null. |
check_requested_at | Sätts när du lägger till monitorn. Nästa runda rensar det. |
last | Senaste kontrollen per typ: edge och origin, var och en ett check-objekt. origin_is_cdn är true när origin-kontrollen svarade med Cloudflare-headers, vilket betyder att IP-adressen du angav inte är din server. |
cert_expires | När HTTPS-certifikatet som dina besökare möts av går ut. |
created_at | När monitorn lades till. |
Fälten summary och rum
Både listan och den enskilda monitorn innehåller en summary: rounds_7d och down_rounds_7d räknar de senaste 7 dagarnas rundor, uptime_7d är procentandelen av dessa rundor utan en down-kontroll, och recent innehåller de senaste 48 rundorna, äldst först, med det sämsta utfallet för varje runda. En monitor utan kontroller under de senaste 7 dagarna har summary: null.
Den enskilda monitorn innehåller även rum: TTFB vid p75 som dina verkliga besökare fick under de senaste 7 dagarna, hämtat från projektets RUM-data, för att jämföra med checkerns ttfb_ms. Fältet är null så länge projektet saknar RUM-data.
GET /api/uptime/monitors/:id
curl "https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16?limit=2" \
-H "Authorization: Bearer cdk_your_key"
{
"monitor": {
"id": "6ad68c7a844fad80b752fd16",
"name": "Checkout",
"url": "https://www.example.com/checkout/",
"project_id": "655f1f77bcf86cd799439011",
"paused": false,
"expect_status": 200,
"origin_check": true,
"origin_ip": "203.0.113.10",
"headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
"state": "up",
"last_check_at": "2026-10-20T08:00:09.000Z",
"last_up_at": "2026-10-20T08:00:09.000Z",
"down_since": null,
"last_down": { "from": "2026-10-18T19:00:11.000Z", "to": "2026-10-18T20:00:10.000Z" },
"check_requested_at": null,
"last": {
"edge": { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "edge", "outcome": "up", "status": 200, "ttfb_ms": 212, "total_ms": 388, "connect_ms": 14, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": true, "cache_status": "DYNAMIC" },
"origin": { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "origin", "outcome": "up", "status": 200, "ttfb_ms": 640, "total_ms": 702, "connect_ms": 9, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": false, "cache_status": null },
"origin_is_cdn": false
},
"cert_expires": "2027-01-02T23:59:59.000Z",
"created_at": "2026-10-06T09:12:41.000Z"
},
"summary": {
"rounds_7d": 336,
"down_rounds_7d": 2,
"uptime_7d": 99.4,
"recent": [
{ "at": "2026-10-20T07:30:10.000Z", "outcome": "up" },
{ "at": "2026-10-20T08:00:09.000Z", "outcome": "up" }
]
},
"checks": [
{ "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "edge", "outcome": "up", "status": 200, "ttfb_ms": 212, "total_ms": 388, "connect_ms": 14, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": true, "cache_status": "DYNAMIC" },
{ "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "origin", "outcome": "up", "status": 200, "ttfb_ms": 640, "total_ms": 702, "connect_ms": 9, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": false, "cache_status": null }
],
"rum": { "ttfb_p75": 1920, "rating": "poor", "period": "last 7 days" }
}
I det verkliga svaret innehåller recent 48 rundor; det här exemplet visar de två senaste.
Check-objektet och dess utfall
Var 30:e minut kontrollerar en runda alla monitorer, från två servrar i tur och ordning: scan1 vid :00, scan2 vid :30. En runda kontrollerar alltid URL:en på samma sätt som besökarna når den, via DNS och ditt CDN (edge). Med en origin-IP kontrolleras även din server direkt (origin). API:et saknar anrop för att kontrollera en monitor mellan rundor. Kontroller sparas i 30 dagar.
Varje kontroll skickar user-agenten CoreDash/1.0 (uptime; +https://www.coredash.app/bot). Ligger monitorns URL på ditt projekts egen webbplats (dess host, med eller utan www, eller en subdomän) skickar kontrollen även headern X-CoreDash-Bot med ditt projekts hemliga värde, från fliken CoreDash bot token i dina projektinställningar. En monitor på någon annan webbplats får ingen token. Vid en omdirigering följer denna token regeln för dina angivna headers: den följer bara med så länge omdirigeringen stannar på monitorns host. En egen header med namnet X-CoreDash-Bot tas bort. Sidan CoreDash bot har mer information om båda.
| Fält | Betydelse |
|---|---|
at, server | När servern rapporterade rundan, och vilken server som körde den: scan1 eller scan2. Kontrollerna i en runda delar samma at. |
mode | edge eller origin. |
outcome | up, down, blocked eller warn. |
status | HTTP-status för det sista svaret, efter omdirigeringar. null när inget svarade. |
ttfb_ms, total_ms, connect_ms | Time to First Byte och total tid, båda inklusive omdirigeringar, samt anslutningstid för den första requesten. |
redirects, final_url | Antalet följda omdirigeringar och den URL som svarade sist. |
error, error_text | Varför kontrollen misslyckades, som ett värde från tabellen nedan och i textform. |
cloudflare, cache_status | Om svaret gick via Cloudflare, samt CDN:ets cache-header (cf-cache-status eller x-cache). |
Hur en kontroll får sitt utfall
| Utfall | När |
|---|---|
up | Statusen matchar expect_status, såvida inte statusen är 403, 429 eller 500 eller högre: dessa räknas i första hand som blocked eller down. |
down | En status på 500 eller högre, eller ett error: dns, connect, connect_timeout (ingen anslutning inom 10 sekunder), timeout (inget fullständigt svar inom 30 sekunder), tls, redirects (fler än 5) eller network. |
blocked | En 403, 429 eller en Cloudflare-challenge: en brandvägg stoppade checkern. Räknas aldrig som driftstopp. Släpp igenom CoreDash i brandväggen. |
warn | Alla andra statuskoder, som en 404 i kassan efter en release. Även invalid_ip och invalid_url: URL:en eller en omdirigering leder till en privat eller reserverad adress, eller så pekar en omdirigering på något som inte är en URL. Checkern gör inga anrop till dessa. |
Det sämsta utfallet bland en rundas kontroller avgör monitorns status, från sämst till bäst: down, blocked, warn, up.
Monitorstatusar
state | I appen | Betyder |
|---|---|---|
pending | Väntar på första kontrollen | Tillagd; första rundan har inte körts ännu. |
up | Uppe | Senaste rundan fick förväntad status. |
failing | Fallerar | En runda misslyckades. En till gör den down. |
down | Nere | Två misslyckade rundor i rad, så båda servrarna såg den misslyckas. |
warn | Oväntad status | Senaste rundan svarade warn. |
blocked | Blockerad | En brandvägg stoppade checkern. |
paused | Pausad | Kontrolleras inte förrän du sätter paused till false. |
En monitor i ett projekt vars prenumeration har löpt ut behåller sina inställningar och sin senaste status. Den kontrolleras inte igen förrän projektet är betalt.
Lägg till, ändra och ta bort en monitor
POST /api/uptime/monitors
curl -X POST https://app.coredash.app/api/uptime/monitors \
-H "Authorization: Bearer cdk_master_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.example.com/checkout/",
"name": "Checkout",
"project_id": "655f1f77bcf86cd799439011",
"origin_ip": "203.0.113.10",
"headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
"expect_status": 200
}'
| Fält | Regler |
|---|---|
url | Obligatoriskt vid POST. En fullständig http- eller https-URL, utan användarnamn eller lösenord. |
name | Upp till 80 tecken; längre namn klipps av. Tomt vid POST: URL:ens host. Tomt vid PATCH: det gamla namnet behålls, eller den nya hosten om samma PATCH skickar en ny url. |
project_id | Krävs med en masternyckel: ett projekt du äger, med en betald prenumeration eller en aktiv provperiod. En projektnyckel ignorerar detta och använder sitt eget projekt. |
origin_ip | En publik IPv4- eller IPv6-adress till din server. Lägger till origin-kontrollen: direkt till denna IP-adress, förbi DNS och CDN:et. "" eller null tar bort den. |
headers | Upp till 5 extra request-headers, [{ "name", "value" }]. Namn: bokstäver, siffror och bindestreck, upp till 64 tecken. Värden: upp till 256 tecken, längre klipps av. Vid en omdirigering följer de bara med så länge den stannar på monitorns host, med eller utan www. En omdirigering till någon annan host, inklusive en subdomän, får inga av dem. |
expect_status | Statusen som räknas som up, 100 till 599. Standardvärde 200. En 403, 429 eller någon status på 500 eller högre räknas aldrig som up. |
paused | true stoppar kontrollerna, false startar dem igen. |
Svaret är 201 med den nya monitorn, inklusive origin-IP och headervärden:
{
"monitor": {
"id": "6ad68c7a844fad80b752fd16",
"name": "Checkout",
"url": "https://www.example.com/checkout/",
"project_id": "655f1f77bcf86cd799439011",
"paused": false,
"expect_status": 200,
"origin_check": true,
"origin_ip": "203.0.113.10",
"headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
"state": "pending",
"last_check_at": null,
"last_up_at": null,
"down_since": null,
"last_down": null,
"check_requested_at": "2026-10-20T09:12:41.000Z",
"last": {},
"cert_expires": null,
"created_at": "2026-10-20T09:12:41.000Z"
}
}
PATCH /api/uptime/monitors/:id
Skicka bara de fält du ändrar. headers ersätter hela listan, så skicka med alla headers du vill behålla. Detta pausar en monitor:
curl -X PATCH https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
-H "Authorization: Bearer cdk_your_key" \
-H "Content-Type: application/json" \
-d '{ "paused": true }'
Med en masternyckel flyttar project_id monitorn, enligt samma regler som vid POST.
DELETE /api/uptime/monitors/:id
curl -X DELETE https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
-H "Authorization: Bearer cdk_your_key"
Det går inte att ångra. För att stoppa kontrollerna och behålla historiken skickar du { "paused": true } med PATCH.
Fel och gränser i Uptime API
Fel returneras som { "error": "..." } med en av följande statuskoder:
| Status | När |
|---|---|
400 | Bodyn bryter mot en regel. error anger vilken, se nedan. |
401 | Unauthorized: nyckel saknas, okänd, återkallad eller utgången nyckel, eller en nyckel kopplad till ett projekt som har löpt ut. |
403 | This token can only read. Use a CoreDash API key to change monitors.: en POST, PATCH eller DELETE med ett OAuth-token (mcp_at_). En PATCH eller DELETE på en monitor i ett projekt där du är gäst får 403 med Only the project's owners can change its monitors. |
404 | Monitor not found: id:t finns inte, eller så kan nyckeln inte se monitorn. |
405 | Method not allowed. |
400 error | Åtgärd |
|---|---|
Choose a project for this monitor | Skicka project_id med en masternyckel. |
project not found | Angivet project_id är inte ett projekt du äger. Gäster kan inte lägga till monitorer eller flytta dem dit. |
This project's subscription has ended | För att lägga till eller flytta en monitor krävs ett betalt projekt eller en aktiv provperiod. |
A project can have up to 25 monitors | Ta bort en först, eller använd ett annat projekt. |
A monitor must belong to a project | Uteslut project_id ur din PATCH, eller skicka ett projekt du äger. |
url can't contain a username or password | För basic auth skickar du en Authorization-header i headers. |
origin_ip is not an IP address, origin_ip must be a public IP address | Använd själva serverns publika adress. |
url must be a full http or https URL, e.g. https://www.example.com/, url must start with http:// or https://, headers must be a list of {name, value}, at most 5 headers, "…" isn't a valid header name (letters, numbers and dashes only), expect_status must be an HTTP status code | Åtgärda fältet som meddelandet anger. Dess regler finns i fälttabellen under POST. |
Gränser: 25 monitorer per projekt, 5 extra headers per monitor, 2100 kontroller per GET för en enskild monitor och 30 dagars kontrollhistorik.
MCP-verktyg för uptime
CoreDash MCP-server på https://app.coredash.app/api/mcp har två uptime-verktyg vid sidan av RUM-verktygen, plus list_projects för projekten din nyckel når. Alla tre kan enbart läsa. För att lägga till, ändra eller ta bort en monitor använder du appen eller REST-slutpunkterna ovan med en CoreDash API-nyckel. Verktygen behöver inget project_id: en projektnyckel läser sitt eget projekt, medan en masternyckel eller en OAuth-anslutning som Claude läser alla projekt du äger eller bjudits in till.
| Verktyg | Fråga din agent | Returnerar |
|---|---|---|
list_projects | ”Vilka sajter kan du se?” | { "projects": [...] } med project_id, name, url och role (owner eller guest). |
list_uptime_monitors | ”Är allt uppe?” | { "monitors": [...] }, med maskerad origin-IP och maskerade headervärden. |
get_uptime_monitor | ”Låg kassan nere den här veckan, och sedan när?” | { "monitor", "summary", "checks" }. Tar monitor_id och limit (standardvärde 100, som mest 1000); summary ger rounds, down_rounds och uptime_pct för dessa kontroller. |
curl -X POST https://app.coredash.app/api/mcp \
-H "Authorization: Bearer cdk_your_key" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_uptime_monitor",
"arguments": { "monitor_id": "6ad68c7a844fad80b752fd16", "limit": 48 }
}
}'
Svaret är JSON-RPC-wrappern från CoreDash API, med resultatet som en JSON-sträng i result.content[0].text. En okänd monitor ger { "error": "Monitor not found" } där, och result.isError är true.
Mer om uptime och CoreDash API
- Uptime-bevakning: vad CoreDash kontrollerar och vad du ser i appen.
- CoreDash API: projektnycklar, JSON-RPC-formatet och RUM-verktygen.
- Agency API: masternycklar och projekt via REST.
- CoreDash bot: user-agenten,
X-CoreDash-Bot-headern och adresserna. - Släpp igenom CoreDash i brandväggen: för en monitor som visar Blockerad.