What changes
- Polymarket markets carry Polymarket’s own metadata. Every listed market now has its Polymarket event and series, plus strikes, teams, scores, fees and oracle settings, as published on polymarket.com.
- One naming standard across venues. Polymarket uses the same identifier columns as Kalshi and Hyperliquid HIP-4:
market_id,event_idandoutcome_id. - New tables, side by side. Each v2 table has the name of its v1 table plus
_v2, for examplepolymarket_polygon.market_trades_v2. Both versions carry full history. The v1 tables stay available until their removal date, shown at the top of this page. - Breaking for Polymarket queries. Several Polymarket columns are renamed and
event_idchanges value, so v1 queries fail or return different results on v2.
contract_version column (v1, v2, v3) reports in both table versions.Migrate in three steps
Point your queries at the _v2 tables
_v2 to every table name in the table map below. Tables without a v2 keep their names.Rename the Polymarket identifier columns
condition_id and combo_condition_id with market_id, and token_id, asset_id and position_id with outcome_id. The values do not change. Identifiers has the details and common renames covers the other columns.Check event_id and removed columns
event_id now holds Polymarket’s event id instead of the neg-risk group id; use neg_risk_market_id where you relied on the old value. Then open each table you use under table by table for removed columns and their replacements.Identifiers
Some Polymarket questions are split into several markets of which exactly one resolves Yes, such as one market per candidate in an election. Polymarket calls these neg-risk markets. In v1,event_id held the id of that group of markets; in v2 it holds Polymarket’s event id.
market_id and stay in every table, but the columns that come from Polymarket’s website, such as event and series, are NULL.
Renamed columns keep their v1 types. market_id is therefore VARBINARY in market_trades_v2, market_actions_v2, market_prices_hourly_v2 and the combo tables, and a 0x… VARCHAR in market_details_v2, ohlcv_hourly_v2, open_interest_hourly_v2, positions_v2 and the cross-venue tables. Join across the two with CAST(market_id AS VARCHAR) on the VARBINARY side, or join on outcome_id, which is UINT256 everywhere.
Common renames
These renames apply in every Polymarket table that has the column.Table map
kalshi.market_trades, kalshi.open_interest_hourly, hip4_hyperliquid.open_interest_hourly, hip4_hyperliquid.positions_daily and polymarket_polygon.combo_prices_hourly, keep their names.
Table by table
Open a table to see every column that changes. Columns not listed are unchanged.polymarket_polygon.market_details_v2 (breaking)
polymarket_polygon.market_details_v2 (breaking)
polymarket_polygon.market_trades_v2 (breaking)
polymarket_polygon.market_trades_v2 (breaking)
market_details_v2 holds the current ones.polymarket_polygon.market_actions_v2 (breaking)
polymarket_polygon.market_actions_v2 (breaking)
polymarket_polygon.market_prices_hourly_v2 (breaking)
polymarket_polygon.market_prices_hourly_v2 (breaking)
polymarket_polygon.ohlcv_hourly_v2 (breaking)
polymarket_polygon.ohlcv_hourly_v2 (breaking)
polymarket_polygon.positions_v2 (breaking)
polymarket_polygon.positions_v2 (breaking)
polymarket_polygon.open_interest_hourly_v2 (values change)
polymarket_polygon.open_interest_hourly_v2 (values change)
polymarket_polygon.combo_details_v2 (breaking)
polymarket_polygon.combo_details_v2 (breaking)
polymarket_polygon.combo_trades_v2 (breaking)
polymarket_polygon.combo_trades_v2 (breaking)
polymarket_polygon.combo_actions_v2 (breaking)
polymarket_polygon.combo_actions_v2 (breaking)
polymarket_polygon.users_address_lookup_v2 (values change)
polymarket_polygon.users_address_lookup_v2 (values change)
prediction_markets.markets_v2 (breaking)
prediction_markets.markets_v2 (breaking)
strike_type values, and floor_strike and cap_strike mean the same on both, with three differences:- On price brackets, Kalshi sets
cap_strikeone tick below the next bracket (75,299.99); Polymarket uses the next bracket’s floor (1.80) and gives a price exactly on it to the higher bracket. Whole-number brackets include both ends on both venues. - For “X or above”, Kalshi uses
greaterwithfloor_strikeone tick below X; Polymarket usesgreater_or_equalwith X. Both mean the Yes side wins at X. - Markets that resolve when the price touches a level (Polymarket’s reach and dip ladders, Kalshi’s max and min series) carry the same strike types as markets that settle at the close. The question says which kind it is.
prediction_markets.trades_v2 (values change)
prediction_markets.trades_v2 (values change)
prediction_markets.ohlcv_hourly_v2 (values change)
prediction_markets.ohlcv_hourly_v2 (values change)
prediction_markets.open_interest_hourly_v2 (values change)
prediction_markets.open_interest_hourly_v2 (values change)
kalshi.market_details_v2 (breaking)
kalshi.market_details_v2 (breaking)
kalshi.ohlcv_hourly_v2 (breaking)
kalshi.ohlcv_hourly_v2 (breaking)
hip4_hyperliquid.market_details_v2 (breaking)
hip4_hyperliquid.market_details_v2 (breaking)
hip4_hyperliquid.market_trades_v2 (same columns)
hip4_hyperliquid.market_trades_v2 (same columns)
trade_id. Rows are unique on (block_month, trade_id, is_taker).hip4_hyperliquid.ohlcv_hourly_v2 (breaking)
hip4_hyperliquid.ohlcv_hourly_v2 (breaking)