Skip to content

Releases: pmxt-dev/pmxt

v2.44.4

24 May 20:54

Choose a tag to compare

Fixed

  • Docs publishing: Preserve Cross Exchange directly after Events & Markets during release-time Mintlify regeneration instead of appending hosted groups near the bottom.

Installation

npm:

npm install pmxtjs@2.44.4

PyPI:

pip install pmxt==2.44.4

Links

Full Changelog: v2.44.3f...v2.44.4f

v2.44.3

24 May 20:44

Choose a tag to compare

Fixed

  • Cross Exchange docs: Add Python, TypeScript, and curl examples for matched market and event cluster API reference pages.
  • Relation filters: Document valid matched-cluster relation values (identity, subset, superset, overlap, disjoint) and expose the single-relation enum in OpenAPI.

Installation

npm:

npm install pmxtjs@2.44.3

PyPI:

pip install pmxt==2.44.3

Links

Full Changelog: v2.44.2f...v2.44.3f

v2.44.2

24 May 20:02

Choose a tag to compare

Fixed

  • Docs navigation: Move API Reference Cross Exchange directly after Events & Markets so matched-cluster endpoints sit next to catalog discovery.
  • Hosted docs sync: Insert synced Cross Exchange hosted routes after Events & Markets instead of appending them near the bottom of the sidebar.

Installation

npm:

npm install pmxtjs@2.44.2

PyPI:

pip install pmxt==2.44.2

Links

Full Changelog: v2.44.1f...v2.44.2f

v2.44.1

24 May 19:55

Choose a tag to compare

Fixed

  • Docs navigation: Move hosted cross-exchange matching endpoints from the Enterprise sidebar group into the API Reference Cross Exchange group.
  • Hosted docs sync: Preserve the Cross Exchange / Enterprise split when hosted endpoint metadata is synced from hosted-pmxt.

Installation

npm:

npm install pmxtjs@2.44.1

PyPI:

pip install pmxt==2.44.1

Links

Full Changelog: v2.44.0f...v2.44.1f

v2.44.0

24 May 19:42

Choose a tag to compare

Added

  • Router SDKs: Add cluster-first cross-venue matching methods to both TypeScript and Python SDKs: fetchMatchedMarketClusters / fetch_matched_market_clusters and fetchMatchedEventClusters / fetch_matched_event_clusters.
  • Matching docs: Document the new cluster-first market and event matching workflows with query-based and anchor-object examples.

Changed

  • Hosted docs: Promote the cluster-first matching endpoints in the generated docs while hiding the legacy pairwise matching routes from public navigation.
  • SDK responses: Preserve live bestBid / bestAsk fields on converted market outcomes so cluster responses include executable-price context.

Installation

npm:

npm install pmxtjs@2.44.0

PyPI:

pip install pmxt==2.44.0

Links

Full Changelog: v2.43.25f...v2.44.0f

v2.43.25

24 May 18:33

Choose a tag to compare

Added

  • Polymarket: Expose initAuth() / init_auth() in both TypeScript and Python SDKs — previously only available in core. Fixes #505.

Installation

npm:

npm install pmxtjs@2.43.25

PyPI:

pip install pmxt==2.43.25

Links

What's Changed

Full Changelog: v2.43.24f...v2.43.25f

v2.43.24

24 May 18:07

Choose a tag to compare

Fixed

  • Build: Revert FetcherContext.callApi return type from Promise<unknown> back to Promise<any> — the unknown change broke all 33 exchange fetchers that access callApi return values without type narrowing.
  • Build: Revert Ticker.info, Market.info, FundingRate.info from Record<string, unknown> back to any in feeds types — broke Binance normalizer and Chainlink feed assignments.
  • Build: Fix Chainlink feed logger calls to pass structured context object instead of bare string.
  • Build: Revert ERROR_CODE_MAP constructor type from (...args: string[]) back to (...args: any[])RateLimitExceeded takes (string, number?, string?) which doesn't match string[].

Installation

npm:

npm install pmxtjs@2.43.24

PyPI:

pip install pmxt==2.43.24

Links

What's Changed

Full Changelog: v2.43.20f...v2.43.24f

v2.43.20

24 May 16:59

Choose a tag to compare

Fixed

  • Kalshi: Non-null assertion guards on WebSocket resolver maps + 30s connection timeout. Fixes #230, #231.
  • Gemini Titan: Non-null assertion guards on resolver maps + 30s handshake timeout. Fixes #235, #236.
  • Opinion: Non-null assertion guards on resolver maps + 30s connection timeout. Fixes #239, #249.
  • Myriad: Non-null assertion guards on WebSocket resolver/rejecter maps. Fixes #240.
  • Polymarket: Non-null assertion guards, bounded pendingTrades (1000/asset), userCallbacks dedup + cap (100), 30s connection timeout on both channels. Fixes #243, #245, #247, #334, #380.
  • Polymarket US: Non-null assertion guards on WebSocket socket reference. Fixes #284.
  • Polymarket: Guard Map.get() on candle buckets in normalizer. Fixes #321.
  • Limitless: Non-null assertion guards on websocket resolvers/buffers + stale resolver cleanup on timeout + client orderClient/signer guards + normalizer param narrowing. Fixes #257, #290, #303, #372.
  • Kalshi/Limitless/GoldSky: Remove unsafe as casts on nullable fields — use type predicates, null guards, optional chaining. Fixes #336.
  • TypeScript SDK: Non-null guards on ws-client.ts send + 30s fetch timeout on router compareMarketPrices. Fixes #223, #281.
  • Chainlink/Binance feeds: Add 30s connection timeout to WebSocket establishConnection(). Fixes #252, #253.
  • Server: Replace console calls with structured logger in server/index.ts. Fixes #306, #308, #310, #311, #312.
  • TypeScript SDK: Replace console.warn with structured logger in SDK router. Fixes #396.
  • Utils: Non-null guards on market-utils.ts + max queue depth (1000) on throttler + watcher resolver safety. Fixes #269, #296, #329.

Performance

  • Kalshi: Replace O(n²) concat() with push() in fetcher pagination (3 loops, MAX_PAGES=1000). Fixes #343.
  • Opinion: Replace O(n²) spread with push() in fetcher pagination (MAX_PAGES=500). Fixes #347.
  • Smarkets: Replace O(n²) spread with push() in fetcher pagination + map building (MAX_PAGES=100). Fixes #355.

Installation

npm:

npm install pmxtjs@2.43.20

PyPI:

pip install pmxt==2.43.20

Links

What's Changed

Full Changelog: v2.43.19f...v2.43.20f

v2.43.19

24 May 16:34

Choose a tag to compare

Fixed

  • Myriad: Read eventId instead of deprecated questionId in normalizer and utils. Fixes #556.

Installation

npm:

npm install pmxtjs@2.43.19

PyPI:

pip install pmxt==2.43.19

Links

What's Changed

  • fix: read eventId instead of questionId in myriad normalizer by @realfishsam in #602

Full Changelog: v2.43.18f...v2.43.19f

v2.43.18

24 May 15:44

Choose a tag to compare

Fixed

  • Python SDK: Python 3.8-compatible annotations in errors.py (from __future__ import annotations). Fixes #561.
  • Python SDK: Replace bare list[T] with List[T] in models.py for Python 3.8 compat. Fixes #562.
  • Python SDK: Add missing exports (MarketFilterCriteria, EventFilterCriteria, SortOption, OrderSide, etc.) to __init__.py and __all__. Add return type annotations to stop_server()/restart_server(). Fixes #565, #471.
  • Python SDK: Remove dangerous defaults (side="buy", amount=0) from create_order/build_order — now required keyword-only params. Fixes #466.
  • Python SDK: Rename type parameter to order_type to avoid shadowing Python built-in. Add _convert_params_to_camel() for MarketFetchParams/EventFetchParams. Rename OrderBook.dt to datetime. Add concrete return types to 9 router proxy methods. Fixes #563, #449, #452, #456, #496.
  • Python SDK: Add SubscriptionOption type, typed BuiltOrder.params/BuiltOrder.tx, MatchResult/EventMatchResult inheritance from unified types. Fixes #467, #500, #501, #497, #498.
  • Server: Validate query params in feed-routes.ts with runtime typeof checks instead of unsafe as string casts. Fixes #558.
  • Server: Validate parsed.method in WebSocket handler before use. Fixes #559.
  • Limitless: Replace 9 non-null assertions on optional interface methods with guard-and-throw checks. Fixes #560.
  • Hyperliquid: Correct allMids lookup key — use @{outcomeId} instead of #{encoding}, fixing prices hardcoded to 0.5. Fixes #441.
  • Hyperliquid: Add quoteToken to HyperliquidRawOutcome interface. Fixes #555.
  • Hyperliquid: Add builderFee to HyperliquidRawFill, users to HyperliquidRawTrade, make origSz optional. Fixes #547, #546, #520.
  • Kalshi: Read liquidity_dollars instead of deprecated liquidity field. Fixes #554.
  • Kalshi: Remove deprecated mututals_description from event normalizer. Fixes #443.
  • Kalshi: Handle missing image_url in event normalizer. Fixes #442.
  • Kalshi: Sync spec — add ts_ms to Order, remove client_order_id from Fill, add balance_dollars to GetBalance, add subaccount query param. Fixes #542, #517, #522, #433.
  • Polymarket: Use camelCase endDateIso instead of snake_case end_date_iso in normalizer. Fixes #557.
  • Polymarket US: Map cashValue to unrealizedPnL and currentPrice instead of hardcoding 0. Fixes #533.
  • Gemini Titan: Use dedicated volume24h field instead of volume for 24h volume. Fixes #444.
  • Gemini Titan: Type GeminiRawEvent.series as Record<string, any> | null to match live API. Fixes #439.
  • Metaculus: Handle 403 api_forecasting_not_enabled error. Fixes #515.
  • Baozi: Correct category field mapping — was returning tier instead of topic category. Fixes #540.
  • Opinion: Update base URL from openapi.opinion.trade to proxy.opinion.trade:8443. Fixes #516.
  • Smarkets: Sync spec — add CFTC jurisdiction, cftc object, original_price, original_bets, relax fullcover required fields. Fixes #543, #544, #545, #527, #528.
  • GoldSky: Add 30s timeout to subscriber fetch. Fixes #512.
  • Probable: Clean up orderBookResolvers after resolution to prevent memory leak. Fixes #550.
  • TypeScript SDK: Add question getter, bestBid/bestAsk on MarketOutcome, type fetchMarketsPaginated params, sync getExecutionPrice to match core. Fixes #453, #454, #462, #470, #502, #503.

Changed

  • Router: compareMarketPrices, fetchRelatedMarkets, and fetchHedges now accept optional params. Fixes #448.

Performance

  • Metaculus: Replace O(n²) array.concat() with push() in fetchMarkets and fetchEvents pagination. Fixes #551, #552.

Infrastructure

  • RPC endpoints: Add LIMITLESS_RPC_URL and OPINION_RPC_URL env var fallbacks for hardcoded blockchain RPC URLs. Fixes #507.
  • Service URLs: Add PMXT_API_URL, POLYMARKET_GOLDSKY_URL, OPINION_API_URL, OPINION_WS_URL env var fallbacks. Fixes #508.

Installation

npm:

npm install pmxtjs@2.43.18

PyPI:

pip install pmxt==2.43.18

Links

What's Changed

  • fix: use Python 3.8-compatible annotations in errors.py by @realfishsam in #566
  • fix: use Python 3.8-compatible generics in models.py by @realfishsam in #567
  • fix: validate query params in feed-routes instead of unsafe casts by @realfishsam in #568
  • fix: validate parsed.method in ws-handler before use by @realfishsam in #569
  • fix: replace non-null assertions with guard checks in limitless by @realfishsam in #570
  • perf: replace O(n²) concat with push in metaculus fetchMarkets by @realfishsam in #571
  • perf: replace O(n²) concat with push in metaculus fetchEvents by @realfishsam in #572
  • fix: clean up orderBookResolvers after resolution in probable websocket by @realfishsam in #573
  • fix: add 30s timeout to GoldSky subscriber fetch by @realfishsam in #575
  • fix: add missing exports and return types in Python init.py by @realfishsam in #576
  • fix: add quoteToken to hyperliquid outcome interface by @realfishsam in #577
  • fix: type GeminiRawEvent.series as object|null by @realfishsam in #578
  • fix: remove deprecated mututals_description from kalshi normalizer by @realfishsam in #580
  • fix: map cashValue to unrealizedPnL in polymarket_us by @realfishsam in #582
  • fix: add env fallbacks for hardcoded RPC endpoints by @realfishsam in #583
  • fix: use camelCase endDateIso in polymarket normalizer by @realfishsam in #584
  • fix: handle 403 api_forecasting_not_enabled in metaculus by @realfishsam in #585
  • fix: correct category field mapping in baozi normalizer by @realfishsam in #587
  • fix: read liquidity_dollars instead of deprecated liquidity in kalshi by @realfishsam in #588
  • fix: update opinion base URL to proxy.opinion.trade:8443 by @realfishsam in #591
  • fix: sync Kalshi spec with upstream API changes by @realfishsam in #590
  • fix: handle missing image_url in kalshi event normalizer by @realfishsam in #592
  • fix: use dedicated volume24h field in gemini-titan normalizer by @realfishsam in #594
  • fix: correct allMids lookup key in hyperliquid normalizer by @realfishsam in #595
  • fix: type safety and SDK parity fixes in TypeScript client by @realfishsam in #596
  • fix: sync smarkets spec with upstream API changes by @realfishsam in #597
  • fix: sync hyperliquid spec with upstream API changes by @realfishsam in #599
  • fix: type safety and naming fixes in Python client.py by @realfishsam in #600
  • fix: add env fallbacks for hardcoded service URLs by @realfishsam in #589
  • fix: remove dangerous defaults from Python create_order/build_order by @realfishsam in #598

Full Changelog: v2.43.17f...v2.43.18f