---
title: "Monitor Health"
method: GET
path: "/api/reddit/monitor/health"
tags: ["Monitoring"]
---

# Monitor Health

`GET /api/reddit/monitor/health`

## Request

- Base URL: `https://api.redditapis.com`
- URL: `https://api.redditapis.com/api/reddit/monitor/health`
- Auth: HTTP bearer

Per-monitor delivered/failed/suppressed counts for the last 24h, plus whether the delivery ceiling has been hit and what that ceiling is. `suppressed_24h` counts two different things and `suppressed_breakdown` splits them: `ceiling` (the monitor's daily cap was reached) and `stale` (the item was already older than the freshness window when we first saw it, so it was withheld rather than delivered as if it were new). A stale withhold is the usual reason a monitor's delivered count sits far below its matched count with no error anywhere, and it deliberately does not set `ceiling_reached`, so do not read `suppressed_24h > 0` as 'this monitor is over its limit'. When `suppressed_breakdown.resolved` is false the counts do not add up to the total and `unresolved_reason` says why. Those counts only cover posts we fetched: a post we never fetched was never matched and leaves no row behind, so it is absent from all three counters rather than counted in any of them. `coverage_24h` is the separate field that speaks to fetching, with a `status` of complete, degraded, partial or unknown, fed by the poll log and covering both unrecoverable loss events (`listing_exhausted` and `poll_overflow`). `complete` means every poll that ran got back to where the previous poll finished AND every feed was actually polled. The second half is the separate `stream_liveness` field, which reads the polling registry and the per-feed last-successful-poll stamp rather than the poll log, because a feed that is never polled writes nothing to the poll log and so produces a coverage read identical to a healthy monitor's. Its status is live, degraded (see `streams[]` for `never_polled`, `stalled` or `unregistered` per feed) or unknown, and `coverage_24h` can never read `complete` while it is anything but `live`. Cost: Free per call.

## Query parameters

- `id` string, required

## Response `200`

Successful response.

- object

## Other responses

- `400`: Bad request — missing or invalid parameters.
- `401`: Missing Bearer token.
- `403`: Invalid Bearer token.
- `429`: Rate limit exceeded.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/redditapis/apis/redditapis-api.md) · [All operations](https://skmtc.dev/redditapis/apis/redditapis-api/llms.txt) · [OpenAPI document](https://skmtc.dev/redditapis/apis/redditapis-api/revisions/9696482dfe9b?raw)
