Skip to content

API reference

Heartbeats

Heartbeats endpoints of the StatusTick REST API: change a heartbeat's grace period or schedule, check a cron expression and list the next runs.

PATCH/v1/monitors/{monitorId}/heartbeat

Needs a READ_WRITE key. Only for HEARTBEAT monitors.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/heartbeat" \  -H "Content-Type: application/json" \  -d '{    "graceSeconds": 600,    "cron": "0 3 * * *",    "timeZone": "Europe/Berlin"  }'
{  "id": "string",  "name": "string",  "slug": "string",  "url": "string",  "type": "HTTP",  "intervalSeconds": 0,  "settings": {    "notificationDelayMinutes": 0,    "timeoutSeconds": 0,    "sslCheckEnabled": true,    "redirectCheckEnabled": true,    "httpMethod": "GET",    "requestHeaders": {      "property1": "string",      "property2": "string"    },    "requestBody": "string",    "requestBodyType": "RAW",    "expectedStatusCodes": [      0    ],    "expectedResponseHeaders": {      "property1": "string",      "property2": "string"    },    "responseTextCheck": "string",    "responseTextMode": "CONTAINS",    "responseTextCaseSensitive": true,    "jsonAssertions": [      {        "path": "string",        "equals": "string",        "exists": true      }    ],    "zones": [      "GLOBAL"    ],    "locationIds": [      "string"    ],    "requiredFailingZones": 0,    "blockedOpensIncident": true,    "degradedResponseTimeMs": 0,    "ipVersion": "AUTO",    "sslExpiryAlertDays": [      0    ],    "sslOnTCP": true,    "domainExpiryCheckEnabled": true,    "domainExpiryAlertDays": [      0    ],    "assetCheckEnabled": true,    "assetIgnoreHosts": [      "string"    ],    "dnsRecordType": "string"  },  "locationIds": [    "string"  ],  "nextCheckAt": "2019-08-24T14:15:22Z",  "lastCheckAt": "2019-08-24T14:15:22Z",  "lastCheckStatus": "UP",  "lastResponseTimeMs": 0,  "certificate": {    "validFrom": "string",    "validTo": "string",    "issuer": "string",    "subject": "string",    "valid": true,    "error": "string",    "checkedAt": "string"  },  "heartbeat": {    "pingPath": "string",    "pingURL": "string",    "graceSeconds": 0,    "lastPingAt": "string",    "lastDurationMs": 0,    "cron": "string",    "timeZone": "string",    "rotatingUntil": "string",    "urlLastUsedAt": "string",    "previousURLLastUsedAt": "string"  },  "domain": {    "name": "string",    "expiresAt": "string",    "registrar": "string",    "checkedAt": "string"  },  "pageAssets": {},  "browser": {    "script": "string",    "language": "TYPESCRIPT",    "variables": {      "property1": "string",      "property2": "string"    },    "allowedHosts": [      "string"    ],    "slowStepThresholdsMs": {      "property1": 1,      "property2": 1    }  },  "database": {    "database": "string",    "user": "string",    "password": "string",    "userEnv": "string",    "passwordEnv": "string",    "tls": false,    "tlsVerify": true,    "query": "string",    "expectedValue": "string"  },  "mcp": {    "authHeaderName": "string",    "authHeaderValue": "string",    "toolCount": 0,    "toolsHash": "string",    "schemaChangedAt": "2019-08-24T14:15:22Z",    "serverName": "string",    "serverVersion": "string",    "protocolVersion": "string"  },  "protocol": {    "grpcService": "string",    "tlsMode": "NONE",    "tlsVerify": true,    "requireStartTLS": false  },  "vendorIds": [    "string"  ],  "inMaintenance": true,  "locationOffline": true,  "tags": [    "string"  ],  "group": "string",  "managedBy": "KUBERNETES",  "managedKey": "string",  "status": "ACTIVE",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
GET/v1/monitors/{monitorId}/heartbeat/schedule

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Query Parameters

cron?string

Default is the monitor's own schedule.

timeZone?string
count?integer
Default3

Response Body

application/json

curl -X GET "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/heartbeat/schedule?cron=0+3+*+*+*&timeZone=Europe%2FBerlin"
{  "cron": "0 3 * * *",  "timeZone": "Europe/Berlin",  "valid": true,  "error": null,  "nextRuns": [    "2026-09-29T01:00:00Z",    "2026-09-30T01:00:00Z",    "2026-10-01T01:00:00Z"  ]}

Make a new ping URL

POST/v1/monitors/{monitorId}/heartbeat/token

Needs a READ_WRITE key. The old ping URL keeps working for 60 minutes (heartbeat.rotatingUntil), so you can update the job first; a ping on either URL counts. Making another one during that time stops the older URL at once.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Response Body

application/json

curl -X POST "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/heartbeat/token"
{  "id": "string",  "name": "string",  "slug": "string",  "url": "string",  "type": "HTTP",  "intervalSeconds": 0,  "settings": {    "notificationDelayMinutes": 0,    "timeoutSeconds": 0,    "sslCheckEnabled": true,    "redirectCheckEnabled": true,    "httpMethod": "GET",    "requestHeaders": {      "property1": "string",      "property2": "string"    },    "requestBody": "string",    "requestBodyType": "RAW",    "expectedStatusCodes": [      0    ],    "expectedResponseHeaders": {      "property1": "string",      "property2": "string"    },    "responseTextCheck": "string",    "responseTextMode": "CONTAINS",    "responseTextCaseSensitive": true,    "jsonAssertions": [      {        "path": "string",        "equals": "string",        "exists": true      }    ],    "zones": [      "GLOBAL"    ],    "locationIds": [      "string"    ],    "requiredFailingZones": 0,    "blockedOpensIncident": true,    "degradedResponseTimeMs": 0,    "ipVersion": "AUTO",    "sslExpiryAlertDays": [      0    ],    "sslOnTCP": true,    "domainExpiryCheckEnabled": true,    "domainExpiryAlertDays": [      0    ],    "assetCheckEnabled": true,    "assetIgnoreHosts": [      "string"    ],    "dnsRecordType": "string"  },  "locationIds": [    "string"  ],  "nextCheckAt": "2019-08-24T14:15:22Z",  "lastCheckAt": "2019-08-24T14:15:22Z",  "lastCheckStatus": "UP",  "lastResponseTimeMs": 0,  "certificate": {    "validFrom": "string",    "validTo": "string",    "issuer": "string",    "subject": "string",    "valid": true,    "error": "string",    "checkedAt": "string"  },  "heartbeat": {    "pingPath": "string",    "pingURL": "string",    "graceSeconds": 0,    "lastPingAt": "string",    "lastDurationMs": 0,    "cron": "string",    "timeZone": "string",    "rotatingUntil": "string",    "urlLastUsedAt": "string",    "previousURLLastUsedAt": "string"  },  "domain": {    "name": "string",    "expiresAt": "string",    "registrar": "string",    "checkedAt": "string"  },  "pageAssets": {},  "browser": {    "script": "string",    "language": "TYPESCRIPT",    "variables": {      "property1": "string",      "property2": "string"    },    "allowedHosts": [      "string"    ],    "slowStepThresholdsMs": {      "property1": 1,      "property2": 1    }  },  "database": {    "database": "string",    "user": "string",    "password": "string",    "userEnv": "string",    "passwordEnv": "string",    "tls": false,    "tlsVerify": true,    "query": "string",    "expectedValue": "string"  },  "mcp": {    "authHeaderName": "string",    "authHeaderValue": "string",    "toolCount": 0,    "toolsHash": "string",    "schemaChangedAt": "2019-08-24T14:15:22Z",    "serverName": "string",    "serverVersion": "string",    "protocolVersion": "string"  },  "protocol": {    "grpcService": "string",    "tlsMode": "NONE",    "tlsVerify": true,    "requireStartTLS": false  },  "vendorIds": [    "string"  ],  "inMaintenance": true,  "locationOffline": true,  "tags": [    "string"  ],  "group": "string",  "managedBy": "KUBERNETES",  "managedKey": "string",  "status": "ACTIVE",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
POST/v1/monitors/{monitorId}/heartbeat/token/end-overlap

Needs a READ_WRITE key. After a new ping URL was made, the old one stops working at once instead of after 60 minutes.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Response Body

application/json

curl -X POST "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/heartbeat/token/end-overlap"
{  "id": "string",  "name": "string",  "slug": "string",  "url": "string",  "type": "HTTP",  "intervalSeconds": 0,  "settings": {    "notificationDelayMinutes": 0,    "timeoutSeconds": 0,    "sslCheckEnabled": true,    "redirectCheckEnabled": true,    "httpMethod": "GET",    "requestHeaders": {      "property1": "string",      "property2": "string"    },    "requestBody": "string",    "requestBodyType": "RAW",    "expectedStatusCodes": [      0    ],    "expectedResponseHeaders": {      "property1": "string",      "property2": "string"    },    "responseTextCheck": "string",    "responseTextMode": "CONTAINS",    "responseTextCaseSensitive": true,    "jsonAssertions": [      {        "path": "string",        "equals": "string",        "exists": true      }    ],    "zones": [      "GLOBAL"    ],    "locationIds": [      "string"    ],    "requiredFailingZones": 0,    "blockedOpensIncident": true,    "degradedResponseTimeMs": 0,    "ipVersion": "AUTO",    "sslExpiryAlertDays": [      0    ],    "sslOnTCP": true,    "domainExpiryCheckEnabled": true,    "domainExpiryAlertDays": [      0    ],    "assetCheckEnabled": true,    "assetIgnoreHosts": [      "string"    ],    "dnsRecordType": "string"  },  "locationIds": [    "string"  ],  "nextCheckAt": "2019-08-24T14:15:22Z",  "lastCheckAt": "2019-08-24T14:15:22Z",  "lastCheckStatus": "UP",  "lastResponseTimeMs": 0,  "certificate": {    "validFrom": "string",    "validTo": "string",    "issuer": "string",    "subject": "string",    "valid": true,    "error": "string",    "checkedAt": "string"  },  "heartbeat": {    "pingPath": "string",    "pingURL": "string",    "graceSeconds": 0,    "lastPingAt": "string",    "lastDurationMs": 0,    "cron": "string",    "timeZone": "string",    "rotatingUntil": "string",    "urlLastUsedAt": "string",    "previousURLLastUsedAt": "string"  },  "domain": {    "name": "string",    "expiresAt": "string",    "registrar": "string",    "checkedAt": "string"  },  "pageAssets": {},  "browser": {    "script": "string",    "language": "TYPESCRIPT",    "variables": {      "property1": "string",      "property2": "string"    },    "allowedHosts": [      "string"    ],    "slowStepThresholdsMs": {      "property1": 1,      "property2": 1    }  },  "database": {    "database": "string",    "user": "string",    "password": "string",    "userEnv": "string",    "passwordEnv": "string",    "tls": false,    "tlsVerify": true,    "query": "string",    "expectedValue": "string"  },  "mcp": {    "authHeaderName": "string",    "authHeaderValue": "string",    "toolCount": 0,    "toolsHash": "string",    "schemaChangedAt": "2019-08-24T14:15:22Z",    "serverName": "string",    "serverVersion": "string",    "protocolVersion": "string"  },  "protocol": {    "grpcService": "string",    "tlsMode": "NONE",    "tlsVerify": true,    "requireStartTLS": false  },  "vendorIds": [    "string"  ],  "inMaintenance": true,  "locationOffline": true,  "tags": [    "string"  ],  "group": "string",  "managedBy": "KUBERNETES",  "managedKey": "string",  "status": "ACTIVE",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
All docs