Status
GET /v1/status reports the health of the service. It is cached for a few seconds (cache-control: public, max-age=...; the x-status-cache header is HIT or MISS), so polling it faster than that gains nothing.
curl "https://api.chizumulu.net/v1/status"Response
{ "status": "operational", "collector": { "status": "connected", "heartbeatAt": "2026-09-19T15:30:00.000Z", "whatsapp": { "status": "connected", "lastConnectedAt": "2026-09-19T12:46:29.796Z", "lastDisconnectedAt": "2026-09-19T12:46:23.596Z", "lastDisconnectReason": "stream_error", "streamRetryCount": 0 }, "version": { "collector": "0.1.0", "baileys": "6.7.24" }, "processStartedAt": "2026-09-19T08:35:51.896Z", "storageFailureActive": false, "lastStorageFailureAt": null }, "delivery": { "status": "healthy", "queueDepth": 0, "oldestPendingAgeSeconds": null, "quarantinedCount": 0, "lastSuccessfulIngestAt": "2026-09-19T15:26:31.207Z" }, "data": { "lastUpdateAt": "2026-09-19T15:24:20.000Z", "freshness": "fresh" }, "processing": { "registeredThrough": 6, "latestObservation": 6, "lag": 0, "pending": 0, "awaitingAi": 1, "failed": 0 }, "media": { "status": "idle", "reasons": [], "stored": 0, "pending": 0, "failed": 0, "skipped": 0, "oldestPendingAt": null, "oldestPendingAgeSeconds": null }}A quiet feed is not an outage
Section titled “A quiet feed is not an outage”The most important design rule: no new posts does not mean something is broken. The API reports them separately.
| Block | Answers | Values |
|---|---|---|
data.freshness |
Has the source published something recently? | fresh (a message within the last 15 minutes) or quiet |
collector.status |
Is the collector reporting in? | connected, degraded or unavailable |
delivery.status |
Is what the collector saw reaching the API? | healthy or degraded |
status (top level) |
Overall | operational when the collector is connected and delivery is healthy, otherwise degraded |
data.freshness: "quiet"withstatus: "operational"is normal: the collector is fine, nothing new was published.degradedorunavailablemeans the collection side has a problem. Data already stored stays readable; the read routes keep working.collector.whatsappdescribes the collector’s own connection to the source (status, last connect and disconnect times, a coarselastDisconnectReasonandstreamRetryCount).deliverydescribes the collector’s outbox:queueDepth, the age of the oldest waiting item,quarantinedCount(items that could not be delivered; any value above zero makes deliverydegraded) and the last successful ingest.
Processing and media
Section titled “Processing and media”processingis informational and never changes the top-levelstatus.registeredThroughandlatestObservationare observation ids,lagis the difference, andpending,awaitingAiandfailedcount unfinished observations.mediadescribes retention of images that came with posts. Retained images are not served by this API; only league standings tables in them can be read into structured data (see facts read from an image). If it cannot be computed it is{"status":"unavailable"}.