- TypeScript
- Python
0.2.0
- Added
client.waitForOrderFillSettlement(order), which waits until every fill in an order response reaches a terminal settlement outcome and returns the settlement transaction hashes. Matched order responses are no longer guaranteed to includetransactionsHashes; use this method to obtain hashes reliably. ClobTrade.statusis now typed with the sharedTradeStatusenum instead of a plain string.- Added Collateral Return support:
planCollateralReturnreturns an inspectable plan andexecuteCollateralReturnPlansigns and submits it for Deposit Wallet, Safe, and Proxy accounts, returning a transaction handle. - Added
isolatedOnlytoPerpsInstrument, indicating whether the instrument supports only isolated margin. - Added volume-based fee tiers to the Perps fee schedule: each
PerpsFeeScheduleEntrycarries atiersarray ofPerpsFeeTiervalues, including negative maker rebate rates. - Perps withdrawal statuses are now forward-compatible: known statuses are enumerated in
PerpsKnownWithdrawalStatus, which addsfailed, and statuses introduced after a release flow through as plain strings instead of failing the response parse. - Deprecated the
PerpsWithdrawalStatusvalue alias; migrate enum member access:
- Fixed offset-paginated list methods silently stopping after the first page when
pageSizereached the server’s limit cap.pageSizeis now validated per endpoint and values above the cap are rejected withUserInputError. A full page reportshasMore: true; when a collection ends exactly on a page boundary, the final page is empty. - Limit and protected market order prices must be a multiple of the market tick size. Off-grid prices (for example
0.007on a0.005tick market) are now rejected client-side instead of by the exchange after signing.
0.1.0
- Graduated the SDK to the stable 0.x release line, marked Perps APIs as experimental, and removed deprecated compatibility APIs.
- Added Perps support for reduce-only orders, account stats, cancel-all, TP/SL metadata and placement, batched fill and trade frames, and stricter order request validation.
- Added
conditionIdaliases to CLOB order book, open order, trade, and builder trade models while keepingmarketavailable as a deprecated alias. - Typed CLOB cancellation results with branded
OrderIdvalues forcanceledandnotCanceledkeys.
0.1.0-beta.18
setupTradingApprovalsandprepareTradingApprovalsno longer request approvals for the retired CLOB v1 Neg Risk Adapter.- Streams drop unknown or unreadable WebSocket frames instead of closing the connection. RFQ quoter sessions no longer fail with
TransportErroron an unrecognized frame; a caller waiting on an unreadable acknowledgement fails through its acknowledgement timeout instead. - Removed
RfqKnownInboundMessageSchemafrom@polymarket/bindings; each RFQ inbound message schema declares its own object shape directly.
0.1.0-beta.17
- RFQ quoter sessions now keep running when the server introduces new error codes.
RfqErrorCodeis an open type: known codes are enumerated inRfqKnownErrorCode, and unrecognized codes flow through rejection errors as plain strings. - Deprecated the
RfqErrorCodevalue alias; migrate enum member access:
- Added
ConnectionLostErrorcarrying the WebSocket closecodeandreason. Losing an RFQ session connection now rejects in-flight operations and fails the session iterator with it, instead of ending the event loop silently. Closing the session still ends iteration cleanly. - Streamed market and user events normalize empty-string optional decimal fields (for example a trade’s
feeRateBpsor a price change’sbestBidandbestAsk) tonull. - Batch price reads (
fetchPrices,fetchMidpoints,fetchSpreads) returnTokenId-keyed records of branded decimal strings. - Perps sessions handle fills and trades frames that batch multiple entries.
0.1.0-beta.16
- Added
RESOLVED_PARTIALtoComboPositionStatusso Combo positions that resolve at a fractional payout (for example a voided leg) parse correctly instead of failing validation.
0.1.0-beta.15
- Combo activity now parses the canonical
typefield returned by the Data API, instead of deriving lifecycle actions from legacy fields.
0.1.0-beta.14
- Added SDK pagination for Combo lifecycle activity and server-cursor pagination for Combo positions.
- Added Combo position sync request fields and exposed
outcomeandredeemableon Combo positions. - Branded Combo activity row IDs.
- Breaking beta change: Combo activity and position fields now use
wallet,amount, andpayout; Combo activity rows no longer exposemoduleKind.
0.1.0-beta.13
- Added
listMarketClarificationsfor reading market clarification text with SDK-owned pagination and market, event, state, question, and transaction filters. - Fixed legacy Proxy wallet gasless execution and added live Safe and Proxy wallet coverage.
- Resolve closed markets when preparing market position redemptions.
- Gasless transaction handles now wait for relayer transactions to reach confirmed state before resolving.
0.1.0-beta.12
- Require GTD limit order expirations to be at least 3 minutes in the future.
0.1.0-beta.11
- Support CLOB order tick sizes
0.005and0.0025. - Pagination request cursors now infer the branded pagination cursor type.
0.1.0-beta.10
- Preserve already-deployed legacy UUPS Deposit Wallets when
createSecureClientresolves the default wallet, while new Deposit Wallet deployments use the beacon factory path.
0.1.0-beta.9
- Added
PriceHistoryIntervalandSearchSortexports, preservedgroupItemTitleon normalized markets, and publishedexpectPrivateKeyfrom@polymarket/types.
0.1.0-beta.8
- RFQ quoter sessions now emit typed
tradeevents for confirmed Combos fills. - RFQ rejection errors now expose
errorIdvalues and parseINVALID_SIGNATUREandINTERNAL_ERRORcodes.
0.1.0-beta.7
- Added
parentEventIdtoEventso child events can link back to their parent event. - Added
maxPriceandminPriceprotection fields to market order requests. - Handle legacy multi-outcome markets more safely:
listMarketsskips markets that cannot be represented by the binary market model, andfetchMarketreturns a typed SDK error for unsupported markets. - Normalize empty-string order and activity fields to SDK values: decimal amounts become
"0", missing maker order fee rates becomenull, and missing trade or position market icons becomenull. - Parse Combo trade activity rows with an
isCombodiscriminated union. - Support new Combos RFQ websocket error codes for balance, allowance, and pre-execution reservation failures.
- Broad user websocket subscriptions now omit market filters so all-market streams receive trade events.
- Retry rejected JSON-RPC
eth_callbatches by splitting them into smaller batches.
0.1.0-beta.6
- Point Combos RFQ endpoints at the production domains:
combos-rfq-api.polymarket.com(REST) andcombos-rfq-gateway-quoter.polymarket.com(quoter WebSocket).
0.1.0-beta.5
- Added
listComboMarketsfor fetching the Combo market catalog with typed bindings and SDK-owned pagination. See Combos. - Parse RFQ quote rejections that use the
SUBMISSION_WINDOW_CLOSEDgateway error code.
0.1.0-beta.4
- Added Combos support for multi-leg RFQ positions. See Combos.
- Reject whitespace-only search queries and trim leading or trailing search input.
ConditionIdis now deprecated in favor ofCtfConditionId; existingConditionIdexports remain available as deprecated aliases.
0.1.0-beta.3
Secure client setup now defaults to the Deposit Wallet flowcreateSecureClient can now derive and use the signer’s deterministic Deposit
Wallet when you omit wallet. If you already know which Polymarket wallet you
want to use, keep passing wallet.setupTradingApprovals() now waits internallyYou no longer need to wait on the returned handle. Call the method once before
trading; it is safe to call again if approvals are already set.isGaslessReady() or setupGaslessWallet() in the
normal setup path. Create the secure client, then set up trading approvals.