CoreDash Uptime-API og MCP-værktøjer: monitors og tjek
List, tilføj, ændr og sæt uptime-monitors på pause med din CoreDash-API-nøgle, og læs deres tjek via REST eller MCP.
Uptime-monitors via CoreDash API'et
Læs og rediger dine CoreDash-projekters uptime-monitors via REST med den API-nøgle, du allerede bruger til dine RUM-data. En AI-agent læser dem via MCP.
Hurtig start
- Base-URL
https://app.coredash.app/api/uptime/monitors, JSON ind og JSON ud. - Header
Authorization: Bearer cdk_your_keymed en projektnøgle eller en masternøgle. - Første kald:
GET /api/uptime/monitorslister dine monitors med deres tilstand og de seneste 7 dages oppetid.
curl https://app.coredash.app/api/uptime/monitors \
-H "Authorization: Bearer cdk_your_key"
API-nøgler til uptime-monitors
Uptime-endpoints accepterer nøglerne fra CoreDash API'et og Agency API'et.
| Nøgle | Begynder med | Ser | En ny monitor oprettes i |
|---|---|---|---|
| Projektnøgle | cdk_ | Monitors i sit eget projekt | Altid sit eget projekt |
| Masternøgle | cdk_master_ | Monitors i alle projekter, du ejer eller er inviteret til | Projektet du angiver i project_id, som du ejer |
Opret en projektnøgle på siden Connect Your AI i dit projekts sidepanel: Giv den et navn, og klik på Generate API key. De samme nøgler findes i dine projektindstillinger under API Keys (MCP). Kun projektets ejere kan oprette dem. En masternøgle hentes fra siden Agency API i sidepanelet på agency-konti. Når et projekt er udløbet, får dets projektnøgle 401 på alle kald.
En gæst på et projekt kan kun læse dets monitors. At tilføje, ændre, flytte og slette dem kræver et projekt, du selv ejer.
OAuth-tokenet fra en AI-forbindelse som Claude (mcp_at_) kan kun læse. POST, PATCH og DELETE med det giver 403.
Uptime-endpoints
| Metode og sti | Hvad den gør | Returnerer |
|---|---|---|
GET /api/uptime/monitors | Lister alle monitors, nøglen har adgang til, sorteret efter navn. | 200, { "monitors": [...] }, hver med et summary |
POST /api/uptime/monitors | Opretter en monitor. Første tjek kører i næste runde, ved :00 eller :30. | 201, { "monitor": {...} } |
GET /api/uptime/monitors/:id | En enkelt monitor med dens tjek, nyeste først. ?limit= angiver antallet af tjek: standard 300, højst 2100. | 200, { "monitor", "summary", "checks", "rum" } |
PATCH /api/uptime/monitors/:id | Ændrer de felter, du sender, og bevarer resten. | 200, { "monitor": {...} } |
DELETE /api/uptime/monitors/:id | Sletter monitoren og alle dens tjek. | 200, { "deleted": true } |
Origin-IP'en og headerværdierne er hemmelige. De returneres ved POST, PATCH og GET /api/uptime/monitors/:id. Listen og MCP-værktøjerne udelader origin_ip og viser alle headerværdier som ••••.
Monitor-objektet
| Felt | Betydning |
|---|---|
id | Monitorens id, bruges til :id i stierne. |
name, url | Navnet i appen og den URL, der tjekkes. |
project_id | Det CoreDash-projekt, monitoren tilhører. |
paused | true, så længe monitoren ikke tjekkes. |
expect_status | Den HTTP-status, der tæller som oppe. Standard er 200. |
origin_check | true, når der er angivet en origin-IP, så hver runde også tjekker selve serveren. |
origin_ip | Serverens IP-adresse. Vises kun i de svar, der indeholder hemmelige værdier. |
headers | Ekstra request-headers, [{ "name", "value" }]. |
state | pending, up, failing, down, warn, blocked eller paused. Se tabellen over tilstande nedenfor. |
last_check_at, last_up_at | Sidste runde, og den seneste runde der svarede oppe. |
down_since | Ved nedetid: tidspunktet for den første fejlede runde. Ellers null. |
last_down | Det seneste overståede nedbrud, { "from", "to" }, eller null. |
check_requested_at | Sættes, når du opretter monitoren. Næste runde rydder feltet. |
last | Det seneste tjek pr. type: edge og origin, hver især et tjek-objekt. origin_is_cdn er true, hvis origin-tjekket svarede med Cloudflare-headers, så den indtastede IP ikke er din server. |
cert_expires | Hvornår det HTTPS-certifikat, dine besøgende modtager, udløber. |
created_at | Hvornår monitoren blev oprettet. |
Felterne summary og rum
Både listen og den enkelte monitor indeholder et summary: rounds_7d og down_rounds_7d tæller runderne de seneste 7 dage, uptime_7d er procentdelen af disse runder uden et down-tjek, og recent indeholder de seneste 48 runder, ældste først, hver med rundens værste udfald. En monitor uden tjek de seneste 7 dage har summary: null.
Den enkelte monitor indeholder også rum: p75 TTFB for dine reelle besøgende de seneste 7 dage, baseret på projektets RUM-data, til sammenligning med tjekkerens ttfb_ms. Værdien er null, så længe projektet ikke har nogen 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 rigtige svar indeholder recent 48 runder; dette eksempel viser de to seneste.
Tjek-objektet og dets udfald
Hvert 30. minut tjekker en runde alle monitors på skift fra to servere: scan1 ved :00, scan2 ved :30. En runde tjekker altid URL'en på samme måde, som besøgende tilgår den – via DNS og dit CDN (edge). Med en origin-IP tjekker den også din server direkte (origin). API'et har intet kald til at tjekke en monitor mellem runderne. Tjek gemmes i 30 dage.
Hvert tjek sender user-agenten CoreDash/1.0 (uptime; +https://www.coredash.app/bot). Ligger monitorens URL på dit projekts eget site (dets host, med eller uden www, eller et subdomæne), sender tjekket også headeren X-CoreDash-Bot med dit projekts hemmelige værdi fra fanen CoreDash bot token i dine projektindstillinger. En monitor på et hvilket som helst andet site får intet token. Ved et redirect følger tokenet reglen for de headers, du har angivet: Det sendes kun med, så længe dit redirect bliver på monitorens host. En af dine egne headers ved navn X-CoreDash-Bot fjernes. CoreDash-botsiden forklarer mere om begge dele.
| Felt | Betydning |
|---|---|
at, server | Hvornår serveren rapporterede runden, og hvilken server der kørte den: scan1 eller scan2. Tjekkene i samme runde deler samme at. |
mode | edge eller origin. |
outcome | up, down, blocked eller warn. |
status | HTTP-status for det seneste svar efter redirects. null, hvis intet svarede. |
ttfb_ms, total_ms, connect_ms | Time to First Byte og samlet tid, begge inklusive redirects, samt forbindelsestiden ved første request. |
redirects, final_url | Antallet af fulgte redirects og den URL, der svarede sidst. |
error, error_text | Hvorfor tjekket fejlede – som en værdi fra tabellen nedenfor og som tekst. |
cloudflare, cache_status | Om svaret kom via Cloudflare, og CDN'ets cache-header (cf-cache-status eller x-cache). |
Sådan får et tjek sit udfald
| Udfald | Hvornår |
|---|---|
up | Statussen svarer til expect_status, medmindre denne status er 403, 429 eller 500 eller derover: Disse tæller først som blocked eller down. |
down | En status på 500 eller derover, eller en error: dns, connect, connect_timeout (ingen forbindelse inden for 10 sekunder), timeout (intet komplet svar inden for 30 sekunder), tls, redirects (mere end 5) eller network. |
blocked | En 403, en 429 eller et Cloudflare-challenge: En firewall blokerede tjekkeren. Tælles aldrig som nedetid. Luk CoreDash igennem din firewall. |
warn | Enhver anden status, f.eks. en 404 på et checkout efter en release. Også invalid_ip og invalid_url: URL'en eller et redirect fører til en privat eller reserveret adresse, eller et redirect peger på noget, der ikke er en URL. Tjekkeren sender ikke requests til disse. |
Det dårligste udfald blandt en rundes tjek afgør monitorens tilstand, fra værst til bedst: down, blocked, warn, up.
Monitorens tilstande
state | I appen | Betydning |
|---|---|---|
pending | Waiting for first check | Oprettet; første runde har ikke kørt endnu. |
up | Up | Sidste runde fik den forventede status. |
failing | Failing | Én runde fejlede. Én mere gør den down. |
down | Down | To fejlede runder i træk, så begge servere har registreret fejlen. |
warn | Unexpected status | Sidste runde returnerede warn. |
blocked | Blocked | En firewall blokerede tjekkeren. |
paused | Paused | Tjekkes ikke, før du sætter paused til false. |
En monitor i et projekt, hvor abonnementet er udløbet, beholder sine indstillinger og sin seneste tilstand. Den tjekkes ikke igen, før projektet er betalt.
Tilføj, rediger og slet 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
}'
| Felt | Regler |
|---|---|
url | Påkrævet ved POST. En komplet http- eller https-URL uden brugernavn eller adgangskode. |
name | Op til 80 tegn; længere navne afkortes. Tom ved POST: URL'ens host. Tom ved PATCH: Det gamle navn beholdes, eller den nye host, hvis samme PATCH sender en ny url. |
project_id | Påkrævet med en masternøgle: et projekt, du ejer, med et aktivt abonnement eller en aktiv prøveperiode. En projektnøgle ignorerer feltet og bruger sit eget projekt. |
origin_ip | En offentlig IPv4- eller IPv6-adresse på din server. Tilføjer origin-tjekket: direkte til denne IP, udenom DNS og CDN. "" eller null fjerner det. |
headers | Op til 5 ekstra request-headers, [{ "name", "value" }]. Navne: bogstaver, tal og bindestreger, op til 64 tegn. Værdier: op til 256 tegn, længere værdier afkortes. Ved et redirect sendes de kun med, så længe det forbliver på monitorens host, med eller uden www. Et redirect til enhver anden host, inklusive et subdomæne, modtager ingen af dem. |
expect_status | Den status, der tæller som oppe, 100 til 599. Standard er 200. En 403, 429 eller enhver status på 500 eller derover tæller aldrig som oppe. |
paused | true stopper tjekkene, false starter dem igen. |
Svaret er 201 med den nye monitor, inklusive origin-IP og headerværdier:
{
"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
Send kun de felter, du ændrer. headers erstatter hele listen, så send alle headers, du vil beholde. Dette sætter en monitor på pause:
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 masternøgle flytter project_id monitoren efter de samme regler som ved POST.
DELETE /api/uptime/monitors/:id
curl -X DELETE https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
-H "Authorization: Bearer cdk_your_key"
Handlingen kan ikke fortrydes. Vil du stoppe tjekkene og beholde historikken, sender du { "paused": true } med PATCH.
Fejl og begrænsninger i uptime-API'et
Fejl returneres som { "error": "..." } med en af disse statuskoder:
| Status | Hvornår |
|---|---|
400 | Request-bodyen overtræder en regel. error angiver hvilken, se nedenfor. |
401 | Unauthorized: Ingen nøgle, en ukendt, tilbagekaldt eller udløbet nøgle, eller en nøgle knyttet til et udløbet projekt. |
403 | This token can only read. Use a CoreDash API key to change monitors.: Et POST, PATCH eller DELETE med et OAuth-token (mcp_at_). Et PATCH eller DELETE på en monitor i et projekt, hvor du er gæst, får 403 med Only the project's owners can change its monitors. |
404 | Monitor not found: ID'et findes ikke, eller nøglen har ikke adgang til monitoren. |
405 | Method not allowed. |
400 error | Løsning |
|---|---|
Choose a project for this monitor | Send project_id med en masternøgle. |
project not found | project_id tilhører ikke et projekt, du ejer. Gæster kan hverken tilføje monitors eller flytte dem dertil. |
This project's subscription has ended | Oprettelse eller flytning af en monitor kræver et betalt projekt eller en aktiv prøveperiode. |
A project can have up to 25 monitors | Slet en monitor først, eller brug et andet projekt. |
A monitor must belong to a project | Udelad project_id i PATCH-kaldet, eller angiv et projekt, du ejer. |
url can't contain a username or password | Til basic auth sender du en Authorization-header i headers. |
origin_ip is not an IP address, origin_ip must be a public IP address | Brug den offentlige adresse på selve serveren. |
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 | Ret feltet, der nævnes i fejlmeddelelsen. Reglerne findes i felttabellen under POST. |
Begrænsninger: 25 monitors pr. projekt, 5 ekstra headers pr. monitor, 2100 tjek pr. GET på en enkelt monitor og 30 dages tjekhistorik.
Uptime MCP-værktøjer
CoreDash MCP-serveren på https://app.coredash.app/api/mcp har to uptime-værktøjer ved siden af RUM-værktøjerne, samt list_projects til de projekter, din nøgle har adgang til. Alle tre har kun læseadgang. Vil du oprette, ændre eller slette en monitor, bruger du appen eller REST-endpoints herover med en CoreDash API-nøgle. Værktøjerne kræver intet project_id: En projektnøgle læser sit eget projekt, mens en masternøgle eller en OAuth-forbindelse som Claude læser alle projekter, du ejer eller er inviteret til.
| Værktøj | Spørg din agent | Returnerer |
|---|---|---|
list_projects | "Hvilke sites kan du se?" | { "projects": [...] } med project_id, name, url og role (owner eller guest). |
list_uptime_monitors | "Er alt oppe?" | { "monitors": [...] }, med maskeret origin-IP og maskerede headerværdier. |
get_uptime_monitor | "Var checkout nede i denne uge, og siden hvornår?" | { "monitor", "summary", "checks" }. Modtager monitor_id og limit (standard 100, maksimalt 1000); summary returnerer rounds, down_rounds og uptime_pct for disse tjek. |
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 er JSON-RPC-wrapperen fra CoreDash API'et med resultatet som en JSON-streng i result.content[0].text. En ukendt monitor returnerer { "error": "Monitor not found" } dér, og result.isError er true.
Mere om uptime og CoreDash API'et
- Uptime-overvågning: Hvad CoreDash tjekker, og hvad du ser i appen.
- CoreDash API: Projektnøgler, JSON-RPC-formatet og RUM-værktøjerne.
- Agency API: Masternøgler og projekter via REST.
- CoreDash-botten: User-agenten,
X-CoreDash-Bot-headeren og adresserne. - Luk CoreDash igennem din firewall: Til en monitor, der melder Blocked.