REST · JSON · bearer auth

Cron job monitoring, by API

A job that fails loudly gets noticed. A job that silently stops running does not — because a run that never happened produces no error at all. This watches for the absence.

Free plan forever · No credit card · Set up in under a minute

Create a heartbeat and we mint a ping URL. Your job calls it on success; if a call does not arrive within the period plus its grace, we alert you. Nothing is fetched from your side, so it works for jobs on machines we could never reach.

Quick start

Create a cron job monitor

A heartbeat needs no address and no interval of its own — set heartbeat to 1 and give it a period. The ping URL comes back in the response.

curl -X POST https://monitoringdaddy.com/api/v1/monitors \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Nightly database backup",
    "heartbeat": 1,
    "heartbeat_period": 86400,
    "heartbeat_grace": 3600
}'

Send your key as a bearer token. You will find it under Account → API, and it identifies the account everything is created against.

A successful create returns 201 with the whole resource, including its id — keep that if you intend to update or delete it later.

Reference

Fields

Field Type What it does
heartbeat integer Required, set to 1. This is what makes the resource a cron job monitor.
heartbeat_period integer How often the job is expected to call in, in seconds. From five minutes to a week.
heartbeat_grace integer How late it may be before we treat the run as missed. Between 60 and 86,400 seconds.
name string Required. Unique within your account.
alerts array Where to send the alert. A job usually fails overnight, which is the worst time for one address.
Endpoints

Reading, updating and deleting

GET/api/v1/monitors?kind=heartbeatList these
POST/api/v1/monitorsCreate one
GET/api/v1/monitors/{id}Fetch one
PUT/api/v1/monitors/{id}Update one
DELETE/api/v1/monitors/{id}Delete one
GET/api/v1/incidentsIncidents across the account

Narrow the list with kind=heartbeat.

How it works

Calling the ping URL

The create response carries url — that is the ping address. Call it at the end of a successful run. Any method works and nothing needs to be sent in the body.

Pricing

What it costs

Nothing extra. Anything you create through the API counts against the same plan allowance as anything you create in the interface — the same monitors, watches and cron jobs, in the same pool. There is no per-call charge, no separate API tier and no credits to top up. If your plan allows fifty monitors, you may have fifty, however you made them.

White label

Building on top of us

The API is the whole product, not a subset of it. Everything the interface can create, the API can create, and both write to the same account — so you can run your own front end, resell monitoring under your own name, or wire checks into a product you already sell, and still log in here to see the same data. Alerts, incidents and status pages all behave identically whichever way the resource was made.

FAQ

Cron Job Monitoring API: your questions answered

What if the job runs but fails?

Only call the ping URL on success. A job that exits with an error and skips the ping is reported as missed, which is what you want.

What if a run is just slow?

That is what grace is for. The alert fires when the period plus the grace has passed with no call, so an occasional slow run is tolerated.

Does it work behind a firewall?

Yes. The call goes outward from your machine to us, so nothing needs to be reachable from outside.

Does a cron job use a monitor slot?

No. Cron jobs have their own allowance on your plan, separate from monitors and page watches.

Build it on our API

Uptime, SSL, domain expiry, page changes and cron jobs, all from one REST API. Free plan, no card, and API access on every paid plan.