VolRoc Public API

Free, read-only JSON endpoints for the prediction-market universe across Kalshi and Polymarket — the same data the Observatory pages render. No key, no auth.
Base URL https://volroc.ai Method GET Format application/json CORS * (open)

Endpoints

GET/api/public/observatory

The whole-ecosystem live measurement bundle: active markets, venue split, open interest, domain (category) composition, probability distribution, and 24-hour activity. This is the current diurnal value — it breathes with the latest capture hour. Use the archive endpoints for fixed, comparable daily values.

Updatesproducer refreshes ~every 15 minutes; edge-cached ~30 seconds
Stampedas_of carries the artifact timestamp
curl https://volroc.ai/api/public/observatory
{
  "active_markets": 49813,
  "structure": {
    "venue_distribution": [
      { "venue": "kalshi", "count": 41421 },
      { "venue": "polymarket", "count": 8392 }
    ],
    "open_interest": {
      "total": 1394324489.62,
      "by_venue": { "kalshi": 748101638.72, "polymarket": 646222850.90 },
      "unit_note": "Kalshi open interest + Polymarket USD liquidity"
    },
    "categories": [ { "name": "Sports", "count": 22957, "open_interest": 603383196.75 }, … ]
  },
  "price_distribution": { "scale": "0-1", "n": 49813, "buckets": [ … ] },
  "activity": {
    "markets_traded_24h": 13648,
    "volume_by_venue": [
      { "venue": "kalshi", "unit": "contracts", "volume_24h": 102776497 },
      { "venue": "polymarket", "unit": "usd", "volume_24h": 77835888.85 }
    ]
  },
  "as_of": "2026-06-04T14:33:02Z"
}

GET/api/public/archive

Index of every frozen daily snapshot — one row per day with headline figures. Powers the archive list and the historical-series charts.

Updatesa new row each day after the 00:05 UTC freeze; edge-cached ~5 minutes
curl https://volroc.ai/api/public/archive
{
  "count": 1,
  "days": [
    {
      "date": "2026-06-04",
      "active_markets": 49813,
      "open_interest_total": 1394324489.62,
      "venue_distribution": [ { "venue": "kalshi", "count": 41421 }, … ],
      "categories": [ { "name": "Sports", "count": 22957, "open_interest": 603383196.75 }, … ]
    }
  ]
}

GET/api/public/archive/YYYY-MM-DD

One frozen daily snapshot — the full observatory bundle for that date, plus its freeze provenance. Records are immutable once frozen, so they cache long. Strict YYYY-MM-DD only; 404 if that day was never frozen.

Updatesnever (immutable); edge-cached ~24 hours
Errors400 bad date · 404 not frozen
curl https://volroc.ai/api/public/archive/2026-06-04
{
  "active_markets": 49813,
  "structure": { "venue_distribution": [ … ], "open_interest": { … }, "categories": [ … ] },
  "price_distribution": { "scale": "0-1", "n": 49813, "buckets": [ … ] },
  "archive": {
    "canonical_date": "2026-06-04",
    "canonical_hour_utc": "00:00",
    "frozen_at_utc": "2026-06-04T14:48:10Z"
  },
  "market_state": { "markets_tracked": 32348, … }
}

GET/api/public/world-cup

The 2026 World Cup observatory bundle: what prediction markets are pricing around the tournament across both venues — counts, open interest, category breakdown, probability distribution, and the largest markets per venue. Observational only.

Updatesproducer refreshes ~every 15 minutes; edge-cached ~60 seconds
UnitsKalshi ranked by open interest (contracts); Polymarket by 24h volume (USD) — never summed
curl https://volroc.ai/api/public/world-cup
{
  "event": { "name": "2026 FIFA World Cup", "starts": "2026-06-11",
             "ends": "2026-07-19", "hosts": "United States, Canada & Mexico",
             "teams": 48, "matches": 104 },
  "overview": { "active_markets": 1263,
                "by_venue": [ { "venue": "kalshi", "count": 1111 },
                              { "venue": "polymarket", "count": 152 } ] },
  "categories": [ { "key": "advancement", "label": "Team Advancement",
                    "count": 355, "kalshi_oi_contracts": 1458535.56 }, … ],
  "largest": {
    "kalshi": [ { "label": "Will the Portugal win the 2026 Men's World Cup?",
                  "size": 4328249.84, "size_field": "open_interest_contracts" }, … ],
    "polymarket": [ { "label": "Will Brazil win the 2026 FIFA World Cup?",
                      "size": 1956913.94, "size_field": "volume_24h_usd" }, … ]
  }
}

GET/api/public/health

Liveness and freshness of the underlying data artifact. Always returns 200; ok is false when no artifact is currently reachable.

Updatesreflects the latest published bundle
curl https://volroc.ai/api/public/health
{
  "ok": true,
  "generated_at": "2026-06-04T14:33:02Z",
  "source_freshness": { "artifact": "fresh" },
  "warmup": {}
}

Units & conventions

Venues are never blended. Kalshi open interest and volume are in contracts; Polymarket open interest is USD liquidity and volume is USD. Figures from different venues are reported per venue, each labelled with its unit, and are never summed. Where a single open-interest total is shown, it combines Kalshi open interest with Polymarket USD liquidity as comparable USD magnitudes — not an identical instrument.

Probabilities are on a 0–1 scale (yes-price), both venues. Domains are a venue-agnostic subject taxonomy classified from Kalshi series prefixes and Polymarket title keywords, with a residual Other bucket reported honestly.

Live vs. canonical hour

/observatory is the live, diurnal value — it changes through the day with the latest capture hour. The archive endpoints return the canonical value frozen at 00:00 UTC each day, which is what makes days comparable to one another. If you are building a time series, use /archive and /archive/<date>, not repeated reads of /observatory.

Attribution & citation

The data is free to use. Please attribute it as “VolRoc Observatory, volroc.ai” and cite the specific endpoint or dated record where relevant — e.g. “VolRoc Prediction Market Archive — 2026-06-04, volroc.ai/prediction-markets/2026-06-04/”.

Source markets are collected from the public Kalshi and Polymarket APIs. VolRoc is an independent observatory; it is not affiliated with either venue, and it is not a sportsbook, broker, or exchange. Figures are observational and approximate.

Stay in the loop

We post a short daily read on the prediction-market universe, and we'll note material API changes there. Leave an email, or just reach the project at volroc.ai.

About VolRoc Methodology API Archive World Cup Read-only · no key required · GET only.