Developers
Public API
The website is built on the same API. It is free and rate-limited (120 requests per minute per IP, 4 concurrent SSE connections), returns JSON with UTC ISO-8601 timestamps and plain numbers, and is served with Cache-Control: no-store except long-range history (30 s). Unknown scopes return 404 {"error":"not_found"}. Higher limits, webhooks and historical exports: contact@spboucher.ai.
# the index right now
curl -s https://www.internetpressure.io/api/v1/pressure/global | jq '{pressure, level, delta_1h, confidence}'
# 24 h of global pressure, 1-minute step
curl -s "https://www.internetpressure.io/api/v1/pressure/history?scope_type=global&range=24h" | jq '.summary'
# a country, an ASN, a service
curl -s https://www.internetpressure.io/api/v1/pressure/country/CA | jq '.pressure'
curl -s https://www.internetpressure.io/api/v1/pressure/asn/13335 | jq '.bgp'
curl -s https://www.internetpressure.io/api/v1/service/cloudflare | jq '{observed, vendor_status, discrepancy}'
# live stream (SSE)
curl -N https://www.internetpressure.io/api/v1/live| GET | Returns | Query |
|---|---|---|
| /api/v1/status | Instrument health: engine, ingest, probes, BGP, stores, internal_status. | |
| /api/v1/pressure/global | The index: pressure, level, Δ1h/Δ24h, velocity, acceleration, volatility, confidence, coverage, components with drivers, explain rows, 1-h sparkline. | |
| /api/v1/pressure/history | Server-side aggregated series for any scope. | |
| /api/v1/pressure/regions | All regions with pressure, level, Δ1h, component scores, probes, targets, coverage. | |
| /api/v1/pressure/region/{id} | Region detail: 24-h history, 7-d baseline, incidents, top ASNs/services, probes, latency matrix. | |
| /api/v1/pressure/countries | Countries where we hold at least one probe or anchored target — nothing else is pretended. | |
| /api/v1/pressure/country/{cc} | Country detail with history, baseline, incidents, ASNs, services, probes and targets. | |
| /api/v1/asns | Autonomous systems index. | |
| /api/v1/pressure/asn/{asn} | ASN detail: components, BGP stats and 24-h series, regions observed, targets, incidents. | |
| /api/v1/services | Services index with observed availability and vendor status indicator. | |
| /api/v1/service/{slug} | Observed vs vendor, discrepancy, probe × target matrix, affected regions. | |
| /api/v1/targets | Target registry. | |
| /api/v1/target/{id} | Target detail: latest measurement per probe, 24-h series, DNS resolvers. | |
| /api/v1/probes | Probe network: status, last seen, version, uptime, clock offset, capabilities. | |
| /api/v1/incidents | Incident list. | |
| /api/v1/incident/{slug} | Incident detail: timeline, evidence, series with global overlay, probes, targets, BGP, annotations. | |
| /api/v1/fronts | Active Pressure Fronts (source → destination arcs). | |
| /api/v1/bgp/stats | BGP rates vs baseline, collectors, 1-h series, top origins. | |
| /api/v1/latency | Global latency medians, inter-region matrix, per-probe view. | |
| /api/v1/ticker | The live ticker counters. | |
| /api/v1/routes | Route Explorer: baseline vs current traceroute, diff, 24-h hashes, 7-d share. | |
| /api/v1/routes/pairs | Sampled (probe, target) pairs with 24-h change counts. | |
| /api/v1/history/summary | History explorer summary. | |
| /api/v1/explain | Deep explainability: components → signals with current, median, MAD, robust z, samples, stress, contribution. | |
| /api/v1/methodology | Public copy of the scoring configuration. | |
| /api/v1/search | Search countries, regions, ASNs, services, targets, incidents. | |
| /api/v1/live | Server-Sent Events: snapshot, global_pressure_update, regional_pressure_update, ticker, bgp_stats, probe_stats, incident_created/updated, service_degradation, front_update, internal_status. |
Every level field is one of calm ≤10 · normal ≤25 · elevated ≤40 · stressed ≤55 · high ≤70 · severe ≤85 · extreme ≤100; level_label is its human label.
internal_status is ok, degraded (too few fresh probes, stale BGP or unhealthy stores — the score is frozen and stale: true) or stale (engine has not run). Clients must show a degraded state instead of interpreting a frozen number.