API
Everything the site shows is available as JSON. Read-only, no key, no rate limit beyond ordinary courtesy. If you want a copy of the record, take one.
The archive is content-addressed, so you never have to trust this API. Fetch the raw object, hash it yourself, and compare it with the digest we published.
Endpoints
| Endpoint | Returns |
|---|---|
GET /api/status |
Whether the system is actually working. 503 if no collection has completed in 24 hours. Lists every source currently erroring or returning 4xx. |
GET /api/health |
Whether the web process is up. Nothing else. Kept trivially stable. |
GET /api/stats |
Counts: sources, observations, archived objects, events, derived documents. |
GET /api/sources |
Every watched source, its agency, tags, and when it was last checked. |
GET /api/events |
The timeline. ?limit= 1–500, ?offset=,
?q= to search. Each row carries the SHA-256 of the current and
previous objects, and the observer. |
GET /archive/<sha256> |
The evidence. The raw bytes exactly as retrieved. This is the thing everything else is derived from. |
GET /archive/<sha256>/metadata |
Every retrieval of that object: URL, time, status, content type, and whether it still hashes to its own name. |
Verify a record yourself
# take any event curl -s https://civicmemory.ai-ministries.com/api/events?limit=1 # pull the raw object it names, and hash it curl -s https://civicmemory.ai-ministries.com/archive/<sha256> | sha256sum # the digest you get is the filename you asked for, or we are lying to you
Reading a row
observer | self means we retrieved it
directly. Anything else, such as internet-archive, means somebody
else observed it and we fetched their capture. |
|---|---|
observed_at | When we retrieved it. Never backdated, under any circumstances. |
original_observed_at | When the third party observed it, where that applies. |
sha256 | The current object. Fetch and verify it. |
previous_sha256 | The version it replaced, still archived and still fetchable. |
event_type | first_seen,
changed, unavailable, disappeared,
recovered. |
What is not in the API
Diffs are derived data and are shown on event pages rather than served as a bulk feed, deliberately. A diff is our reading of two archived objects, not evidence. If you want to check one, take both objects and diff them yourself; that is the whole point of publishing the hashes.
There are no visitor analytics to expose, because none are collected.