Create, manage, and verify healthchecks.io monitors via the REST API. Use when adding monitoring to a new cron job or service, auditing existing checks, wiring ping URLs into configs, or verifying a check fired correctly.
Install
npx skillscat add edmundmiller/dotfiles/healthchecks-io Install via the SkillsCat registry.
This skill provides a command-line interface for managing healthchecks.io monitors through their REST API, enabling creation, listing, and deletion of checks along with retrieval of ping URLs and status information. It addresses the need to automate monitoring setup for cron jobs and services without manual web interface interaction. Developers should use it when integrating healthchecks.io monitoring into new or existing infrastructure workflows.
healthchecks.io API
Credentials available as env vars:
$HC_API_KEY— read-write API key (create/update/delete checks)$HC_API_KEY_READONLY— read-only API key (list/view only)$HC_PING_KEY— ping key (forhttps://hc-ping.com/$HC_PING_KEY/<slug>URLs)
HC_API="https://healthchecks.io/api/v3"Create a check
curl -s -X POST "$HC_API/checks/" \
-H "X-Api-Key: $HC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "service: job-name",
"tags": "nuc cron",
"desc": "What this monitors",
"grace": 3600,
"schedule": "0 * * * *",
"tz": "America/Chicago"
}' | jq '{name, ping_url, uuid}'Key fields:
grace— seconds after expected ping before alerting (3600 = 1h buffer)schedule— cron expression for expected cadence (sets the deadline clock)timeout— alternative to schedule for simple heartbeats (seconds between pings)tz— timezone for cron interpretation
Returns ping_url (https://hc-ping.com/<uuid>) — save this to your config.
List / find existing checks
# All checks with status summary
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | {name, status, last_ping, ping_url}'
# Find by name substring
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | select(.name | contains("gatus")) | {name, uuid, status, ping_url}'
# Find by tag
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | select(.tags | contains("nuc")) | {name, status}'Statuses: new up grace down paused
Delete a check
curl -s -X DELETE "$HC_API/checks/<uuid>" -H "X-Api-Key: $HC_API_KEY" \
| jq '{name, n_pings, last_ping}' # returns the deleted checkPing from a script
PING_URL="https://hc-ping.com/<uuid>"
# Signal start (measures duration, alerts if no success follows)
curl -sS -m 10 --retry 3 "$PING_URL/start"
# Signal success
curl -sS -m 10 --retry 3 "$PING_URL"
# Signal failure
curl -sS -m 10 --retry 3 "$PING_URL/fail"
# Signal success/failure by exit code (0 = success, non-zero = fail)
curl -sS -m 10 --retry 3 "$PING_URL/$EXIT_CODE"
# Attach logs to a ping (POST body, up to 10KB)
curl -sS -m 10 --retry 3 "$PING_URL" --data-raw "$(journalctl -u myservice -n 50 --no-pager)"Wrap a script with start+exit-code:
curl -sS -m 10 "$PING_URL/start"
/path/to/my-script.sh
curl -sS -m 10 "$PING_URL/$?"Verify a check received pings
# Single check detail (includes last_ping, n_pings, status)
curl -s "$HC_API/checks/<uuid>" -H "X-Api-Key: $HC_API_KEY" \
| jq '{name, status, n_pings, last_ping, next_ping}'
# Recent ping log for a check
curl -s "$HC_API/checks/<uuid>/pings/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.pings[:5] | .[] | {type, date, body}'Ping types in log: start success fail
Update an existing check
curl -s -X POST "$HC_API/checks/<uuid>" \
-H "X-Api-Key: $HC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"grace": 7200, "tags": "nuc cron updated"}'Pause / resume
curl -s -X POST "$HC_API/checks/<uuid>/pause" -H "X-Api-Key: $HC_API_KEY"
curl -s -X POST "$HC_API/checks/<uuid>/resume" -H "X-Api-Key: $HC_API_KEY"Useful when intentionally stopping a service (prevents false alarms).
Naming convention
<service>: <job-name> # gatus: deadman
<host>/<service> # nuc/znapzendTags: host + category (e.g. nuc backup, gatus monitoring).