Referencia de la API de monitores

Valores posibles de los campos

Ubicación del monitor

ValorDescripción
US_EAST_1Norte de Virginia
CA_CENTRAL_1Canadá (Montreal)
EU_CENTRAL_1Fráncfort
AP_NORTHEAST_1Tokio

Tipos de alerta del monitor

ValorDescripción
INCIDENTAlerta de incidencia
EMAILAlerta por correo
SMSAlerta por SMS
SLACKAlerta por Slack
DISCORDAlerta por Discord
MICROSOFT_TEAMSAlerta por Microsoft Teams
PHONE_CALLAlerta por llamada telefónica
WEBHOOKAlerta por webhook
GOOGLE_CHATAlerta por Google Chat
WHATSAPPAlerta por WhatsApp

Estado del monitor

ValorDescripción
UPEl monitor funciona con normalidad
DOWNEl monitor ha fallado
DEGRADEDEl monitor tiene problemas
UNKNOWNNo se puede determinar el estado del monitor

Obtener los monitores

Puedes usar este endpoint para consultar y recorrer la lista de todos los monitores existentes.

Endpoint:

GET /:page_id/monitors

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
pagenumber1El número de página que se quiere obtener.
limitnumber100El número de monitores por página.
searchstringnullTérmino de búsqueda para filtrar los resultados.
statusenumnullFiltro de estado ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED').

Petición de ejemplo

GET /1/monitors?limit=3&page=2&status=DOWN

Respuesta de ejemplo

{
"monitors": [{ "...": "monitor objects" }],
"total": 10,
"page": 3,
"totalPages": 5,
"limit": 2
}

Crear un monitor

Endpoint:

POST /monitors

Petición de ejemplo

{
"pageId": "page123",
"url": "https://example.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"target": "200"
}
],
"alerts": ["alert-id-1", "alert-id-2"],
"name": "Example Monitor",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
}
}

Respuesta de ejemplo

{
"monitor": {
"pageId": "page123",
"url": "https://example.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"id": "assertion1",
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"target": "200"
}
],
"alerts": ["alert1", "alert2"],
"name": "Example Monitor",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z"
},
"message": "Monitor created successfully"
}

Actualizar un monitor

Endpoint:

PUT /monitors/:id

Petición de ejemplo

{
"url": "https://updated.com",
"name": "Updated Monitor Name"
}

Respuesta de ejemplo

{
"monitor": {
"pageId": "page123",
"url": "https://updated.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"id": "assertion1",
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"value": "200"
}
],
"alerts": ["alert1", "alert2"],
"name": "Updated Monitor Name",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z"
},
"message": "Monitor updated successfully"
}

Eliminar un monitor

Endpoint:

DELETE /monitors/:id

Petición de ejemplo

DELETE /monitors/monitor-id-1

Respuesta de ejemplo

{
"message": "Monitor deleted successfully."
}

Obtener los registros del monitor

Endpoint:

GET /monitors/:id/logs

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
limitnumber100El número de elementos por página. No puede superar 1000.
pagenumber1El número de página que se quiere obtener.
monitorIdstring-El ID del monitor.
locationstringnullLa ubicación del monitor.
createdAtstring | object | numbernullLa fecha de creación. Puede ser una cadena, un número o un objeto con los campos gte y lte.
isSuccessfulbooleannullSi la comprobación fue correcta.
isSSLCheckbooleannullSi la comprobación es de SSL.
httpStatusCodestringnullEl código de estado HTTP de la respuesta.
status('UP', 'DOWN', 'UNKNOWN', 'DEGRADED')nullEl estado del monitor.
dnsTimestring | number | objectnullTiempo empleado en la resolución DNS.
tcpTimestring | number | objectnullTiempo empleado en la conexión TCP.
tlsTimestring | number | objectnullTiempo empleado en el handshake TLS.
firstByteTimestring | number | objectnullTiempo hasta recibir el primer byte.
downloadTimestring | number | objectnullTiempo empleado en la descarga.
responseTimestring | number | objectnullTiempo de respuesta total.
performanceTimestring | number | objectnullTiempo de rendimiento.
accessabilityScorestring | number | objectnullPuntuación de accesibilidad.
seoScorestring | number | objectnullPuntuación de SEO.
bestPracticesScorestring | number | objectnullPuntuación de buenas prácticas.
successfulAssertionsstring | number | objectnullNúmero de comprobaciones correctas.
sortstringcronológicoCampo por el que ordenar.

Petición de ejemplo

GET /monitors/monitor-id-1/logs?limit=100&page=1

Respuesta de ejemplo

{
"monitorLogs": [
// {monitor log object},
// {monitor log object 2}
],
"total": 478,
"page": 1,
"totalPages": 5,
"limit": 100
}

Ejecutar la comprobación de un monitor por ID

Endpoint:

GET /monitors/:id/run

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
location'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1'-La ubicación del monitor. Debe ser uno de los valores indicados.
retrybooleanfalseIndica si la operación debe reintentarse. Opcional.
monitorLogIdstringnullEl identificador único del registro del monitor. Opcional.

Petición de ejemplo

GET /monitors/monitor-id-1/run?monitorId=abc123&location=US_EAST_1&retry=true&monitorLogId=log456

Respuesta de ejemplo

{
"status": "success",
"message": "Monitor check run successfully."
}

Crear una alerta de monitor

Endpoint:

POST /monitor-alerts

Petición de ejemplo

{
"type": "EMAIL",
"pageId": "page123",
"recipient": "user@example.com",
"recipientWorkspace": "workspace123",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": ["monitor1", "monitor2"],
"metadata": "Additional information about the alert"
}

Respuesta de ejemplo

{
"monitor": {
"id": "alert123",
"siteId": "site123",
"type": "EMAIL",
"recipient": "user@example.com",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"metadata": "Additional information about the alert"
},
"message": "Monitor Alert created successfully"
}

Actualizar una alerta de monitor

Endpoint:

PUT /monitor-alerts/:id

Petición de ejemplo

{
"type": "EMAIL",
"monitors": ["monitor-1-id", "monitor-2-id", "monitor-3-id"]
}

Respuesta de ejemplo

{
"monitor": {
"type": "EMAIL",
"pageId": "page123",
"recipient": "user@example.com",
"recipientWorkspace": "workspace123",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": ["monitor-1-id", "monitor-2-id"],
"metadata": "Additional information about the alert"
},
"message": "Monitor alert updated successfully."
}

Obtener las alertas de monitor

Endpoint:

GET /:page_id/monitor-alerts

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
limitnumber100El número de elementos por página.
pagenumber1El número de página que se quiere obtener.

Petición de ejemplo

GET /1/monitor-alerts?limit=2&page=3

Respuesta de ejemplo

{
"monitorAlerts": [
{...monitor alert objects}
],
"total": 27,
"page": 3,
"totalPages": 14,
"limit": 2
}

Eliminar una alerta de monitor

Endpoint:

DELETE /monitor-alerts/:id

Petición de ejemplo

DELETE /monitor-alerts/alert-id-1

Respuesta de ejemplo

{
"message": "Monitor alert deleted successfully."
}

Crear un grupo de monitores

Endpoint:

POST /monitors-groups

Petición de ejemplo

{
"pageId": "page123",
"name": "Example Name",
"childId": "child456"
}

Respuesta de ejemplo

{
"monitor": {
"id": "group123",
"name": "Example Name",
"siteId": "site123",
"collapsed": false,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"groupId": "parentGroup123",
"children": [
{ "id": "childGroup1", "name": "Child Group 1" },
{ "id": "childGroup2", "name": "Child Group 2" }
],
"order": 1,
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"parents": ["parent1", "parent2"],
"componentId": "component123"
},
"message": "Monitor group created successfully."
}

Actualizar un grupo de monitores

Endpoint:

PUT /monitors-groups/:id

Petición de ejemplo

{
"name": "Updated Monitor Group Name"
}

Respuesta de ejemplo

{
"monitor": {
"id": "group123",
"name": "Updated Monitor Group Name",
"siteId": "site123",
"collapsed": true,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"groupId": "parentGroup123",
"children": [
{ "id": "childGroup1", "name": "Child Group 1" },
{ "id": "childGroup2", "name": "Child Group 2" }
],
"order": 1,
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"parents": ["parent1", "parent2"],
"componentId": "component123"
},
"message": "Monitor group updated successfully."
}

Eliminar un grupo de monitores

Endpoint:

DELETE /monitors-groups/:id

Petición de ejemplo

DELETE /monitors-groups/group-id-1

Respuesta de ejemplo

{
"message": "Monitor group deleted successfully."
}

Añadir monitores a un grupo

Endpoint:

POST /monitors-groups/:id/monitors

Petición de ejemplo

{
"monitors": ["monitor1", "monitor2", "monitor3"]
}

Respuesta de ejemplo

{
"message": "Monitors added to the group successfully."
}

Ejecutar la comprobación de un grupo de monitores

Endpoint:

GET /monitors-groups/:id/run

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
location'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1'-La ubicación del monitor. Debe ser uno de los valores indicados.
retrybooleanfalseIndica si la operación debe reintentarse. Opcional.
monitorLogIdstringnullEl identificador único del registro del monitor. Opcional.

Petición de ejemplo

GET /monitors-groups/group-id-1/run

Respuesta de ejemplo

{
"result": "OK",
"monitorLogId": "monitor-log-id-1"
}

Monitores cron

Los monitores cron siguen las tareas programadas mediante pings HTTP. Para la configuración del producto y su uso en el panel, consulta Monitorización cron.

Valores posibles de los campos

Estado del monitor cron

ValorDescripción
UPEl monitor funciona con normalidad
DOWNEl monitor ha fallado
DEGRADEDEl monitor tiene problemas
UNKNOWNNo se puede determinar el estado del monitor

Estado de actividad del monitor cron

ValorDescripción
ACTIVEEl monitor se comprueba de forma activa
PAUSEDLas comprobaciones del monitor están pausadas
MUTEDEl monitor está silenciado (sin notificaciones)

Estado del registro del monitor cron

ValorDescripción
SUCCESSLa tarea se completó correctamente
FAILURELa tarea informó explícitamente de un fallo
MISSEDLa tarea no hizo ping dentro de la ventana prevista
LATELa tarea hizo ping tras el periodo pero dentro del margen
STARTEDLa tarea informó de que había empezado (medición del tiempo)

Periodo y margen

Tanto period como grace se indican en segundos. period es la frecuencia con la que debe ejecutarse la tarea; grace es el tiempo adicional que se permite antes de marcar el monitor como caído.

Obtener los monitores cron

Endpoint:

GET /:page_id/monitors/cron

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
limitnumber100El número de monitores cron por página. El máximo es 100.
pagenumber1El número de página.
searchstringnullTérmino de búsqueda para filtrar los resultados por nombre.
statusenumnullFiltro de estado ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED').

Petición de ejemplo

GET /page123/monitors/cron?limit=10&page=1&status=DOWN

Respuesta de ejemplo

{
"cronMonitors": [
{
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
}
],
"total": 1,
"page": 1,
"totalPages": 1,
"limit": 10
}

Crear un monitor cron

Endpoint:

POST /monitors/cron

Petición de ejemplo

{
"pageId": "page123",
"name": "Daily backup",
"period": 86400,
"grace": 3600,
"alerts": ["alert-id-1", "alert-id-2"],
"createComponent": true,
"onFail": {
"createIncident": true,
"createOutageDuration": false,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": false,
"publishIncident": true,
"notifySubscribers": true
}
}

Respuesta de ejemplo

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
},
"message": "Cron monitor created successfully."
}

La respuesta incluye un slug. Úsalo para construir las URL de ping de tu tarea. El primer ping correcto programa la comprobación en segundo plano.

Actualizar un monitor cron

Endpoint:

PUT /monitors/cron/:id

Petición de ejemplo

{
"name": "Daily backup (updated)",
"period": 43200,
"grace": 1800,
"state": "PAUSED",
"alerts": ["alert-id-1"],
"onFail": {
"notifySubscribers": false
}
}

Respuesta de ejemplo

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup (updated)",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 43200,
"grace": 1800,
"status": "UP",
"state": "PAUSED",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": false,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"alerts": [
{
"id": "alert-id-1",
"type": "EMAIL",
"recipient": "ops@example.com"
}
],
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-16T10:30:00.000Z"
},
"message": "Cron monitor updated successfully."
}

Eliminar un monitor cron

Endpoint:

DELETE /monitors/cron/:id

Petición de ejemplo

DELETE /monitors/cron/cron-abc123

Respuesta de ejemplo

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
},
"message": "Cron monitor deleted successfully."
}

Obtener los registros de un monitor cron

Endpoint:

GET /monitors/cron/:id/logs

Parámetros de consulta

ParámetroTipoValor por defectoDescripción
limitnumber100El número de registros por página. El máximo es 127.
pagenumber1El número de página. El máximo es 1000.
startDatestringhace 1 añoFecha de inicio ISO 8601 del rango de registros.
endDatestringahoraFecha de fin ISO 8601 del rango de registros.
importanceenumnullFiltra los registros por importancia ('all', 'important').

Petición de ejemplo

GET /monitors/cron/cron-abc123/logs?limit=50&page=1&importance=important

Respuesta de ejemplo

{
"logs": [
{
"id": "log-xyz789",
"monitorId": "cron-abc123",
"status": "SUCCESS",
"requestType": "GET",
"agent": "curl/8.4.0",
"ipAddress": "203.0.113.10",
"createdAt": "2024-01-16T06:00:00.000Z",
"startedAt": "2024-01-16T05:59:58.000Z"
}
],
"page": 1
}

Obtener el resumen de un monitor cron

Endpoint:

GET /monitors/cron/:id/summary

Petición de ejemplo

GET /monitors/cron/cron-abc123/summary

Respuesta de ejemplo

{
"summary": {
"totalLogs": 120,
"totalFailedLogs": 3,
"availability": 97.5,
"oneDayAvailability": 100,
"previousDayAvailability": 100,
"sevenDayAvailability": 98.2,
"previousSevenDayAvailability": 96.1,
"thirtyDayAvailability": 97.5,
"previousThirtyDayAvailability": 95.8,
"lastSuccess": "2024-01-16T06:00:00.000Z",
"lastFailure": "2024-01-10T06:00:00.000Z",
"lastStarted": null,
"upSince": "2024-01-10T07:00:00.000Z",
"downSince": null
}
}

Endpoints de ping

Estos endpoints no requieren autenticación. El slug del monitor actúa como secreto.

Puedes hacer ping mediante la URL base de la API o mediante el host cron dedicado:

  • Éxito: https://cron.instatus.com/{slug} o GET / POST / HEAD /monitors/cron/{slug}
  • Fallo: https://cron.instatus.com/{slug}/fail o GET / POST / HEAD /monitors/cron/{slug}/fail
  • Inicio: https://cron.instatus.com/{slug}/start o GET / POST / HEAD /monitors/cron/{slug}/start

Envía un ping de éxito cada vez que tu tarea termine dentro del plazo. Envía un ping de inicio antes de que se ejecute y un ping de éxito o de fallo cuando acabe para registrar el tiempo de ejecución.

Ejemplo de ping de éxito

curl https://cron.instatus.com/my-page-x7k2m9n4p1q8w3e5

Respuesta de ejemplo

{
"id": "log-xyz789",
"monitorId": "cron-abc123",
"status": "SUCCESS",
"requestType": "GET",
"agent": "curl/8.4.0",
"ipAddress": "203.0.113.10",
"createdAt": "2024-01-16T06:00:00.000Z"
}

Si el slug no es válido, la respuesta es:

{
"message": "Monitor not found"
}