CoreDash Uptime API i narzędzia MCP: monitory i sprawdzenia

Listuj, dodawaj, zmieniaj i wstrzymuj monitory uptime za pomocą klucza API CoreDash oraz odczytuj ich sprawdzenia przez REST lub MCP.

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-10-20

Trusted by market leaders · Client results

my work featured on web.devworkivaaleteiaadevintafotocasavpnperiondpg mediahappyhorizonwhowhatwearcompareebaysaturnsnvnestlekpnloopearplugsharvardmarktplaatsnina careerasmusmcmonarch

Monitory uptime przez API CoreDash

Odczytuj i zmieniaj monitory uptime w projektach CoreDash przez REST za pomocą tego samego klucza API, którego używasz do danych RUM. Agent AI odczytuje je przez MCP.

Szybki start

  • Bazowy URL https://app.coredash.app/api/uptime/monitors, JSON na wejściu i wyjściu.
  • Nagłówek Authorization: Bearer cdk_your_key z kluczem projektu lub kluczem master.
  • Pierwsze wywołanie: GET /api/uptime/monitors zwraca listę monitorów wraz z ich stanem oraz uptime z ostatnich 7 dni.
curl https://app.coredash.app/api/uptime/monitors \
  -H "Authorization: Bearer cdk_your_key"

Klucze API do monitorów uptime

Endpointy uptime obsługują klucze z CoreDash API oraz Agency API.

KluczZaczyna się odWidziNowy monitor trafia do
Klucz projektucdk_Monitory z własnego projektuZawsze do własnego projektu
Klucz mastercdk_master_Monitory każdego projektu, którego jesteś właścicielem lub do którego masz zaproszenieProjektu wskazanego w project_id (musisz być jego właścicielem)

Klucz projektu wygenerujesz na stronie Connect Your AI w pasku bocznym projektu: nadaj mu nazwę i kliknij Generate API key. Te same klucze znajdziesz w ustawieniach projektu w sekcji API Keys (MCP). Mogą je tworzyć tylko właściciele projektu. Klucz master wygenerujesz na stronie Agency API w pasku bocznym – na kontach agencyjnych. Gdy projekt wygaśnie, jego klucz projektu zwraca 401 przy każdym wywołaniu.

Gość w projekcie może jedynie odczytywać monitory. Dodawanie, modyfikowanie, przenoszenie i usuwanie wymaga projektu, którego jesteś właścicielem.

Token OAuth połączenia AI, takiego jak Claude (mcp_at_), pozwala wyłącznie na odczyt. Żądania POST, PATCH i DELETE z jego użyciem zwracają 403.

Endpointy uptime

Metoda i ścieżkaDziałanieZwraca
GET /api/uptime/monitorsZwraca listę wszystkich monitorów widocznych dla klucza, posortowaną według nazwy.200, { "monitors": [...] }, każdy z obiektem summary
POST /api/uptime/monitorsDodaje monitor. Pierwsze sprawdzenie rusza w kolejnej rundzie, o :00 lub :30.201, { "monitor": {...} }
GET /api/uptime/monitors/:idPojedynczy monitor z historią sprawdzeń (od najnowszych). Parametr ?limit= określa liczbę sprawdzeń: domyślnie 300, maksymalnie 2100.200, { "monitor", "summary", "checks", "rum" }
PATCH /api/uptime/monitors/:idModyfikuje przesłane pola, a resztę pozostawia bez zmian.200, { "monitor": {...} }
DELETE /api/uptime/monitors/:idUsuwa monitor i wszystkie jego sprawdzenia.200, { "deleted": true }

Adres IP serwera origin oraz wartości nagłówków to dane poufne. Zwracają je metody POST, PATCH i GET /api/uptime/monitors/:id. Zwykła lista oraz narzędzia MCP pomijają origin_ip, a każdą wartość nagłówka maskują jako ••••.

Obiekt monitora

PoleZnaczenie
idID monitora, dla parametru :id w ścieżkach.
name, urlNazwa w aplikacji oraz sprawdzany URL.
project_idProjekt CoreDash, do którego należy monitor.
pausedtrue, gdy monitor nie jest sprawdzany.
expect_statusStatus HTTP uznawany za działający (up). Domyślnie 200.
origin_checktrue, gdy ustawiono IP serwera origin – każda runda sprawdza wtedy bezpośrednio sam serwer.
origin_ipAdres IP serwera. Występuje tylko w odpowiedziach zawierających dane poufne.
headersDodatkowe nagłówki żądania, [{ "name", "value" }].
statepending, up, failing, down, warn, blocked lub paused. Zobacz tabelę stanów poniżej.
last_check_at, last_up_atCzas ostatniej rundy oraz ostatniej rundy ze statusem up.
down_sinceW trakcie awarii: czas pierwszej nieudanej rundy. W przeciwnym razie null.
last_downOstatnia zakończona awaria: { "from", "to" } lub null.
check_requested_atUstawiane przy dodaniu monitora. Kolejna runda czyści to pole.
lastOstatnie sprawdzenie danego typu: edge i origin (każde jako obiekt sprawdzenia). Pole origin_is_cdn ma wartość true, gdy sprawdzenie origin zwróciło nagłówki Cloudflare, co oznacza, że wpisany adres IP to nie serwer.
cert_expiresData wygaśnięcia certyfikatu HTTPS serwowanego użytkownikom.
created_atCzas dodania monitora.

Pola summary i rum

Zarówno lista, jak i pojedynczy monitor zawierają pole summary: rounds_7d i down_rounds_7d zliczają rundy z ostatnich 7 dni, uptime_7d to odsetek tych rund bez sprawdzenia zakończonego statusem down, a recent przechowuje ostatnie 48 rund (od najstarszej), każda z najgorszym wynikiem w danej rundzie. Monitor bez sprawdzeń w ciągu ostatnich 7 dni ma summary: null.

Pojedynczy monitor zawiera także pole rum: TTFB na poziomie p75, jaki mieli rzeczywiści użytkownicy w ostatnich 7 dniach (z danych RUM projektu), do porównania z ttfb_ms bota sprawdzającego. Dopóki projekt nie ma danych RUM, pole ma wartość null.

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

W rzeczywistej odpowiedzi tablica recent zawiera 48 rund – ten przykład pokazuje dwie ostatnie.

Obiekt sprawdzenia i jego wyniki

Co 30 minut uruchamia się runda sprawdzająca każdy monitor, naprzemiennie z dwóch serwerów: scan1 o :00 i scan2 o :30. Runda zawsze sprawdza URL tak, jak docierają do niego użytkownicy – przez DNS i CDN (edge). Po podaniu IP serwera origin sprawdza też bezpośrednio sam serwer (origin). API nie pozwala wywołać sprawdzenia między rundami. Historia sprawdzeń jest przechowywana przez 30 dni.

Każde sprawdzenie wysyła user agent CoreDash/1.0 (uptime; +https://www.coredash.app/bot). Gdy URL monitora znajduje się w domenie projektu (w jego hoście, z www lub bez, albo w subdomenie), sprawdzenie wysyła także nagłówek X-CoreDash-Bot z tajną wartością projektu, pobraną z zakładki CoreDash bot token w ustawieniach projektu. Monitor w jakiejkolwiek innej witrynie nie otrzymuje tokena. Przy przekierowaniu token zachowuje się zgodnie z regułą dla zdefiniowanych nagłówków (headers): jest przekazywany tylko dopóki przekierowanie pozostaje na hoście monitora. Własny nagłówek o nazwie X-CoreDash-Bot jest odrzucany. Szczegóły obu mechanizmów opisuje strona bota CoreDash.

PoleZnaczenie
at, serverCzas zaraportowania rundy przez serwer oraz serwer, który ją wykonał: scan1 lub scan2. Sprawdzenia z tej samej rundy mają identyczną wartość at.
modeedge lub origin.
outcomeup, down, blocked lub warn.
statusStatus HTTP ostatniej odpowiedzi, po uwzględnieniu przekierowań. null, gdy serwer nie odpowiedział.
ttfb_ms, total_ms, connect_msTime to First Byte oraz całkowity czas (oba z uwzględnieniem przekierowań), a także czas nawiązania połączenia przy pierwszym żądaniu.
redirects, final_urlLiczba obsłużonych przekierowań oraz URL, który odpowiedział jako ostatni.
error, error_textPrzyczyna niepowodzenia sprawdzenia – jako wartość z poniższej tabeli oraz jako tekst.
cloudflare, cache_statusInformacja, czy odpowiedź przeszła przez Cloudflare, oraz nagłówek cache z CDN (cf-cache-status lub x-cache).

Jak ustalany jest wynik sprawdzenia

WynikWarunek
upStatus jest równy expect_status, chyba że wynosi 403, 429 albo 500 lub więcej: te kody są traktowane w pierwszej kolejności jako blocked lub down.
downStatus 500 lub wyższy albo błąd (error): dns, connect, connect_timeout (brak połączenia w ciągu 10 sekund), timeout (brak pełnej odpowiedzi w ciągu 30 sekund), tls, redirects (więcej niż 5) lub network.
blocked403, 429 lub challenge Cloudflare: firewall zablokował bota sprawdzającego. Nigdy nie jest liczony jako downtime. Przepuść CoreDash przez firewall.
warnKażdy inny status, np. 404 na checkoucie po deployu. Także invalid_ip oraz invalid_url: gdy URL lub przekierowanie prowadzi do adresu prywatnego albo zarezerwowanego, bądź gdy przekierowanie wskazuje na coś, co nie jest adresem URL. Bot sprawdzający nie wykonuje do nich żądań.

O stanie monitora decyduje najgorszy wynik sprawdzeń w danej rundzie, w kolejności od najgorszego: down, blocked, warn, up.

Stany monitora

stateIn the appZnaczenie
pendingWaiting for first checkDodany; pierwsza runda jeszcze się nie odbyła.
upUpOstatnia runda zwróciła oczekiwany status.
failingFailingJedna runda zakończyła się błędem. Jeszcze jedna i stan zmieni się na down.
downDownDwie nieudane rundy z rzędu – awarię potwierdziły oba serwery.
warnUnexpected statusOstatnia runda zwróciła wynik warn.
blockedBlockedFirewall zablokował bota sprawdzającego.
pausedPausedNie jest sprawdzany, dopóki nie ustawisz paused na false.

Monitor w projekcie, którego subskrypcja wygasła, zachowuje swoje ustawienia i ostatni stan. Nie jest sprawdzany do momentu opłacenia projektu.

Dodawanie, edycja i usuwanie monitora

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
  }'
PoleReguły
urlWymagany przy POST. Pełny adres URL http lub https, bez nazwy użytkownika i hasła.
nameDo 80 znaków; dłuższe nazwy są obcinane. Puste przy POST: host z adresu URL. Puste przy PATCH: pozostaje dotychczasowa nazwa, chyba że ten sam PATCH przesyła nowy url – wtedy przyjmuje nowy host.
project_idWymagany przy kluczu master: projekt, którego jesteś właścicielem, z aktywną subskrypcją lub trwającym okresem próbnym. Klucz projektu ignoruje to pole i używa własnego projektu.
origin_ipPubliczny adres IPv4 lub IPv6 serwera. Włącza sprawdzanie origin: bezpośrednio pod ten IP, z pominięciem DNS i CDN. Wartość "" lub null usuwa to sprawdzenie.
headersDo 5 dodatkowych nagłówków żądania, [{ "name", "value" }]. Nazwy: litery, cyfry i myślniki, do 64 znaków. Wartości: do 256 znaków (dłuższe są obcinane). Przy przekierowaniu są przekazywane tylko dopóki pozostaje ono na hoście monitora (z www lub bez). Przekierowanie na jakikolwiek inny host, w tym subdomenę, nie otrzymuje żadnego z nich.
expect_statusStatus uznawany za działający (up), od 100 do 599. Domyślnie 200. Kody 403, 429 oraz jakikolwiek status 500 lub wyższy nigdy nie są uznawane za up.
pausedWartość true wstrzymuje sprawdzanie, false wznawia je.

Odpowiedź to 201 z nowym monitorem, w tym z adresem IP origin i wartościami nagłówków:

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

Przesyłaj tylko zmieniane pola. Pole headers zastępuje całą listę, więc wyślij wszystkie nagłówki, które chcesz zachować. Poniższe wywołanie wstrzymuje 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 }'

Przy użyciu klucza master pole project_id przenosi monitor – na takich samych zasadach jak przy POST.

DELETE /api/uptime/monitors/:id

curl -X DELETE https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
  -H "Authorization: Bearer cdk_your_key"

Operacji nie można cofnąć. Aby zatrzymać sprawdzanie i zachować historię, wyślij { "paused": true } za pomocą PATCH.

Błędy i limity w Uptime API

Błędy są zwracane jako { "error": "..." } z jednym z poniższych statusów:

StatusKiedy występuje
400Treść żądania narusza reguły. Komunikat error wskazuje przyczynę (zobacz niżej).
401Unauthorized: brak klucza, klucz nieznany, unieważniony lub wygasły, albo przypisany do wygasłego projektu.
403This token can only read. Use a CoreDash API key to change monitors.: żądanie POST, PATCH lub DELETE z tokenem OAuth (mcp_at_). Żądanie PATCH lub DELETE na monitorze w projekcie, w którym jesteś gościem, zwraca 403 z komunikatem Only the project's owners can change its monitors.
404Monitor not found: podane ID nie istnieje lub klucz nie ma dostępu do tego monitora.
405Method not allowed.
400 errorRozwiązanie
Choose a project for this monitorPrześlij project_id wraz z kluczem master.
project not foundProjekt wskazany w project_id nie należy do Ciebie. Goście nie mogą dodawać ani przenosić tam monitorów.
This project's subscription has endedDodanie lub przeniesienie monitora wymaga opłaconego projektu albo aktywnego okresu próbnego.
A project can have up to 25 monitorsNajpierw usuń jeden monitor lub użyj innego projektu.
A monitor must belong to a projectPomiń project_id w żądaniu PATCH lub podaj projekt, którego jesteś właścicielem.
url can't contain a username or passwordDo uwierzytelniania basic auth przekaż nagłówek Authorization w polu headers.
origin_ip is not an IP address, origin_ip must be a public IP addressUżyj publicznego adresu IP samego serwera.
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 codePopraw pole wskazane w komunikacie. Zasady znajdziesz w tabeli pól pod POST.

Limity: 25 monitorów na projekt, 5 dodatkowych nagłówków na monitor, 2100 sprawdzeń na jedno zapytanie GET pojedynczego monitora oraz 30 dni historii sprawdzeń.

Narzędzia MCP dla uptime

Serwer MCP CoreDash pod adresem https://app.coredash.app/api/mcp oferuje dwa narzędzia uptime (obok narzędzi RUM) oraz list_projects dla projektów dostępnych dla danego klucza. Wszystkie trzy służą wyłącznie do odczytu. Aby dodać, zmienić lub usunąć monitor, skorzystaj z aplikacji lub z powyższych endpointów REST z kluczem CoreDash API. Narzędzia te nie wymagają parametru project_id: klucz projektu odczytuje własny projekt, a klucz master lub połączenie OAuth (np. Claude) odczytuje wszystkie projekty, których jesteś właścicielem lub do których masz zaproszenie.

NarzędzieZapytaj agentaZwraca
list_projects„Jakie witryny widzisz?”{ "projects": [...] } z polami project_id, name, url i role (owner lub guest).
list_uptime_monitors„Czy wszystko działa?”{ "monitors": [...] } z zamaskowanym adresem IP origin i wartościami nagłówków.
get_uptime_monitor„Czy checkout miał w tym tygodniu awarię i od kiedy?”{ "monitor", "summary", "checks" }. Przyjmuje monitor_id oraz limit (domyślnie 100, maksymalnie 1000); summary zwraca rounds, down_rounds i uptime_pct dla tych sprawdzeń.
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 }
    }
  }'

Odpowiedź to wrapper JSON-RPC z CoreDash API, z wynikiem w postaci ciągu JSON w result.content[0].text. Nieznany monitor zwraca tam { "error": "Monitor not found" }, a pole result.isError przyjmuje wartość true.

Więcej o uptime i CoreDash API

CoreDash Uptime API i narzędzia MCP: monitory i sprawdzenia Core Web Vitals CoreDash Uptime API i narzędzia MCP: monitory i sprawdzenia