Overview
Track whether your services are alive with heartbeat-based uptime monitoring.
Uptime monitoring answers one question: is your service still running? Instead of probing a URL from outside, Vanta uses heartbeat-based monitoring. Your application sends a signal on a regular interval, and Vanta tracks whether those signals arrive on time. If one never shows up, the service is considered down.
How uptime works
You create a monitor with an expected interval and a grace period. Your service then sends heartbeats to the monitor's endpoint. Vanta records each arrival and checks whether the next one is on time. If the expected interval passes and the grace period elapses without a heartbeat, the monitor transitions to down and an incident is opened.
Monitor types
A monitor's type describes how your service signals that it is alive. It does not change how monitoring works:
| Type | Use it for |
|---|---|
heartbeat | General-purpose services (default) |
worker | Background worker processes and queue processors |
bot | Discord or other chat bots |
cron | Scheduled jobs |
http | HTTP servers that report a heartbeat |
custom | Anything else |
The default window
The default expected interval is 60 seconds and the default grace period is 30 seconds. A monitor is considered down after roughly 90 seconds (interval plus grace) without a heartbeat. You can tighten or loosen both values when you create a monitor to match how often your service can realistically report.
Monitor lifecycle
| Step | What happens |
|---|---|
| Create | The monitor starts in unknown until the first heartbeat arrives. |
| Healthy | Heartbeats arrive at or before the expected interval, keeping the monitor up. |
| Late | A heartbeat is missed but still inside the grace period. The monitor stays up. |
| Down | The interval plus grace elapses with no heartbeat. The monitor is down and an incident is opened. |
| Recovered | A heartbeat arrives again. The monitor returns to up and the incident is resolved. |
Heartbeats are identified by the monitor's slug, not its id, so you can send one without looking up the monitor first:
POST /v1/projects/:projectId/heartbeats/:monitorSlug
Authorization: Bearer vk_...Incidents
An incident is created automatically by a worker when a monitor goes down. It records when the outage started and stays active until a recovering heartbeat arrives, at which point it is resolved. Incidents are the basis of your uptime statistics. See Incidents for details.