API

Every number on this site comes from four JSON files served over HTTPS with open CORS. They are free to use, need no key, and come with no uptime guarantee: this is a best-effort feed, not a service level. Please cache on your side and poll no faster than the data changes.

Endpoints

GET /api/v1/signals.jsonLatest snapshot for every coin and timeframe. Refreshed every tick (see tick_seconds). Cache 10 s.
GET /api/v1/history/{coin}.jsonLast 48 h of current-window readings at 1-minute resolution. Coins: BTC, ETH, SOL, XRP, DOGE, HYPE, BNB. Refreshed every 5 min. Cache 5 min.
GET /api/v1/meta.jsonCoins, timeframes (5m, 15m, 1h, 4h, 1d), thresholds and methodology version.
GET /api/v1/openapi.jsonOpenAPI 3.1 description of the above.

Example

curl -s https://polysignals.net/api/v1/signals.json | jq '.coins.BTC.overall'

curl -s https://polysignals.net/api/v1/history/ETH.json | jq '.timeframes["1h"][-1]'

signals.json, trimmed to one coin and one timeframe:

{
  "version": 1,
  "generated_at": "2026-09-30T12:34:15Z",
  "tick_seconds": 60,
  "coins": {
    "BTC": {
      "spot_usd": 112345.6,
      "overall": { "score": 18, "direction": "neutral" },
      "timeframes": {
        "15m": {
          "current": {
            "prob_up": 0.61,
            "score": 22,
            "direction": "up",
            "confidence": "high",
            "late_window": false,
            "stale": false,
            "spread": 0.01,
            "volume_usd": 18400,
            "window_start": "2026-09-30T12:30:00Z",
            "window_end": "2026-09-30T12:45:00Z",
            "market_url": "https://polymarket.com/event/btc-updown-15m-1790791800"
          },
          "next": null
        }
      }
    }
  }
}

Reading fields

prob_up
Implied probability of Up, 0–1. null when no usable quote.
score
(prob_up − 0.5) × 200, rounded. −100 to +100.
direction
strong_up · up · neutral · down · strong_down.
confidence
high · medium · low, from spread and window volume.
late_window
true when less than 20% of the window remains.
stale
true when the value was carried over from an earlier tick.
spread
Best ask minus best bid for the Up share.
volume_usd
Traded volume in the market, as reported by Polymarket (lags).
window_start / window_end
ISO-8601 UTC. Compute time remaining from window_end.
market_url
The market on polymarket.com.
overall
Per coin: confidence-weighted mean of current scores, or null.
spot_usd
Display-only spot price from Coinbase, or null.

History file

{ coin, generated_at, resolution: "1m", range_hours: 48, timeframes: { "5m": [{ t, prob_up, score }, …], … } }. Minutes with no usable reading are simply absent.

Not financial advice. Not affiliated with Polymarket. The feed can change or stop without notice.