API changelog

Every change to the Polywhaler API a client can notice, newest first.

How changes are announced#

  • New endpoints, fields and parameters are added without notice: write clients that ignore fields they do not know.
  • A change in meaning or default that could break a client is changed, and Quant accounts calling the affected route are emailed first.
  • A version is retired six months after its deprecation, announced here and in the Deprecation and Sunset headers on its responses. v1 stops answering on April 16, 2027. See Migrating from v1.

October 16, 2026#

addedv2

Crypto price-prediction markets

Polymarket's open crypto price markets by event, as the /crypto dashboard lists them: up-or-down rounds from 5 minutes to 4 hours, daily to yearly above/below and price-range ladders, and hit-price targets, with every open market's outcome prices as 0..1 probabilities and its strikes in strikeLowUsd / strikeHighUsd. Filter by asset (id or symbol), window, type and q, sort by volume or endsAt, and page with the cursor. meta.assets lists the catalogue's assets; meta.stale marks the last good copy, served while Polymarket does not answer (503 temporarily_unavailable before any copy exists).

  • GET /v2/crypto/markets
changedv2

Bitcoin forecast model btc-forecast/1.1.0

Runs carrying modelVersion btc-forecast/1.1.0 use a revised fit that puts markets expiring on different days within a horizon on a common time scale, and markets priced as near-certain either way are left out of the fit, so they no longer appear in the forecast's markets. A market's spread is now measured against the cheaper side of the book, so it reads the same whichever outcome is Yes, and the platform prior is recalibrated. These runs carry the insight type lean (the featured horizon's implied chance that Bitcoin ends above spot) in place of skew, which only appears in runs stored before 1.1.0; delta now compares with the run about 24 hours earlier. Segment backtests by modelVersion. The full specification and version history are in the Developer portal for Quant subscribers: polywhaler.com/developer/methodology#bitcoin-forecast.

  • GET /v2/forecasts/btc
  • GET /v2/forecasts/btc/history
  • GET /v2/forecasts/btc/markets
changedv1

v1 Bitcoin forecast runs from model btc-forecast/1.1.0

/v1/btc-forecast serves the same runs as v2, so new runs carry modelVersion btc-forecast/1.1.0 and the insight type lean (the featured horizon's implied chance that Bitcoin ends above spot) in place of skew; runs stored before 1.1.0 keep skew. Near-certain markets no longer appear in /v1/btc-forecast/markets, and spreadPct is measured against the cheaper side of the book. delta now compares with the run about 24 hours earlier rather than the previous hourly run. The v1 btc_forecast.updated webhook carries the same model version and insight types, so its payloads switch to lean too. A client or webhook consumer that switches on the insight type should accept both. The response shape is unchanged.

  • GET /v1/btc-forecast
  • GET /v1/btc-forecast/history
  • GET /v1/btc-forecast/markets
addedv2

Polywhaler API v2

One envelope ({data, meta, pagination}) and one error shape with a request id on every response; camelCase parameters, strictly validated; opaque cursor pagination that never skips trades sharing a second; rates as 0..1 fractions, money in *Usd and times as ISO-8601; RateLimit headers on every response, an exact daily quota shared with v1, ETags and 304s; key scopes; Idempotency-Key on creating POSTs; smart-money leaderboard, cohort trades and flow with the methodology version in meta; a public OpenAPI 3.1 document. v1 is frozen and will be retired six months after this date.

Earlier v1 changes#

September 25, 2026#

  • /v1/wallets/{addr}/positions: closed positions gain costUsd, what the position cost in dollars. totalBought is now shares on every row, as Polymarket reports it; positions reclassified from resolved-but-unclaimed used to report dollars there.
  • summary.avgRoiPercent on the same endpoint is now realized P&L over dollars invested. It was computed over shares, which read low by roughly the average entry price, so expect it to be around 1.8x higher for a typical wallet.
  • Categories: new trades on weather markets now arrive as science, and single-game markets that carry no tags ("Will Chelsea FC win on…", spreads, draws) as sports instead of other, so a /v1/trades query with sports=exclude now leaves them out. Trades already stored keep their category.