Skip to content
Back to skills

Healthchecks Io

ASecurity

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.

  • 81 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
toolsgobashexpressapi

Works with

  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add edmundmiller/dotfiles --skill healthchecks-io --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Healthchecks Io?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Healthchecks Io
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/edmundmiller-healthchecks-io/badge)](https://www.skillsdirectory.com/skills/edmundmiller-healthchecks-io)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: healthchecks-io
description: 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.
---

# 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 (for `https://hc-ping.com/$HC_PING_KEY/<slug>` URLs)

```bash
HC_API="https://healthchecks.io/api/v3"
```

## Create a check

```bash
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

```bash
# 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

```bash
curl -s -X DELETE "$HC_API/checks/<uuid>" -H "X-Api-Key: $HC_API_KEY" \
  | jq '{name, n_pings, last_ping}'   # returns the deleted check
```

## Ping from a script

```bash
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:

```bash
curl -sS -m 10 "$PING_URL/start"
/path/to/my-script.sh
curl -sS -m 10 "$PING_URL/$?"
```

## Verify a check received pings

```bash
# 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

```bash
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

```bash
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/znapzend
```

Tags: host + category (e.g. `nuc backup`, `gatus monitoring`).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.