API de uptime y herramientas MCP de CoreDash: monitores y comprobaciones

Lista, añade, modifica y pausa monitores de uptime con la clave de API de CoreDash y consulta sus comprobaciones mediante REST o MCP.

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

Trusted by market leaders · Client results

loopearplugsmy work featured on web.devdpg mediakpnaleteiavpnsnvnestleperionerasmusmcebayadevintaworkivanina careharvardcomparemarktplaatshappyhorizonwhowhatwearsaturnmonarchfotocasa

Monitores de uptime con la API de CoreDash

Consulta y modifica los monitores de uptime de tus proyectos en CoreDash mediante REST, con la clave de API que ya usas para los datos de RUM. Un agente de IA los lee mediante MCP.

Inicio rápido

  • URL base https://app.coredash.app/api/uptime/monitors, entrada y salida en JSON.
  • Cabecera Authorization: Bearer cdk_your_key, con una clave de proyecto o una clave maestra.
  • Primera llamada: GET /api/uptime/monitors lista los monitores con su estado y el uptime de los últimos 7 días.
curl https://app.coredash.app/api/uptime/monitors \
  -H "Authorization: Bearer cdk_your_key"

Claves de API para monitores de uptime

Los endpoints de uptime admiten las claves de la API de CoreDash y de la Agency API.

ClaveEmpieza porVeDónde se crea el nuevo monitor
Clave de proyectocdk_Los monitores de su propio proyectoEn su propio proyecto, siempre
Clave maestracdk_master_Los monitores de todos los proyectos propios o con invitaciónEn el proyecto indicado en project_id (debe ser propio)

Crea una clave de proyecto en la página Connect Your AI, en la barra lateral del proyecto: asígnale un nombre y haz clic en Generate API key. Estas mismas claves están en la configuración del proyecto, en API Keys (MCP). Solo los propietarios del proyecto pueden crearlas. La clave maestra se obtiene en la página Agency API de la barra lateral, en cuentas de agencia. Si el proyecto caduca, su clave de proyecto recibe un 401 en cada llamada.

Un invitado en un proyecto solo lee sus monitores. Para añadirlos, modificarlos, moverlos y eliminarlos necesitas un proyecto propio.

El token OAuth de una conexión de IA como Claude (mcp_at_) es de solo lectura. Cualquier POST, PATCH o DELETE con este token recibe un 403.

Endpoints de uptime

Método y rutaQué haceDevuelve
GET /api/uptime/monitorsLista todos los monitores visibles para la clave, ordenados por nombre.200, { "monitors": [...] }, cada uno con un summary
POST /api/uptime/monitorsAñade un monitor. La primera comprobación se ejecuta en la siguiente ronda, a las :00 o :30.201, { "monitor": {...} }
GET /api/uptime/monitors/:idUn monitor con sus comprobaciones, de más reciente a más antigua. ?limit= define el número de comprobaciones: 300 por defecto, máximo 2100.200, { "monitor", "summary", "checks", "rum" }
PATCH /api/uptime/monitors/:idModifica los campos que envíes y deja el resto intacto.200, { "monitor": {...} }
DELETE /api/uptime/monitors/:idElimina el monitor y todas sus comprobaciones.200, { "deleted": true }

La IP de origen y los valores de las cabeceras son secretos. Se devuelven en POST, PATCH y GET /api/uptime/monitors/:id. El listado y las herramientas MCP omiten origin_ip y muestran el valor de cada cabecera como ••••.

El objeto monitor

CampoSignificado
idEl ID del monitor, para el :id de las rutas.
name, urlEl nombre en la app y la URL que se comprueba.
project_idEl proyecto de CoreDash al que pertenece el monitor.
pausedtrue mientras el monitor no se compruebe.
expect_statusEl código de estado HTTP que cuenta como up. 200 por defecto.
origin_checktrue si se define una IP de origen, para que cada ronda también compruebe el servidor directamente.
origin_ipLa IP del servidor. Solo aparece en las respuestas que contienen secretos.
headersLas cabeceras de petición adicionales, [{ "name", "value" }].
statepending, up, failing, down, warn, blocked o paused. Consulta la tabla de estados más abajo.
last_check_at, last_up_atLa última ronda y la última ronda con resultado up.
down_sinceSi está caído: fecha y hora de la primera ronda fallida. De lo contrario, null.
last_downLa última caída finalizada, { "from", "to" }, o null.
check_requested_atSe asigna al añadir el monitor. La siguiente ronda lo borra.
lastLa última comprobación por tipo: edge y origin, cada una como un objeto check. origin_is_cdn es true si la comprobación de origen respondió con cabeceras de Cloudflare, lo que indica que la IP introducida no es la del servidor.
cert_expiresFecha en que caduca el certificado HTTPS que reciben los visitantes.
created_atFecha de creación del monitor.

Los campos summary y rum

Tanto el listado como el monitor individual incluyen un summary: rounds_7d y down_rounds_7d cuentan las rondas de los últimos 7 días, uptime_7d es el porcentaje de esas rondas sin ninguna comprobación en down, y recent contiene las últimas 48 rondas, de más antigua a más reciente, cada una con el peor resultado de esa ronda. Si un monitor no tiene comprobaciones en los últimos 7 días, devuelve summary: null.

El monitor individual también incluye rum: el TTFB en p75 que obtuvieron los visitantes reales en los últimos 7 días, a partir de los datos de RUM del proyecto, para compararlo con el ttfb_ms del comprobador. Es null mientras el proyecto no tenga datos 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" }
}

En la respuesta real, recent contiene 48 rondas; este ejemplo muestra las dos últimas.

El objeto check y sus resultados

Cada 30 minutos una ronda comprueba todos los monitores, alternando entre dos servidores: scan1 a las :00 y scan2 a las :30. La ronda siempre comprueba la URL tal como acceden los visitantes: mediante DNS y el CDN (edge). Si se define una IP de origen, también comprueba el servidor directamente (origin). La API no ofrece ninguna llamada para comprobar un monitor entre rondas. Las comprobaciones se conservan durante 30 días.

Cada comprobación envía el user agent CoreDash/1.0 (uptime; +https://www.coredash.app/bot). Si la URL del monitor pertenece al propio sitio del proyecto (su host, con o sin www, o un subdominio), la comprobación incluye además la cabecera X-CoreDash-Bot con el valor secreto del proyecto, obtenido en la pestaña CoreDash bot token dentro de la configuración del proyecto. Un monitor en cualquier otro sitio no recibe ningún token. Si hay una redirección, el token sigue la regla de las headers configuradas: solo se conserva mientras la redirección permanezca en el host del monitor. Cualquier cabecera propia llamada X-CoreDash-Bot se descarta. La página del bot de CoreDash incluye más información sobre ambos aspectos.

CampoSignificado
at, serverMomento en que el servidor registró la ronda y qué servidor la ejecutó: scan1 o scan2. Las comprobaciones de una misma ronda comparten el mismo valor de at.
modeedge u origin.
outcomeup, down, blocked o warn.
statusEl código de estado HTTP de la última respuesta, tras las redirecciones. null si no hubo respuesta.
ttfb_ms, total_ms, connect_msTime to First Byte y tiempo total, ambos con las redirecciones incluidas, y el tiempo de conexión de la primera petición.
redirects, final_urlEl número de redirecciones seguidas y la última URL que respondió.
error, error_textMotivo del fallo de la comprobación: como valor de la tabla inferior y como texto.
cloudflare, cache_statusIndica si la respuesta pasó por Cloudflare y la cabecera de caché del CDN (cf-cache-status o x-cache).

Cómo se determina el resultado de una comprobación

ResultadoCondición
upEl código de estado coincide con expect_status, salvo si es un 403, un 429 o 500 o superior: en esos casos se consideran antes blocked o down.
downUn estado 500 o superior, o un error: dns, connect, connect_timeout (sin conexión tras 10 segundos), timeout (sin respuesta completa tras 30 segundos), tls, redirects (más de 5) o network.
blockedUn 403, un 429 o un challenge de Cloudflare: un firewall bloqueó el comprobador. Nunca se cuenta como caída. Permite el paso de CoreDash en tu firewall.
warnCualquier otro estado, como un 404 en el checkout tras un deploy. También invalid_ip e invalid_url: la URL o una redirección apunta a una dirección privada o reservada, o una redirección apunta a algo que no es una URL. El comprobador no realiza esas peticiones.

El peor resultado entre las comprobaciones de una ronda determina el estado del monitor, de peor a mejor: down, blocked, warn, up.

Estados del monitor

stateEn la appSignificado
pendingEsperando primera comprobaciónAñadido; la primera ronda aún no se ha ejecutado.
upOperativoLa última ronda obtuvo el estado esperado.
failingFallandoUna ronda ha fallado. Otra más lo pasa a down.
downCaídoDos rondas fallidas consecutivas: ambos servidores registraron el fallo.
warnEstado inesperadoLa última ronda devolvió warn.
blockedBloqueadoUn firewall bloqueó el comprobador.
pausedPausadoNo se comprueba hasta que se establezca paused en false.

Un monitor de un proyecto cuya suscripción haya finalizado conserva su configuración y su último estado. No se vuelve a comprobar hasta que el proyecto se pague de nuevo.

Cómo añadir, modificar y eliminar un 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
  }'
CampoReglas
urlObligatorio en POST. Una URL http o https completa, sin usuario ni contraseña.
nameHasta 80 caracteres; los nombres más largos se truncan. Vacío en POST: el host de la URL. Vacío en PATCH: mantiene el nombre anterior, o el nuevo host si el mismo PATCH envía una nueva url.
project_idObligatorio con una clave maestra: un proyecto propio, con suscripción de pago o un periodo de prueba activo. Una clave de proyecto lo ignora y usa su propio proyecto.
origin_ipUna dirección IPv4 o IPv6 pública del servidor. Activa la comprobación de origen: directa a esta IP, sin pasar por DNS ni CDN. "" o null la elimina.
headersHasta 5 cabeceras de petición adicionales, [{ "name", "value" }]. Nombres: letras, números y guiones, hasta 64 caracteres. Valores: hasta 256 caracteres; los más largos se truncan. En una redirección solo se envían si esta permanece en el host del monitor, con o sin www. Si redirige a cualquier otro host, incluidos subdominios, no se envía ninguna.
expect_statusEl código de estado que cuenta como up, de 100 a 599. 200 por defecto. Un 403, un 429 o cualquier estado a partir de 500 nunca cuenta como up.
pausedtrue detiene las comprobaciones; false las reanuda.

La respuesta es 201 con el nuevo monitor, incluyendo la IP de origen y los valores de las cabeceras:

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

Envía solo los campos que cambies. headers reemplaza la lista completa, así que envía todas las cabeceras que quieras conservar. Así se pausa un 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 }'

Con una clave maestra, project_id mueve el monitor siguiendo las mismas reglas que en POST.

DELETE /api/uptime/monitors/:id

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

No se puede deshacer. Para detener las comprobaciones y conservar el historial, envía { "paused": true } con PATCH.

Errores y límites de la API de uptime

Los errores devuelven { "error": "..." } con uno de estos estados:

EstadoCuándo
400El cuerpo de la petición no cumple alguna regla. El campo error indica cuál; consulta la tabla inferior.
401Unauthorized: falta la clave, la clave es desconocida, revocada o caducada, o está asociada a un proyecto caducado.
403This token can only read. Use a CoreDash API key to change monitors.: se ejecutó un POST, PATCH o DELETE con un token OAuth (mcp_at_). Un PATCH o DELETE sobre un monitor de un proyecto donde eres invitado recibe un 403 con Only the project's owners can change its monitors.
404Monitor not found: el ID no existe o la clave no tiene acceso a ese monitor.
405Method not allowed.
error 400Solución
Choose a project for this monitorEnvía project_id con una clave maestra.
project not foundEl project_id no corresponde a un proyecto propio. Los invitados no pueden añadir monitores ni moverlos allí.
This project's subscription has endedPara añadir o mover un monitor necesitas un proyecto de pago o con un periodo de prueba activo.
A project can have up to 25 monitorsElimina uno primero o usa otro proyecto.
A monitor must belong to a projectOmite project_id en el PATCH o envía un proyecto propio.
url can't contain a username or passwordPara autenticación básica, envía una cabecera Authorization dentro de headers.
origin_ip is not an IP address, origin_ip must be a public IP addressUsa la dirección pública del propio 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 codeCorrige el campo indicado en el mensaje. Sus reglas están en la tabla de campos bajo POST.

Límites: 25 monitores por proyecto, 5 cabeceras adicionales por monitor, 2100 comprobaciones por GET de un monitor y 30 días de historial de comprobaciones.

Herramientas MCP de uptime

El servidor MCP de CoreDash en https://app.coredash.app/api/mcp incluye dos herramientas de uptime junto a las de RUM, además de list_projects para los proyectos accesibles con tu clave. Las tres son de solo lectura. Para añadir, modificar o eliminar un monitor, usa la app o los endpoints REST anteriores con una clave de API de CoreDash. Las herramientas no necesitan project_id: una clave de proyecto lee su propio proyecto; una clave maestra o una conexión OAuth como Claude lee todos los proyectos propios o a los que te hayan invitado.

HerramientaPregunta a tu agenteDevuelve
list_projects"¿Qué sitios puedes ver?"{ "projects": [...] } con project_id, name, url y role (owner o guest).
list_uptime_monitors"¿Está todo operativo?"{ "monitors": [...] }, con la IP de origen y los valores de las cabeceras enmascarados.
get_uptime_monitor"¿Estuvo caído el checkout esta semana y desde cuándo?"{ "monitor", "summary", "checks" }. Admite monitor_id y limit (100 por defecto, máximo 1000); summary incluye rounds, down_rounds y uptime_pct para esas comprobaciones.
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 }
    }
  }'

La respuesta sigue el formato JSON-RPC de la API de CoreDash, con el resultado como una cadena JSON en result.content[0].text. Si el monitor no existe, devuelve { "error": "Monitor not found" } en ese campo y result.isError es true.

Más sobre uptime y la API de CoreDash

API de uptime y herramientas MCP de CoreDash: monitores y comprobaciones Core Web Vitals API de uptime y herramientas MCP de CoreDash: monitores y comprobaciones