GET /api/query/stats
Graph-wide node and edge counts plus a threat-intel summary. The cheapest way to learn the shape of the graph, and the only Cypher-free way to get a global edge count. Code in five languages.
GET /api/query/stats Documentation
GET /api/query/stats returns graph-wide counts and a threat-intel summary. It is the cheapest way to discover the shape of the graph without running a Cypher scan.
Use it instead of a global Cypher count. A query like MATCH ()-[r]->() RETURN count(r) counts edges over unanchored endpoints, and the engine refuses it: HTTP 400, reason: "global_edge_count", with this endpoint named in the suggestions array. For per-edge-type counts, use CALL db.relationshipTypes() YIELD type, count — this endpoint returns totals, not per-type counts.
The response carries Cache-Control: max-age=60, so cache it client-side — the origin recomputes on every request. Three calls seconds apart returned three distinct timestamp values.
Base URL: https://graph.whisper.security. No request body; authentication is optional and shared across the API.
Call it
curl -s -A "whisper-client/1.0" \
-H "X-API-Key: $WHISPER_API_KEY" \
"https://graph.whisper.security/api/query/stats"Response
{
"physical": {"nodeCount": 3764082662, "edgeCount": 31358071336},
"virtual": {"nodeCount": 3683073849, "edgeCount": 8009227462},
"total": {"nodeCount": 7447156511, "edgeCount": 39367298798},
"objectCount": 46814455309,
"threatIntel": {
"threatIntelLoaded": true,
"hasTaxonomy": true,
"feedSourceCount": 46,
"categoryCount": 25,
"totalListedInEdges": 7530000,
"available": true
},
"timestamp": "2026-07-23T18:51:30Z"
}
| Field | What it holds |
|---|---|
physical | Nodes and edges stored on disk. |
virtual | Objects computed at query time from live routing and threat-intelligence data, such as ANNOUNCED_BY and LISTED_IN edges. |
total | The sum of physical and virtual. |
objectCount | All nodes and edges added together. |
threatIntel | Whether the threat-intel layer and taxonomy are loaded, plus the feed and category counts and the total number of LISTED_IN edges. |
timestamp | When the snapshot was taken (UTC). |
The numbers grow over time; the snapshot above is from July 2026. For running actual queries, see POST /api/query.