Getting Started
Last updated: March 2026
Get an API key
- Go to console.whisper.security and create a free account
- Once logged in, generate an API key from the console dashboard
Server and authentication
| Base URL | https://graph.whisper.security |
| Authentication | X-API-Key header on every request |
All examples below assume:
BASE=https://graph.whisper.security
API_KEY=YOUR_API_KEY
Your first query
Resolve a hostname to its IP address:
curl -s -X POST $BASE/api/query \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{"query": "MATCH (h:HOSTNAME {name: \"www.google.com\"})-[:RESOLVES_TO]->(ip:IPV4) RETURN h.name, ip.name"}'
Response:
{
"columns": ["h.name", "ip.name"],
"rows": [
{"h.name": "www.google.com", "ip.name": "142.250.64.100"},
{"h.name": "www.google.com", "ip.name": "142.251.150.119"},
{"h.name": "www.google.com", "ip.name": "142.251.151.119"},
{"h.name": "www.google.com", "ip.name": "142.251.152.119"},
{"h.name": "www.google.com", "ip.name": "142.251.153.119"},
{"h.name": "www.google.com", "ip.name": "142.251.154.119"},
{"h.name": "www.google.com", "ip.name": "142.251.155.119"},
{"h.name": "www.google.com", "ip.name": "142.251.156.119"},
{"h.name": "www.google.com", "ip.name": "142.251.157.119"}
],
"statistics": {"rowCount": 9, "executionTimeMs": 6}
}
IP addresses change with DNS updates; the structure is what matters.
Understanding results
Every response has three fields:
| Field | Contents |
|---|---|
columns | Column names, matching your RETURN clause |
rows | Array of objects, one per result row |
statistics | rowCount and executionTimeMs (server-side only, no network latency) |
For full endpoint documentation, see the Cypher API Reference. For query syntax, see the Cypher Language Reference.