Skip to content

Heartbeat Monitors Reference

Heartbeat Monitors are used to monitor any system that can make an outbound HTTP request to signal its status.

For practical examples and integration patterns, see our Use Cases guide and Getting Started guide. To set up alerting for your monitors, see Setting Up Alerts.

When creating or updating a Heartbeat Monitor, the following fields are available:

FieldTypeDescription
nameStringA human-readable name for the monitor.
scheduleStringHow often a pulse is expected. Can be a simple interval (every 5 minutes, hourly, daily) or a standard cron expression (*/5 * * * *). Required.
graceDuration StringThe grace period to wait after the expected pulse time before marking the monitor as “Down”. E.g., 10m, 1h. Required.
timezoneStringThe IANA time zone identifier for cron schedules (e.g., America/New_York, UTC). Defaults to your organization’s time zone setting.
tagsArray<String>A list of tags to categorize and filter monitors.
expected_runtimeObjectAn object with min and max duration strings (e.g., 30s, 5m). If a job completes outside this range, its status is set to “Degraded”.
payload_scanningObjectConfigure keywords to scan for in the POST body of a pulse. The success_keyword or failure_keyword can determine the monitor’s status.
payload_metricsArray<Object>Define rules (e.g., using JSONPath) to extract numerical values from JSON payloads. These are tracked as simple time-series metrics associated with the monitor.

Each Heartbeat Monitor has a set of unique, secret URLs to signal its status. The base URL is https://pulse.9n9s.com/{uuid}.

EndpointMethodDescription
/GET, POSTSignals successful completion. A POST request can include a body for log/output capture.
/startGET, POSTSignals the beginning of a job run. Resets the timer and sets the status to “Started”. Enables runtime tracking.
/failGET, POSTSignals immediate failure. A POST can include an error message or logs.
/{exit_code}GET, POSTExplicitly signals the outcome with an integer exit code. 0 is success, any non-zero value is a failure.

A Heartbeat Monitor can have one of the following statuses:

StatusDescription
NewThe monitor has been created but has never received a pulse.
UpThe monitor has received a successful pulse within the expected schedule.
DownThe monitor did not receive a successful pulse within the schedule + grace period.
LateThe monitor’s pulse is overdue according to its schedule, but it is still within its grace period.
StartedThe monitor has received a /start pulse but has not yet received a completion pulse.
DegradedThe monitor received a successful pulse, but its runtime was outside the configured expected_runtime range.
PausedThe monitor’s alerting has been manually paused by a user. Checks are still recorded.