voidly
Interactive playground

Voidly API Explorer

Thirty hand-picked endpoints. Click Try it on any card to fetch the response inline — the page renders the JSON server-side, so you don't need a key, a CORS proxy, or any client-side JS. Every response is also valid curl.

Read-only. Free. CC BY 4.0. Live host: api.voidly.ai.Full reference →

Atlas

  • GET/v1/atlas/score
    Try it

    A-F country grades — composite censorship score. Lightweight leaderboard variant.

    Example
    https://api.voidly.ai/v1/atlas/score?limit=20
    Response shape
    • count: number
    • results[]: { country, country_name, score, grade }
    • methodology: string
    Curl
    curl 'https://api.voidly.ai/v1/atlas/score?limit=20'
  • GET/v1/atlas/score-v2
    Try it

    Level-aware composite (50% structural baseline + change). Fixes v1 chronic-blocker under-scoring.

    Example
    https://api.voidly.ai/v1/atlas/score-v2?limit=20
    Response shape
    • count: number
    • results[]: { country, country_name, score, grade, components, confidence }
    Curl
    curl 'https://api.voidly.ai/v1/atlas/score-v2?limit=20'
  • GET/v1/atlas/score-v2/{cc}
    Try it

    Atlas Score v2 for one country with full component breakdown.

    Example
    https://api.voidly.ai/v1/atlas/score-v2/IR
    Response shape
    • country: string
    • score: number
    • grade: string
    • components: object
    Curl
    curl 'https://api.voidly.ai/v1/atlas/score-v2/IR'
  • GET/v1/atlas/compare
    Try it

    Side-by-side comparison row for an arbitrary set of countries.

    Example
    https://api.voidly.ai/v1/atlas/compare?countries=IR,RU,CN
    Response shape
    • rows[]: { country, country_name, score, grade, incidents_30d, evidence_30d }
    Curl
    curl 'https://api.voidly.ai/v1/atlas/compare?countries=IR,RU,CN'
  • GET/v1/atlas/changelog
    Try it

    ML model registry — every train + promote event auto-stitched from sidecar JSONs.

    Example
    https://api.voidly.ai/v1/atlas/changelog
    Response shape
    • entries[]: { model_name, version, trained_at, loco_f1, loco_auc, top_features }
    Curl
    curl 'https://api.voidly.ai/v1/atlas/changelog'
  • GET/v1/atlas/cite
    Try it

    BibTeX / RIS / markdown citation for an incident or dataset snapshot.

    Example
    https://api.voidly.ai/v1/atlas/cite?id=IR-2026-0142
    Response shape
    • bibtex: string
    • ris: string
    • markdown: string
    Curl
    curl 'https://api.voidly.ai/v1/atlas/cite?id=IR-2026-0142'

Classifier

  • GET/v1/classifier/info
    Try it

    Live classifier transparency — version, training data, stratified F1, LOCO splits.

    Example
    https://api.voidly.ai/v1/classifier/info
    Response shape
    • version: string
    • stratified_f1, loco_f1_mean, loco_f1_median
    • training_samples: number
    Curl
    curl 'https://api.voidly.ai/v1/classifier/info'
  • GET/v1/classifier/feature-importance
    Try it

    Per-feature gain importance for the live country-day classifier (v3.3).

    Example
    https://api.voidly.ai/v1/classifier/feature-importance
    Response shape
    • features[]: { name, importance, rank }
    Curl
    curl 'https://api.voidly.ai/v1/classifier/feature-importance'
  • GET/v1/classifier/score/{cc}
    Try it

    Live classifier score for one country today.

    Example
    https://api.voidly.ai/v1/classifier/score/IR
    Response shape
    • country, prediction (0/1), probability, top_features
    Curl
    curl 'https://api.voidly.ai/v1/classifier/score/IR'

Forecast

  • GET/v1/forecast/{cc}/7day
    Try it

    7-day shutdown-risk forecast with conformal interval, top-3 SHAP drivers, ACI alpha state.

    Example
    https://api.voidly.ai/v1/forecast/IR/7day
    Response shape
    • forecast[]: { day, date, risk, drivers, interval_90 }
    • aci: { alpha, coverage_empirical, n }
    Curl
    curl 'https://api.voidly.ai/v1/forecast/IR/7day'
  • GET/v1/forecast/{cc}/multi-horizon
    Try it

    1d / 7d / 30d horizons with per-horizon SHAP + monotonicity consistency check.

    Example
    https://api.voidly.ai/v1/forecast/IR/multi-horizon
    Response shape
    • horizons[]: { horizon_days, risk, interval_90, top_features }
    • consistency: { monotonic }
    Curl
    curl 'https://api.voidly.ai/v1/forecast/IR/multi-horizon'
  • GET/v1/forecast/multi-horizon/info
    Try it

    Multi-horizon model metadata — LOCO AUC per horizon, training samples, calibration.

    Example
    https://api.voidly.ai/v1/forecast/multi-horizon/info
    Response shape
    • horizons: { "1d", "7d", "30d" }
    • loco_auc, brier, calibration_slope
    Curl
    curl 'https://api.voidly.ai/v1/forecast/multi-horizon/info'
  • GET/v1/forecast/asn-gnn/{asn}
    Try it

    GraphSAGE-2 GNN risk score over CAIDA AS-AS peering topology (May 2026 serial-2).

    Example
    https://api.voidly.ai/v1/forecast/asn-gnn/AS47541
    Response shape
    • asn, risk_score, honest_caveats[]
    • k-hop neighbors
    Curl
    curl 'https://api.voidly.ai/v1/forecast/asn-gnn/AS47541'

Anomaly

  • GET/v1/anomaly/dbscan/{cc}
    Try it

    CenDTect-style DBSCAN per-country rolling 45-day anomaly. Second-opinion signal.

    Example
    https://api.voidly.ai/v1/anomaly/dbscan/IR
    Response shape
    • anomalies[]: { date, score, dbscan_label, features }
    • auc_vs_labels
    Curl
    curl 'https://api.voidly.ai/v1/anomaly/dbscan/IR'
  • GET/v1/anomaly/dbscan/leaderboard
    Try it

    Countries ranked by most-recent DBSCAN anomaly score.

    Example
    https://api.voidly.ai/v1/anomaly/dbscan/leaderboard
    Response shape
    • leaderboard[]: { country, score, last_anomaly_date }
    Curl
    curl 'https://api.voidly.ai/v1/anomaly/dbscan/leaderboard'
  • GET/v1/anomaly/domain-drift/leaderboard
    Try it

    Per-domain HDBSCAN drift — week-over-week novel blocking patterns.

    Example
    https://api.voidly.ai/v1/anomaly/domain-drift/leaderboard
    Response shape
    • leaderboard[]: { domain, drift_score, novel_methods }
    Curl
    curl 'https://api.voidly.ai/v1/anomaly/domain-drift/leaderboard'

Sentinel

  • GET/v1/sentinel/accuracy
    Try it

    Rolling 30-day Sentinel accuracy: precision, recall, Brier, calibration, per-country CM.

    Example
    https://api.voidly.ai/v1/sentinel/accuracy
    Response shape
    • precision, recall, brier_score
    • per_country: object
    • pairs_evaluated: number
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/accuracy'
  • GET/v1/sentinel/calibration
    Try it

    90-day rolling empirical-coverage vs nominal 90% conformal interval.

    Example
    https://api.voidly.ai/v1/sentinel/calibration
    Response shape
    • series[]: { date, empirical_coverage, nominal, n }
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/calibration'
  • GET/v1/sentinel/current_risk/{cc}
    Try it

    Trust-wrapped current-day risk for a country with conformal bounds + similar incidents.

    Example
    https://api.voidly.ai/v1/sentinel/current_risk/IR
    Response shape
    • risk, interval_90, top_features, similar_incidents[]
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/current_risk/IR'
  • GET/v1/sentinel/global_heatmap
    Try it

    Single-call global risk heatmap — every watched country sorted by risk.

    Example
    https://api.voidly.ai/v1/sentinel/global_heatmap?min_risk=0
    Response shape
    • countries[]: { country, risk, interval_90 }
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/global_heatmap?min_risk=0'
  • GET/v1/sentinel/movers
    Try it

    Biggest forecast deltas vs N days ago — find rising-risk countries.

    Example
    https://api.voidly.ai/v1/sentinel/movers?days=7&limit=20
    Response shape
    • movers[]: { country, delta, risk_now, risk_then }
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/movers?days=7&limit=20'
  • GET/v1/sentinel/stealth-blackouts
    Try it

    Stealth-blackout detector (Aryapour 2025 pattern) — partial-outage signature flags.

    Example
    https://api.voidly.ai/v1/sentinel/stealth-blackouts
    Response shape
    • detections[]: { country, date, signature_score }
    Curl
    curl 'https://api.voidly.ai/v1/sentinel/stealth-blackouts'

Data

  • GET/data/incidents
    Try it

    List citable incidents. Filter by country, severity, sources, time.

    Example
    https://api.voidly.ai/data/incidents?country=IR&limit=10
    Response shape
    • incidents[]: { id, readableId, country, title, severity, sources, evidenceCount }
    Curl
    curl 'https://api.voidly.ai/data/incidents?country=IR&limit=10'
  • GET/data/incidents/{id}
    Try it

    Single citable incident with evidence permalinks. Accepts hash ID or readable ID.

    Example
    https://api.voidly.ai/data/incidents/IR-2026-0142
    Response shape
    • id, readableId, country, title, severity, evidence[]
    Curl
    curl 'https://api.voidly.ai/data/incidents/IR-2026-0142'
  • GET/data/incidents/stats
    Try it

    Headline corpus stats — totals, by_severity, by_type, top_countries, growth.

    Example
    https://api.voidly.ai/data/incidents/stats
    Response shape
    • total, total_evidence, by_severity, by_type, top_countries, growth
    Curl
    curl 'https://api.voidly.ai/data/incidents/stats'
  • GET/data/incidents/export
    Try it

    Bulk export incidents in CSV / JSONL / JSON for offline analysis.

    Example
    https://api.voidly.ai/data/incidents/export?format=csv&country=IR
    Response shape
    • (streamed file — content type depends on ?format=)
    Curl
    curl 'https://api.voidly.ai/data/incidents/export?format=csv&country=IR'
  • GET/data/incidents/feed.rss
    Try it

    RSS feed of recent incidents — drop into any reader for live updates.

    Example
    https://api.voidly.ai/data/incidents/feed.rss
    Response shape
    • (XML — RSS 2.0)
    Curl
    curl 'https://api.voidly.ai/data/incidents/feed.rss'

Probe

  • GET/v1/probe/stats
    Try it

    Voidly probe-network stats — nodes online, countries, last-seen, test pass-rates.

    Example
    https://api.voidly.ai/v1/probe/stats
    Response shape
    • nodes_online, countries, last_run_at, tests_per_5min
    Curl
    curl 'https://api.voidly.ai/v1/probe/stats'
  • GET/v1/probe/network
    Try it

    Full probe-node directory — operator, country, ASN, public/private flags.

    Example
    https://api.voidly.ai/v1/probe/network
    Response shape
    • nodes[]: { id, country, asn, operator, last_seen }
    Curl
    curl 'https://api.voidly.ai/v1/probe/network'

ISP

  • GET/v1/isp/index
    Try it

    ISPs ranked by composite censorship score within one country.

    Example
    https://api.voidly.ai/v1/isp/index?country=IR
    Response shape
    • isps[]: { asn, name, score, methods, evidence_count }
    Curl
    curl 'https://api.voidly.ai/v1/isp/index?country=IR'
  • GET/v1/isp/worst
    Try it

    Global worst ISPs ranked across all countries.

    Example
    https://api.voidly.ai/v1/isp/worst?limit=20
    Response shape
    • isps[]: { asn, name, country, score }
    Curl
    curl 'https://api.voidly.ai/v1/isp/worst?limit=20'

More

  • Auth-gated endpoints (alerts, agent send, write actions) live in the full reference.
  • Want a Postman-shaped collection? See /api-docs for the OpenAPI export.
  • All responses are CC BY 4.0. Cite as Voidly Atlas, accessed 2026-05-22.