Subscribe to all Changes:
- Add to any RSS reader using the URL:
https://docs.polymarket.us/changelog/rss.xml - Slack has a built-in reader: use
/feed subscribe https://docs.polymarket.us/changelog/rss.xml
- World Cup futures liquidity rewards increased (effective 12:00am ET, Friday June 12):
- Tournament Winner Futures: $1,500/day → $5,000/day.
- Group Winners & Golden Boot Futures: $750/day → $1,500/day.
- Exotic Futures: $500/day → $1,000/day.
- Discount factors and target sizes unchanged.
- Soccer spread/total markets now use the
spreads/totalsoutcome_typefor every period. Previously, soccer first-half, second-half, and team-total markets were listed withoutcome_type = "props". They now use the same structuraloutcome_typeas full-game spreads/totals, matching basketball and baseball period markets. The period is encoded bymarket_sport_type.- Spread →
outcome_type = "spreads":soccer_team_first_half_spread,soccer_team_second_half_spread. - Total →
outcome_type = "totals":soccer_team_first_half_total,soccer_team_second_half_total,soccer_team_total_goals,soccer_team_total_goals_first_half.
- Spread →
- Action recommended: identify market structure from
outcome_typeand the period frommarket_sport_type. Do not assume soccer period spread/total markets areprops. See Sports Schema. - Where to read it: Retail —
sportsMarketTypefromGET /v1/market/slug/{slug}; Institutional —outcome_typeandmarket_sport_typefromSearchInstruments/GetInstrument.
- World Cup liquidity rewards increased (effective 2:00pm ET, Thursday June 11): Total per game raised from $30,000 → $50,000.
- Moneyline/spreads/totals: $20,000 → $35,000 (Moneyline $26,250, Spreads $4,375, Totals $4,375).
- Player Props: $5,000 → $7,500 ($3,750 Pre-game + $3,750 Live).
- Team Props: $5,000 → $7,500 ($3,750 Pre-game + $3,750 Live).
- Discount factors and target sizes unchanged.
- Maintenance window — Thursday, June 11, 3:00am–5:00am EST. Please note the time change, as this is different than our normal hours. This is a one-off time change.
We heard feedback from some of our users that they needed more time to fully migrate to partial contracts, so we pushed back full rollout. All newly listed instruments will become partial-contract markets on Thursday, June 11, 2026 at 5:00 PM ET (21:00 UTC). Long-dated futures markets listed before then and all World Cup instruments are partial-contract markets, so all market makers and API users should support partial-contract instruments now.
- NHL hockey market types are live. The following enums are added to
market_sport_type(RetailsportsMarketType):- Game:
hockey_game_overtime(will the game go to overtime?)hockey_game_double_overtime(will the game go to double overtime?)
- Player props:
hockey_player_goalshockey_player_assistshockey_player_points
- Game:
- Where to read it: Retail —
sportsMarketTypefromGET /v1/market/slug/{slug}; Institutional —market_sport_typefromSearchInstruments/GetInstrument.
- UFC market types are live. The following enums are added to
market_sport_type(RetailsportsMarketType):ufc_method_of_victoryufc_go_the_distanceufc_round_of_victoryufc_round_of_finishufc_method_of_finish
- Where to read it: Retail —
sportsMarketTypefromGET /v1/market/slug/{slug}; Institutional —market_sport_typefromSearchInstruments/GetInstrument.
- Soccer market types are live. The following enums are added to
market_sport_type(RetailsportsMarketType):- Team — full game:
soccer_team_full_time_winnersoccer_team_full_game_spreadsoccer_team_full_game_total
- Team — first half:
soccer_team_first_half_winnersoccer_team_first_half_spreadsoccer_team_first_half_total
- Game props:
soccer_game_btts(both teams to score)soccer_game_first_team_to_scoresoccer_game_exact_scoresoccer_game_total_corners
- Player props:
soccer_player_goalssoccer_player_assists
- Team — full game:
- Where to read it: Retail —
sportsMarketTypefromGET /v1/market/slug/{slug}; Institutional —market_sport_typefromSearchInstruments/GetInstrument.
- NBA Playoffs props expansion (effective 1:00pm ET, Friday June 5): Props pool increased from $10,000 → $20,000 per game. Categories reorganized:
- Player Props: $10,000/game ($5,000 Day-of + $5,000 Live).
- Game Props (new): $5,000/game ($2,500 Day-of + $2,500 Live).
- Other Props (new): $5,000/game ($2,500 Day-of + $2,500 Live).
- Team Props removed.
- NBA Playoffs Moneyline reduction (Live): $56,500 → $50,000 per game.
- NBA Playoffs total liquidity per game: $100,000 → $103,500 ($83,500 moneyline/spreads/totals + $20,000 props).
- NBA Pool row updated: Early $4,000 / Day-of $14,000 / Live $85,500.
- Props discount factor and target size are consistent across all categories: 0.35 / 2,500 for both Day-of and Live.
- World Cup liquidity rewards: start time pushed to 6:00pm ET, Thursday June 4 (was June 3).
- Starting Monday, June 8, 2026 at 12:00 PM EST, every newly listed instrument will be a partial-contract market. Existing instruments are unchanged. Do not assume whole-contract quantities — derive the partial scale per instrument before submitting orders.
- Institutional API — derive the scale, then convert:
instrument.fractionalQtyScale— divide raw integer quantities by this to get decimal contracts. For example, withfractionalQtyScale == 100,quantity = 1is0.01contracts andquantity = 100is1full contract.instrument.minimumTradeQty— the smallest tradable integer quantity.- Initial partials use
fractionalQtyScale == 100andminimumTradeQty == 1, so the minimum order is 1% of a contract. - On the
Ordermessage,fractional_quantity_scale(field 49) carries the same scale for convertingorder_qty,cum_qty, andleaves_qty.
- Retail API — read the minimum, then handle decimals:
minimumTradeQtyon the market object (for exampleGET /v1/market/slug/{slug}) is expressed in contracts, so0.01means a 1%-of-a-contract minimum.- Treat
quantity,cumQuantity, andleavesQuantityas decimals, and use the decimal portfolio fields (netPositionDecimal,qtyBoughtDecimal, …).
- NBA quarter spread + total markets and game-to-overtime (preprod now, production by midnight EST on June 2, 2026). The following enums are added to
market_sport_type(RetailsportsMarketType):- Spread:
basketball_team_first_quarter_spread,basketball_team_second_quarter_spread,basketball_team_third_quarter_spread,basketball_team_fourth_quarter_spread - Total:
basketball_team_first_quarter_total,basketball_team_second_quarter_total,basketball_team_third_quarter_total,basketball_team_fourth_quarter_total - Game-to-overtime:
basketball_game_overtime
- Spread:
- Resolution: each quarter market settles on points scored in that quarter only; 4th-quarter markets exclude overtime. The game-to-overtime market settles at the conclusion of the game.
- Example slugs (NBA Finals, New York vs. San Antonio,
nba-ny-sa-2026-06-03):- 1st quarter spread:
asc-nba-ny-sa-2026-06-03-q1-neg-2pt5, total:tsc-nba-ny-sa-2026-06-03-q1-56pt5 - 4th quarter spread (excl. OT):
asc-nba-ny-sa-2026-06-03-q4-neg-1pt5, total:tsc-nba-ny-sa-2026-06-03-q4-51pt5 - Game-to-overtime:
astatc-nba-ny-sa-2026-06-03-ot
- 1st quarter spread:
- Where to read it: Retail —
sportsMarketTypefromGET /v1/market/slug/{slug}; Institutional —market_sport_typefromSearchInstruments/GetInstrument.
- NBA second half + new player props (preprod now, production June 2, 2026 at 6:00 PM EST): Basketball second-half team markets and six additional player props are live in preprod and will be deployed to production on June 2, 2026 at 6:00 PM EST. The following enums are added to the instrument
market_sport_typefield (RetailsportsMarketType):- Team — second half:
basketball_team_second_half_winnerbasketball_team_second_half_spreadbasketball_team_second_half_total
- Player props:
basketball_player_reboundsbasketball_player_threesbasketball_player_stealsbasketball_player_blocksbasketball_player_double_doublebasketball_player_triple_double
- Team — second half:
- Example slugs (NBA Finals, New York vs. San Antonio,
nba-ny-sa-2026-06-03):- Team — second half:
- 2H moneyline:
atc-nba-ny-sa-2026-06-03-sh-ny,atc-nba-ny-sa-2026-06-03-sh-sa,atc-nba-ny-sa-2026-06-03-sh-draw - 2H spread:
asc-nba-ny-sa-2026-06-03-sh-neg-10pt5,asc-nba-ny-sa-2026-06-03-sh-pos-1pt5 - 2H total:
tsc-nba-ny-sa-2026-06-03-sh-105pt5
- 2H moneyline:
- Player props (each strike is its own market; player segment is first-3-of-first + first-3-of-last name):
- Rebounds:
astatc-nba-ny-sa-2026-06-03-reb-vicwem-gte11 - Three-pointers made:
astatc-nba-ny-sa-2026-06-03-threes-jalbru-gte3 - Steals:
astatc-nba-ny-sa-2026-06-03-stl-jalbru-gte2 - Blocks:
astatc-nba-ny-sa-2026-06-03-blk-vicwem-gte2 - Double-double:
astatc-nba-ny-sa-2026-06-03-dd-vicwem-gte1 - Triple-double:
astatc-nba-ny-sa-2026-06-03-td-vicwem-gte1
- Rebounds:
- Team — second half:
- Resolution — second half excludes overtime: Second-half team markets (spread, total, moneyline) settle on points scored in the third and fourth quarters only; overtime is not included.
- Resolution — player props: The new counting props (rebounds, three-pointers made, steals, blocks) settle on full-game box-score totals including overtime, consistent with the existing points and assists props. Double-double and triple-double resolve Yes/No — Yes when the player records 10 or more in at least two (double-double) or three (triple-double) of points, rebounds, assists, steals, or blocks.
- Where to read it:
- Retail API — read
sportsMarketTypefrom the market object (for exampleGET /v1/market/slug/{slug}). - Institutional API — read
market_sport_typefrom instrument reference data (SearchInstruments/GetInstrument).
- Retail API — read
- NBA Finals Game 2: New York vs. San Antonio Game 2 of the NBA Finals (
aec-nba-ny-sa-2026-06-05) will be listed on Monday, June 1, 2026 and will be the first market with a 0.5 cent tick size ($0.005). The remainder of NBA Finals markets will also use 0.5 cent ticks. - Retail API: read
market.orderPriceMinTickSizefrom the market response before submitting orders. For this market, useGET /v1/market/slug/aec-nba-ny-sa-2026-06-05and expectorderPriceMinTickSize: 0.005. - Institutional API: read
instrument.tickSizefrom instrument reference data (SearchInstruments/GetInstrument). For this instrument,instrument.tickSize = 0.005. - Institutional price scale: prices submitted to the Institutional API are integer values. Read
instrument.priceScalefrom the same instrument reference data response and divide submitted or returned integer prices by that value to get dollar prices. For example, ifinstrument.priceScale == 1000,price = 5means$0.005,price = 500means$0.50, andprice = 1000means$1.00. With a 0.5 cent tick andpriceScale == 1000, valid integer prices move in 5-unit increments. - Action recommended: do not assume 1 cent ticks. Read tick size and price scale per market or instrument before validating or submitting orders.
- Markets API: market responses now document
minimumTradeQtyalongsideorderPriceMinTickSize.- Applies to
GET /v1/markets,GET /v1/market/id/{id},GET /v1/market/slug/{slug}, and documented Retail API responses that embed the market object, including Events, Search, Sports, Sports Legacy, and Subjects. minimumTradeQtyis expressed in contracts. For example,0.01means the minimum order size is 1% of a contract.orderPriceMinTickSizeis expressed in dollars. For example,0.005means half-cent ticks.
- Applies to
- Market data: order book and trade quantity fields can contain decimal contract quantities.
GET /v1/markets/{slug}/bookand Markets WebSocket book levels returnqtyas a decimal string.- Markets WebSocket trade
quantity.valueis also a decimal string.
- Orders API: order
quantityfields support decimal contract quantities on partial-contract markets.- Applies to
POST /v1/orders,POST /v1/order/preview,POST /v1/order/{orderId}/modify,POST /v1/orders/batched, andPOST /v1/orders/batched/modify. - Order request and response
quantity,cumQuantity, andleavesQuantityfields are JSON numbers and can contain decimals. - Private WebSocket order snapshots and updates use the same order quantity fields; execution
lastSharesis a decimal string. - Multi-leg execution
legPrices[].qtyis a decimal string. - Submit prices and quantities already aligned to the market’s documented precision. Extra precision can be normalized in responses rather than rejected.
- Applies to
- Portfolio API: use decimal quantity fields for positions and trades.
GET /v1/portfolio/positionsreturnsnetPositionDecimal,qtyBoughtDecimal,qtySoldDecimal,bodPositionDecimal, andqtyAvailableDecimal.GET /v1/portfolio/activitiestrade payloads returnqtyDecimal; the older tradeqtyfield is rounded and deprecated.- Private WebSocket position messages can include
netPositionDecimal,qtyBoughtDecimal,qtySoldDecimal,bodPositionDecimal, andqtyAvailableDecimal. - The older integer position fields
netPosition,qtyBought,qtySold,bodPosition, andqtyAvailableremain for backward compatibility but are rounded and deprecated for partial-contract markets.availablePositionsis also deprecated.
- Action recommended: regenerate clients from the updated OpenAPI schemas and read quantity/tick constraints from each market before submitting orders. Do not assume whole-contract quantities or 1-cent price ticks, and do not rely on server-side rejection for extra decimal precision.
- Two additive fields on the
Ordermessage:fractional_quantity_scale(field 49,int64) — the fractional quantity scale copied from the instrument at order creation time. Divide raw integer quantities (order_qty,cum_qty,leaves_qty, etc.) by this value to get the properly scaled decimal quantity.price_to_quantity_filled(field 41,map<int64, int64>) — quantity filled at each price point over the life of the order. The key is the price, the value is the quantity filled at that price.
- Where they appear: every response that returns an
Orderor anExecution(which embedsOrder), across the Institutional Trading and Report APIs and the gRPC order stream:- Trading API:
GET /v1/trading/orders/open(GetOpenOrders) and theCreateOrderSubscriptionstream (snapshot orders andupdate.executions[].order). - Report API:
POST /v1/report/orders/search(SearchOrders),GET /v1/report/orders/{order_id}(GetOrder),POST /v1/report/executions/search(SearchExecutions), andGET /v1/report/executions/{exec_id}(GetExecution).
- Trading API:
- Backward compatible: both fields are additive. Existing clients are unaffected; unset values decode as the proto defaults (
0and an empty map). - Action recommended: rebuild your gRPC clients from the latest proto bundle to pick up the new fields.
- Partial contracts in preprod:
aec-mlb-az-mil-2026-06-15is open in preprod as a dummy partial contract instrument.- Read
instrument.fractionalQtyScaleto determine how submitted integer order quantities are scaled. For example, ifinstrument.fractionalQtyScale == 100, submittingquantity = 1means 0.01 contracts,quantity = 50means 0.50 contracts, andquantity = 100means 1 full contract. - Read
instrument.minimumTradeQtyfor the lowest scaled integer quantity that can be traded. For example, ifinstrument.minimumTradeQty == 1andinstrument.fractionalQtyScale == 100, the minimum valid order quantity is1, which represents 0.01 contracts, or 1% of a contract. - Initial partial contract instruments will have
instrument.fractionalQtyScale == 100andinstrument.minimumTradeQty == 1, meaning the minimum order size is 1% of a contract.
- Read
- Decimalization in preprod: dummy instruments are open in preprod for smaller tick-size handling:
aec-nba-mil-was-2026-06-15has a 0.5c tick size.aec-nhl-edm-ana-2026-06-15has a 0.25c tick size.- Read
instrument.priceScaleto determine how submitted integer order prices are scaled. For example, ifinstrument.priceScale == 1000, submittingprice = 5means $0.005,price = 500means $0.50, andprice = 1000means $1.00. - Read
instrument.tickSizefor the tick size in dollars. For example, a 0.5c tick size is expressed asinstrument.tickSize = 0.005, and a 0.25c tick size is expressed asinstrument.tickSize = 0.0025.
- Action recommended: read these values from the instrument before submitting orders. Do not infer quantity scale, price scale, or tick size from symbol, product category, or market type.
- New ledger endpoints for reconciliation, point-in-time replay, and end-of-day reporting:
- Position ledger (REST):
GET /v1/positions/ledger,GET /v1/positions/ledger/download— paginated query + streamed CSV of position changes (with both deltas and post-change cumulative state). See Position Ledger. - Balance ledger (REST):
GET /v1/funding/balance-ledger,GET /v1/funding/balance-ledger/download— paginated query + streamed CSV of cash balance changes (deposits, withdrawals, fills, fees, corrections). See Balance Ledger. - Balance ledger (gRPC):
CreateBalanceLedgerSubscriptionfor real-time push of balance ledger entries. See Balance Ledger Stream. - All three are scoped under
read:positions. Both ledgers enforce a hard historical floor of2026-05-01T00:00:00Z; pre-floor entries are not retrievable.
- Position ledger (REST):
InstrumentStatsadditions on the market data stream andGetOrderBook/GetBBOresponses:last_trade_qty(field 14,optional int64) — quantity of the most recent trade. Populated after any trade executes on the instrument.settlement_set_time(field 15,optional google.protobuf.Timestamp) — timestamp when the settlement price was set. Populated only when the instrument is in a settled state.
- New
KeepAliveCommandonBiDirectionalStreamMarketDataRequest(fieldkeepalive = 7). Sending one puts a client-to-server frame on the wire without modifying subscription state; the server returns no response. Solves the AWS Application Load Balancer 1-hour idle timeout (RST_STREAM) for long-lived bidirectional subscriptions with no client-to-server traffic. Recommended cadence: every 30–60 minutes (well below the 3600s ALB timeout). Only applies toBiDirectionalStreamMarketData; server-streamingCreateMarketDataSubscriptionis not affected. - Stream limits relaxed: the per-firm cap is now 20 concurrent streams with no per-stream-type restrictions. Previously, some stream types had individual caps; now the 20-stream budget is pooled across all gRPC subscriptions.
- Action recommended: rebuild your gRPC clients from the latest proto bundle to pick up the new endpoints and additive fields above.
- Portfolio Activities API: added two activity types now returned by
GET /v1/portfolio/activities:ACTIVITY_TYPE_TAKER_FEE_REBATE— taker fee rebate credit. Previously surfaced underACTIVITY_TYPE_REFERRAL_BONUS.ACTIVITY_TYPE_LIQUIDITY_PROGRAM— liquidity program payout. Previously surfaced underACTIVITY_TYPE_TRANSFER.
- Both carry an
accountBalanceChangepayload identical in shape to other balance-change activities. - Clients that have not regenerated against the updated OpenAPI schema will decode the new values as unknown enum members. Regenerate to surface the proper label.
- Volume Incentive Program is now live: Program status moved from coming soon to open, with rewards based on share of eligible taker-side notional volume.
- Increase / new reward launch: Added NBA Playoffs Moneyline Volume Rewards with a $100,000 in-game reward pool per market (live May 21, 2026).
- Volume eligibility details: only trades executed between $0.03 and $0.97 count; minimum $500 notional required to qualify for payout.
- Reduction — MLB Futures: reduced from $5,000/day (pooled across instruments) to $1,000/day.
- Reduction — IPL Games: reduced from $40,000/game to $20,000/game; moneyline split updated to $500 / $1,500 / $18,000 (Early / Day-of / Live).
- Reduction — Politics events: reduced from $5,000/day to $1,000/day.
- NBA Props (production): Basketball player props and first half markets are going live in production the morning of May 22, 2026. The
market_sport_typeenums previously released to preprod will be active in production:basketball_player_pointsbasketball_player_assistsbasketball_team_first_half_winnerbasketball_team_first_half_spreadbasketball_team_first_half_total
- Tick size — always read from the instrument, not the contract type: Do not assume that every instrument under a given contract type shares the same minimum price increment. Notably, upcoming World Cup futures are Title Event Contracts (TEC) but will not be decimalized, so they will not share a tick size with existing TEC futures. Pull the tick from the instrument before submitting any order.
- Retail API — read
market.orderPriceMinTickSizefromGET /v1/market/slug/{slug}. - Institutional API — read
instrument.tickSizefrom the instrument reference data response (SearchInstruments/GetInstrument).
- Retail API — read
- Retail API: Removing usernames from trade tape responses
- NBA Props (preprod): Added the following enums to the instrument
market_sport_typefield:basketball_player_pointsbasketball_player_assistsbasketball_team_first_half_winnerbasketball_team_first_half_spreadbasketball_team_first_half_total
- Execution responses: Now exposing commission and trade date fields on all execution-level responses:
commissionNotionalCollected- Commission amount collectedcommissionSpreadPx- Commission spread pricetransactTradeDate- Trade transaction date
- Applies to: SearchExecutions, DownloadExecutions, and CreateOrderSubscription execution updates
- Retail Orders API: documented three batched endpoints:
POST /v1/orders/batched,/v1/orders/batched/cancel,/v1/orders/batched/modify. The first two were already shipped; the third is new. - Retail Orders API: documented
outcomeSide+actionas an alternative tointentonCreateOrderRequest, and added both fields to theOrderresponse.intentis no longer markedrequiredonCreateOrderRequest. Existing requests that sendintentkeep working; regenerated clients will see it flip from required to optional. - Retail Orders API: added enum members that were already on the wire but missing from the schema:
TIME_IN_FORCE_DAY,ORDER_STATE_NEW,EXECUTION_TYPE_NEW,ORD_REJECT_REASON_EXCHANGE_OPTION.
- Corrected production gRPC endpoint from
grpc-api.polymarketexchange.comtogrpc-api.prod.polymarketexchange.com
- Weekly maintenance window moved from Tuesday 4am–6am ET to Thursday 6am–8am ET, effective April 16, 2026
- Updated rate limits across all APIs:
- Institutional Gateway (REST/gRPC): reduced to 100 messages per second per firm
- FIX Protocol: reduced to 150 messages per second per session (all participants)
- Retail API: reduced to 20 requests per second per API key
- FIX API:
Productfield (tag 460) changed from required to optional on New Order Single. All current products on Polymarket areProduct=12(OTHER). - Corrected REST API routes:
/v1/accounts/whoami→/v1/whoami,/v1/accounts/users→/v1/users,/v1/accounts/accounts→/v1/accounts - Fixed price scale examples across documentation to reflect correct values
- Corrected production API base URLs to
api.prod.polymarketexchange.comacross all documentation
- Edited proto files to improve the gRPC streaming experience
statefield changed from required to optional in three messages:MarketDataUpdate.state(field 4) inmarketdatasubscription.protoGetOrderBookResponse.state(field 4) inorderbook.protoGetBBOResponse.state(field 6) inorderbook.proto
- Participants should utilize the instrument state change subscription for state changes
- Updated settlement responses in
marketdatasubscription, addingsettlement_price_calculation_text - Added
price_scaleto order message
- Added Bidirectional Market Data Streaming API:
BiDirectionalStreamMarketDataRPC - Dynamically add and remove symbols during subscription lifetime without reconnecting
- New response types:
SubscriptionAckandSubscriptionErrorfor subscription management - Updated client sample code with new Go and Python examples (Example 20)
- Updated proto packages with bidirectional streaming support
- Added Account Valuation APIs for book-close accounting use cases
POST /v1/valuations/accounts/statement/download: Multi-account summaries as CSV- All new endpoints support historical queries via
as_of_timeoras_of_date - Cross-ISV protection enforced on all valuation endpoints
- Documented configurable instrument queries: pagination, state filtering, and metadata filters
- Added sports league filtering via
metadata.sports_game_league(nfl, nba, mlb, nhl, cbb, cfb) - Added instrument metadata field documentation with sports-specific attributes
- Added Historical Positions API: query positions at any point in time using
as_of_time(RFC3339 timestamp) oras_of_date(trade date) - Use cases: end-of-day reporting, regulatory snapshots, position reconciliation
- Documentation deployment refresh
- Added slow consumer handling option for streaming endpoints with skip-to-head behavior
- Proto files now available for direct download (polymarket-protos.zip)
- Added FAQ clarifying ISV-Participant relationship and participant_id usage
- Added 25 REST API endpoints with full OpenAPI documentation
- New sections: Authentication, Accounts, Orders, Positions, Market Data, Drop Copy
- Organized API documentation by functional category
- Added complete gRPC streaming API documentation with Python code examples for market data and order execution streams
- Introduced Protocol Buffer reference documentation with detailed message structures and field definitions
- Added VPC connection setup guide with AWS PrivateLink configuration instructions
- Created common pitfalls troubleshooting guide for integration issues
- Aesthetic changes including new figures and cleaner formatting of FIX examples.
- First DRAFT of Polymarket Exchange Documentation