Skip to contentSkip navigation

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.

API Reference
On this page (2)

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

json
{
  "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"
}
FieldWhat it holds
physicalNodes and edges stored on disk.
virtualObjects computed at query time from live routing and threat-intelligence data, such as ANNOUNCED_BY and LISTED_IN edges.
totalThe sum of physical and virtual.
objectCountAll nodes and edges added together.
threatIntelWhether the threat-intel layer and taxonomy are loaded, plus the feed and category counts and the total number of LISTED_IN edges.
timestampWhen 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.