API Usage
Who calls the public API, how often, and what they ask for
What is counted
Origin requests only. Responses served from the edge cache (the v1 endpoints are cached for 300s) never reach the server and cannot be counted here, so real client-side traffic is higher than these figures. Callers are identified by a salted daily hash of their IP — no addresses are stored, and a caller cannot be followed across days.
Volume
Most recent request 1m ago
Who is calling
Top user agents (30d)
Which endpoints
/api/v1/investigations/[slug]1,204 · 55.3%/api/views938 · 43.1%/llms.txt26 · 1.2%/api/search7 · 0.3%/api/v1/investigations2 · 0.1%/api/v11 · 0.0%When
Referring hosts (30d)
How this is measured
Every public read endpoint is wrapped in withApiLogging(), which records one row per origin request after the response is sent. Logging never blocks or fails a request.
Identity. There is no consumer API key system, so a caller is identified as sha256(salt + IP + UTC date). Distinct-caller counts are counts of that hash. Raw IP addresses are not stored — the column was dropped in migration 034.
Endpoints are grouped by templated route, so /api/v1/investigations/[slug] is one row rather than one row per investigation.
Aggregates are computed in Postgres, not by scanning rows in the app — PostgREST silently caps an unbounded select at 1,000 rows, which has produced wrong figures on this site before.