API de uptime e ferramentas MCP do CoreDash: monitores e checks

Liste, adicione, altere e pause monitores de uptime com a chave da CoreDash API, e leia os respetivos checks via REST ou MCP.

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

Trusted by market leaders · Client results

nina careloopearplugsmonarchperionebayadevintadpg mediasnvfotocasamarktplaatsharvardkpnworkivamy work featured on web.devnestlealeteiahappyhorizonvpnwhowhatwearsaturnerasmusmccompare

Monitores de uptime via CoreDash API

Consulte e altere os monitores de uptime dos seus projetos CoreDash via REST, com a chave de API que já usa para os dados de RUM. Um agente de IA lê-os via MCP.

Início rápido

  • URL base https://app.coredash.app/api/uptime/monitors, JSON na entrada e na saída.
  • Header Authorization: Bearer cdk_your_key, com uma chave de projeto ou uma chave master.
  • Primeira chamada: GET /api/uptime/monitors lista os monitores com o respetivo estado e o uptime dos últimos 7 dias.
curl https://app.coredash.app/api/uptime/monitors \
  -H "Authorization: Bearer cdk_your_key"

Chaves de API para monitores de uptime

Os endpoints de uptime aceitam as chaves da CoreDash API e da Agency API.

ChaveComeça porVêUm novo monitor vai para
Chave de projetocdk_Os monitores do próprio projetoSempre o próprio projeto
Chave mastercdk_master_Os monitores de todos os projetos que detém ou para os quais foi convidadoO projeto indicado em project_id, que seja seu

Crie uma chave de projeto na página Connect Your AI, na barra lateral do projeto: dê-lhe um nome e clique em Generate API key. As mesmas chaves estão nas definições do projeto em API Keys (MCP). Apenas os proprietários do projeto as podem criar. A chave master é obtida na página Agency API da barra lateral, em contas de agência. Quando um projeto expirar, a respetiva chave de projeto recebe 401 em todas as chamadas.

Um convidado num projeto lê os respetivos monitores. Adicionar, alterar, mover e eliminar exige um projeto que seja seu.

O token OAuth de uma ligação de IA como o Claude (mcp_at_) apenas lê. POST, PATCH e DELETE com este token recebem 403.

Endpoints de uptime

Método e pathO que fazDevolve
GET /api/uptime/monitorsLista todos os monitores visíveis para a chave, ordenados por nome.200, { "monitors": [...] }, cada um com um summary
POST /api/uptime/monitorsAdiciona um monitor. O primeiro check corre na ronda seguinte, às :00 ou :30.201, { "monitor": {...} }
GET /api/uptime/monitors/:idUm monitor com os respetivos checks, mais recentes primeiro. ?limit= define o número de checks: por omissão 300, no máximo 2100.200, { "monitor", "summary", "checks", "rum" }
PATCH /api/uptime/monitors/:idAltera os campos enviados e mantém os restantes.200, { "monitor": {...} }
DELETE /api/uptime/monitors/:idElimina o monitor e todos os respetivos checks.200, { "deleted": true }

O IP de origem e os valores dos headers são dados confidenciais. São devolvidos por POST, PATCH e GET /api/uptime/monitors/:id. A listagem e as ferramentas MCP omitem o origin_ip e mostram o valor de cada header como ••••.

O objeto monitor

CampoSignificado
idO ID do monitor, para o :id nos paths.
name, urlO nome na app e o URL verificado.
project_idO projeto CoreDash a que o monitor pertence.
pausedtrue enquanto o monitor não estiver a ser verificado.
expect_statusO status HTTP considerado up. Por omissão 200.
origin_checktrue quando está definido um IP de origem, para que cada ronda verifique também o próprio servidor.
origin_ipO IP do servidor. Apenas nas respostas que contêm dados confidenciais.
headersOs headers de pedido adicionais, [{ "name", "value" }].
statepending, up, failing, down, warn, blocked ou paused. Consulte a tabela de estados abaixo.
last_check_at, last_up_atA última ronda e a última ronda com resultado up.
down_sinceEnquanto down: a hora da primeira ronda que falhou. Caso contrário, null.
last_downA última indisponibilidade terminada, { "from", "to" }, ou null.
check_requested_atDefinido ao adicionar o monitor. A ronda seguinte limpa-o.
lastO último check por tipo: edge e origin, sendo cada um um objeto de check. origin_is_cdn é true quando o check de origem respondeu com headers da Cloudflare, o que indica que o IP introduzido não é o do seu servidor.
cert_expiresQuando expira o certificado HTTPS entregue aos visitantes.
created_atQuando o monitor foi adicionado.

Os campos summary e rum

Tanto a listagem como o monitor individual incluem um summary: rounds_7d e down_rounds_7d contabilizam as rondas dos últimos 7 dias, uptime_7d é a percentagem dessas rondas sem verificações em estado down e recent guarda as últimas 48 rondas, da mais antiga para a mais recente, cada uma com o pior resultado dessa ronda. Um monitor sem checks nos últimos 7 dias tem summary: null.

O monitor individual inclui também rum: o TTFB a p75 dos visitantes reais nos últimos 7 dias, a partir dos dados de RUM do projeto, para comparar com o ttfb_ms da verificação. Fica a null enquanto o projeto não tiver dados de RUM.

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

Na resposta real, recent contém 48 rondas; este exemplo mostra as duas últimas.

O objeto check e os respetivos resultados

A cada 30 minutos, uma ronda verifica todos os monitores a partir de dois servidores alternados: scan1 às :00, scan2 às :30. Uma ronda verifica sempre o URL tal como os visitantes lhe acedem, via DNS e através da CDN (edge). Com um IP de origem, verifica também o servidor diretamente (origin). A API não disponibiliza nenhuma chamada para verificar um monitor entre rondas. Os checks são guardados durante 30 dias.

Cada check envia o user agent CoreDash/1.0 (uptime; +https://www.coredash.app/bot). Quando o URL do monitor pertence ao site do próprio projeto (o respetivo host, com ou sem www, ou um subdomínio), o check envia também o header X-CoreDash-Bot com o valor secreto do projeto, obtido no separador do token do bot CoreDash nas definições do projeto. Um monitor em qualquer outro site não recebe qualquer token. Num redirect, o token segue a regra definida para os headers: só é mantido enquanto o redirect permanecer no host do monitor. Qualquer header próprio com o nome X-CoreDash-Bot é descartado. A página do bot do CoreDash explica ambos em detalhe.

CampoSignificado
at, serverQuando o servidor reportou a ronda e qual o servidor que a executou: scan1 ou scan2. Os checks da mesma ronda partilham o mesmo at.
modeedge ou origin.
outcomeup, down, blocked ou warn.
statusO status HTTP da última resposta, após redirects. null se não houve resposta.
ttfb_ms, total_ms, connect_msTime to First Byte e tempo total, ambos incluindo redirects, e o tempo de ligação no primeiro pedido.
redirects, final_urlO número de redirects seguidos e o URL que respondeu em último.
error, error_textO motivo da falha do check, como valor da tabela abaixo e em texto.
cloudflare, cache_statusSe a resposta passou pela Cloudflare e o header de cache da CDN (cf-cache-status ou x-cache).

Como é determinado o resultado de um check

ResultadoQuando
upO status é igual a expect_status, exceto se esse status for 403, 429 ou igual ou superior a 500: esses contam primeiro como blocked ou down.
downUm status igual ou superior a 500, ou um error: dns, connect, connect_timeout (sem ligação ao fim de 10 segundos), timeout (sem resposta completa ao fim de 30 segundos), tls, redirects (mais de 5) ou network.
blockedUm status 403, 429 ou um challenge da Cloudflare: uma firewall bloqueou o verificador. Nunca é contabilizado como tempo de inatividade. Autorize o CoreDash na sua firewall.
warnQualquer outro status, como um 404 no checkout após um release. Também invalid_ip e invalid_url: o URL ou um redirect aponta para um endereço privado ou reservado, ou um redirect aponta para algo que não é um URL. O verificador não efetua pedidos para estes destinos.

O pior resultado dos checks de uma ronda determina o estado do monitor, do pior para o melhor: down, blocked, warn, up.

Estados do monitor

stateNa appSignificado
pendingA aguardar primeira verificaçãoAdicionado; a primeira ronda ainda não correu.
upOperacionalA última ronda obteve o status esperado.
failingEm falhaUma ronda falhou. Mais uma e passa a down.
downIndisponívelDuas rondas falhadas consecutivas: ambos os servidores registaram a falha.
warnEstado inesperadoA última ronda devolveu warn.
blockedBloqueadoUma firewall bloqueou o verificador.
pausedEm pausaNão é verificado até definir paused como false.

Um monitor num projeto cuja subscrição tenha terminado mantém as suas definições e o seu último estado. Não volta a ser verificado até o projeto ser pago novamente.

Adicionar, alterar e eliminar um 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
  }'
CampoRegras
urlObrigatório no POST. Um URL http ou https completo, sem nome de utilizador ou palavra-passe.
nameAté 80 carateres; nomes mais compridos são truncados. Vazio no POST: o host do URL. Vazio no PATCH: mantém o nome anterior ou assume o novo host caso o mesmo PATCH envie um novo url.
project_idObrigatório com uma chave master: um projeto seu, com subscrição ativa ou período de teste a decorrer. Uma chave de projeto ignora este campo e usa o seu próprio projeto.
origin_ipUm endereço IPv4 ou IPv6 público do servidor. Adiciona o check de origem: direto a este IP, sem passar por DNS ou CDN. "" ou null remove-o.
headersAté 5 headers de pedido adicionais, [{ "name", "value" }]. Nomes: letras, números e hífens, até 64 carateres. Valores: até 256 carateres; valores mais compridos são truncados. Num redirect, só são enviados enquanto o redirect permanecer no host do monitor, com ou sem www. Um redirect para qualquer outro host, incluindo subdomínios, não envia nenhum.
expect_statusO status que conta como up, entre 100 e 599. Por omissão 200. Um status 403, 429 ou qualquer valor igual ou superior a 500 nunca conta como up.
pausedtrue interrompe as verificações, false retoma-as.

A resposta é 201 com o novo monitor, incluindo o IP de origem e os valores dos headers:

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

Envie apenas os campos a alterar. headers substitui a lista completa, pelo que deve enviar todos os headers que pretende manter. Este pedido coloca um monitor em pausa:

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

Com uma chave master, project_id move o monitor, segundo as mesmas regras do POST.

DELETE /api/uptime/monitors/:id

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

Esta operação é irreversível. Para interromper os checks e manter o histórico, envie { "paused": true } com PATCH.

Erros e limites da API de uptime

Os erros são devolvidos como { "error": "..." } com um destes status:

StatusQuando
400O body viola uma regra. O campo error indica qual; consulte abaixo.
401Unauthorized: chave em falta, desconhecida, revogada ou expirada, ou associada a um projeto expirado.
403This token can only read. Use a CoreDash API key to change monitors.: um POST, PATCH ou DELETE com um token OAuth (mcp_at_). Um PATCH ou DELETE num monitor de um projeto onde é convidado recebe 403 com Only the project's owners can change its monitors.
404Monitor not found: o ID não existe ou a chave não tem acesso a esse monitor.
405Method not allowed.
400 errorResolução
Choose a project for this monitorEnvie project_id com uma chave master.
project not foundO project_id não é um projeto seu. Convidados não podem adicionar monitores nem movê-los para lá.
This project's subscription has endedAdicionar ou mover um monitor exige um projeto com subscrição ativa ou um período de teste a decorrer.
A project can have up to 25 monitorsElimine primeiro um monitor ou use outro projeto.
A monitor must belong to a projectOmita project_id no PATCH ou envie um projeto seu.
url can't contain a username or passwordPara basic auth, envie um header Authorization em headers.
origin_ip is not an IP address, origin_ip must be a public IP addressUtilize o endereço público do próprio servidor.
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 codeCorrija o campo indicado na mensagem. As respetivas regras estão na tabela de campos em POST.

Limites: 25 monitores por projeto, 5 headers adicionais por monitor, 2100 checks por GET de um monitor e 30 dias de histórico de checks.

Ferramentas MCP de uptime

O servidor MCP do CoreDash em https://app.coredash.app/api/mcp disponibiliza duas ferramentas de uptime a par das ferramentas de RUM, além de list_projects para os projetos acessíveis pela sua chave. As três são apenas de leitura. Para adicionar, alterar ou eliminar um monitor, use a app ou os endpoints REST acima com uma chave de API CoreDash. As ferramentas não precisam de project_id: uma chave de projeto lê o próprio projeto; uma chave master ou uma ligação OAuth como o Claude lê todos os projetos seus ou para os quais tenha sido convidado.

FerramentaPergunte ao seu agenteDevolve
list_projects"Que sites consegues ver?"{ "projects": [...] } com project_id, name, url e role (owner ou guest).
list_uptime_monitors"Está tudo operacional?"{ "monitors": [...] }, com o IP de origem e os valores dos headers ocultos.
get_uptime_monitor"O checkout esteve em baixo esta semana, e desde quando?"{ "monitor", "summary", "checks" }. Aceita monitor_id e limit (por omissão 100, no máximo 1000); o summary inclui rounds, down_rounds e uptime_pct referentes a esses checks.
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 }
    }
  }'

A resposta é o wrapper JSON-RPC da CoreDash API, com o resultado como string JSON em result.content[0].text. Um monitor desconhecido devolve { "error": "Monitor not found" } nesse campo, com result.isError a true.

Mais sobre uptime e a CoreDash API

API de uptime e ferramentas MCP do CoreDash: monitores e checks Core Web Vitals API de uptime e ferramentas MCP do CoreDash: monitores e checks