2.46.14
PatchFixed
- Docs: Simplify the raw WebSocket Python example for
watchAllOrderBooks()to use the hosted PMXT URL directly and drop the local relay override from that section.
Every update to pmxt, from the first commit to the latest release.
watchAllOrderBooks() to use the hosted PMXT URL directly and drop the local relay override from that section.watchAllOrderBooks() with a direct Python WebSocket example for non-SDK users.2.46.9 and 2.46.10.2.46.10 npm package publish.watchAllOrderBooks(), including the common mistake of placing quote characters inside the apiKey query parameter.watchAllOrderBooks() WebSocket usage actionable with runnable curl examples, a raw Python WebSocket example for direct ws:// / wss:// connections, and clearer wire protocol guidance for non-SDK clients.llms.txt docs and WebSocket/server management pages.curl WebSocket examples for watchAllOrderBooks(), including all-venue and single-venue subscription payloads, local relay URL shape, and the curl version requirement for sending WebSocket frames from stdin.watchAllOrderBooks() venue defaults. SDK Router examples now show all-venue streams, venue-client examples show single-venue defaults, and raw WebSocket examples remain explicit about omitting args for all venues.watchAllOrderBooks() / watch_all_order_books() to the instantiated venue for venue clients. Kalshi, Polymarket, Limitless, and Opinion now stream only their own venue unless an explicit venue list is provided, while Router continues to stream all venues by default.watchAllOrderBooks() / watch_all_order_books() streams are drained event-by-event instead of overwriting intermediate updates.api.pmxt.dev, retrying transient handshake failures, and clearing the connect timeout after the handshake so quiet periods do not close an otherwise healthy stream.fetchEvents() and fetchMarkets({ query }) now return full grouped market titles such as World Cup, USA vs Paraguay, Jun 13, 2026 - USA while keeping outcome labels as USA / Not USA, improving cross-venue matching and avoiding ambiguous one-word market titles.--json, non-TTY, and NO_COLOR output plain.--local and --hosted flags. Commands now use hosted PMXT when an API key is configured and otherwise fall back to a local PMXT instance.pmxt-core is not installed and explains how to install it or switch to hosted PMXT.complement to the matched event and market cluster relation types in the core router types and TypeScript/Python SDK models, matching the hosted API's complement relation filter.--base-url or pmxt server.pmxtjs from @pmxt/cli, keeping hosted CLI installs lightweight and avoiding SDK/core dependency warnings during global install.401/403 responses, including pmxt auth login, PMXT_API_KEY, and one-shot --pmxt-api-key usage.pmxt-core runtime dependencies so downstream installs do not pull Jest or tsx.@pmxt/cli package with the pmxt executable. It can be installed globally with npm install -g @pmxt/cli or run with npx @pmxt/cli.pmxt polymarket fetchMarkets --query Trump, direct camelCase method aliases such as pmxt fetchMarkets, and space-separated command groups such as pmxt order create and pmxt feed fetchTicker.pmxt auth commands for PMXT API keys and exchange credentials. Commands support saved auth, environment variables, and one-shot flags so automation can avoid interactive prompts.sdks/cli workspace, oclif command discovery, package validation, and npm package metadata for publishing @pmxt/cli.pmxtjs. Installing pmxtjs now provides the SDK only; installing @pmxt/cli provides the CLI.@pmxt/cli alongside pmxt-core, pmxtjs, and the Python pmxt package.pmxt-core npm metadata so publish dry-runs no longer rely on npm auto-correcting repository and bin path fields.pmxtjs dependency pinning, Python __init__ versioning, and generated SDK version arguments.pmxt auth status now dispatches correctly while preserving the existing pmxt auth:status command.watchOrderBook, watchOrderBooks, watchTrades, and unwatchOrderBook. Streaming methods now require the hosted /ws transport and fail fast if WebSocket transport is unavailable, preventing accidental 30s REST long-poll calls to /api/{exchange}/watch*.PSG vs Arsenal or Cleveland vs New York as their PMXT event title, while true match events keep their matchup titles.limit in fetchOrderBook() and fetchTrades(), and expose the documented fetchOrderBooks() batch method./api/feeds, /v0/sql, and /ws surfaces from createApp()/local servers with clearer unsupported-capability and missing-environment errors./api/router match lookups instead of sending fixture IDs to the hosted catalog.Cross Exchange directly after Events & Markets during release-time Mintlify regeneration instead of appending hosted groups near the bottom.identity, subset, superset, overlap, disjoint) and expose the single-relation enum in OpenAPI.Cross Exchange directly after Events & Markets so matched-cluster endpoints sit next to catalog discovery.Events & Markets instead of appending them near the bottom of the sidebar.Cross Exchange group.Cross Exchange / Enterprise split when hosted endpoint metadata is synced from hosted-pmxt.fetchMatchedMarketClusters / fetch_matched_market_clusters and fetchMatchedEventClusters / fetch_matched_event_clusters.bestBid / bestAsk fields on converted market outcomes so cluster responses include executable-price context.initAuth() / init_auth() in both TypeScript and Python SDKs — previously only available in core. Fixes #505.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.Ticker.info, Market.info, FundingRate.info from Record<string, unknown> back to any in feeds types — broke Binance normalizer and Chainlink feed assignments.ERROR_CODE_MAP constructor type from (...args: string[]) back to (...args: any[]) — RateLimitExceeded takes (string, number?, string?) which doesn't match string[].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. Internal interface, not user-facing..catch() handlers to fire-and-forget connect()/ensureConnected() calls in Binance feed (#280, #288) and Chainlink feed (#293, #300). Add concurrency guard + .catch() to GoldSky subscriber poll interval (#255).any types with typed interfaces (GoldskyOrderFilledEvent, GoldskyTransfer, GoldskyGraphQlResponse). Fixes #348.JSON.parse in ws-client onmessage to prevent malformed frames from killing the connection (#276).fetchWithRetry() (#207), 5s timeout to server-manager health checks (#210, #214), 30s timeout to feed-client fetch calls (#218). Replace 2 unsafe any types in feed-client (#226).any types in errors.ts (#224), args.ts (#228), models.ts (#232), interfaces.ts (#258), feeds/types.ts (#262), error-mapper.ts + 11 exchange error subclasses (#331), kalshi/normalizer.ts (#302), router/client.ts (#254).ExecutionPriceResult to exports, return type annotations on status()/logs() (#180, #233). Typed List/Dict in server_manager.py and errors.py (#238, #241). Add outcome_id/market_id to UserTrade, make PaginatedResult.total optional (#169, #170, #171). Add page/similarity_threshold to MarketFetchParams, align fetchOHLCV timeframe default (#172, #177).'cancelled' to 'canceled' across core types, 10 exchange normalizers, OpenAPI specs, both SDKs, and tests (#152).pendingTrades (1000/asset), userCallbacks dedup + cap (100), 30s connection timeout on both channels. Fixes #243, #245, #247, #334, #380.Map.get() on candle buckets in normalizer. Fixes #321.as casts on nullable fields — use type predicates, null guards, optional chaining. Fixes #336.ws-client.ts send + 30s fetch timeout on router compareMarketPrices. Fixes #223, #281.establishConnection(). Fixes #252, #253.server/index.ts. Fixes #306, #308, #310, #311, #312.console.warn with structured logger in SDK router. Fixes #396.market-utils.ts + max queue depth (1000) on throttler + watcher resolver safety. Fixes #269, #296, #329.concat() with push() in fetcher pagination (3 loops, MAX_PAGES=1000). Fixes #343.push() in fetcher pagination (MAX_PAGES=500). Fixes #347.push() in fetcher pagination + map building (MAX_PAGES=100). Fixes #355.