From 977330f2500b63f90f2e778a36aada90e7476554 Mon Sep 17 00:00:00 2001 From: Samuel Tinnerholm Date: Fri, 10 Jul 2026 06:36:55 +0000 Subject: [PATCH] fix(kalshi): expose event metadata endpoint --- core/api-doc-config.generated.json | 93 +- core/src/BaseExchange.ts | 11 + core/src/exchanges/kalshi/fetcher.ts | 10 + core/src/exchanges/kalshi/index.ts | 10 + core/src/server/method-verbs.json | 10 + core/src/server/openapi.yaml | 27 + .../exchanges/kalshi-event-metadata.test.ts | 23 + docs/api-reference/openapi.json | 1621 +++++++---------- docs/concepts/venues.mdx | 2 +- docs/docs.json | 3 +- docs/llms-full.txt | 35 + docs/llms.txt | 1 + sdks/python/API_REFERENCE.md | 25 + sdks/python/pmxt/client.py | 20 + sdks/typescript/API_REFERENCE.md | 25 + sdks/typescript/pmxt/client.ts | 25 + .../scripts/generate-client-methods.js | 3 + 17 files changed, 926 insertions(+), 1018 deletions(-) create mode 100644 core/test/exchanges/kalshi-event-metadata.test.ts diff --git a/core/api-doc-config.generated.json b/core/api-doc-config.generated.json index 08c13a53..40aaff04 100644 --- a/core/api-doc-config.generated.json +++ b/core/api-doc-config.generated.json @@ -1,5 +1,5 @@ { - "_generated": "Auto-generated by extract-jsdoc.js on 2026-06-23T14:45:30.753Z. Do not edit manually.", + "_generated": "Auto-generated by extract-jsdoc.js on 2026-07-10T06:40:05.097Z. Do not edit manually.", "methods": { "has": { "summary": "HTTP verb for the endpoint (e.g. GET, POST). */", @@ -228,6 +228,23 @@ }, "source": "BaseExchange.ts:959" }, + "fetchEventMetadata": { + "summary": "Fetch venue-native metadata for a specific event when the exchange", + "description": "exposes a dedicated metadata endpoint.\n\nKalshi implements this for `GET /events/{event_ticker}/metadata`.", + "params": [ + { + "name": "eventTicker", + "type": "string", + "optional": false, + "description": "eventTicker" + } + ], + "returns": { + "type": "Record", + "description": "Result" + }, + "source": "BaseExchange.ts:976" + }, "fetchOHLCV": { "summary": "Fetch historical OHLCV (candlestick) price data for a specific market outcome.", "description": "Fetch historical OHLCV (candlestick) price data for a specific market outcome.", @@ -254,7 +271,7 @@ "Polymarket: outcomeId is the CLOB Token ID. Kalshi: outcomeId is the Market Ticker.", "Common resolutions: '1m' | '5m' | '15m' | '1h' | '6h' | '1d'. Arbitrary intervals (e.g. '30s', '120s', '3h') accepted by venues that support them." ], - "source": "BaseExchange.ts:976" + "source": "BaseExchange.ts:987" }, "fetchOrderBook": { "summary": "Fetch the order book (bids/asks) for a specific outcome.", @@ -283,7 +300,7 @@ "type": "OrderBook", "description": "Order book with bids and asks. Returns OrderBook[] when" }, - "source": "BaseExchange.ts:991" + "source": "BaseExchange.ts:1002" }, "fetchOrderBooks": { "summary": "Batch variant of {@link fetchOrderBook}. Fetches order books for", @@ -300,7 +317,7 @@ "type": "Record", "description": "A map keyed by the input id (preserving the caller's exact" }, - "source": "BaseExchange.ts:1019" + "source": "BaseExchange.ts:1030" }, "fetchTrades": { "summary": "Fetch raw trade history for a specific outcome.", @@ -326,7 +343,7 @@ "notes": [ "Polymarket requires an API key for trade history. Use fetchOHLCV for public historical data." ], - "source": "BaseExchange.ts:1032" + "source": "BaseExchange.ts:1043" }, "createOrder": { "summary": "Place a new order on the exchange.", @@ -343,7 +360,7 @@ "type": "Order", "description": "The created order" }, - "source": "BaseExchange.ts:1049" + "source": "BaseExchange.ts:1060" }, "buildOrder": { "summary": "Build an order payload without submitting it to the exchange.", @@ -360,7 +377,7 @@ "type": "BuiltOrder", "description": "A BuiltOrder containing the exchange-native payload" }, - "source": "BaseExchange.ts:1063" + "source": "BaseExchange.ts:1074" }, "submitOrder": { "summary": "Submit a pre-built order returned by buildOrder().", @@ -377,7 +394,7 @@ "type": "Order", "description": "The submitted order" }, - "source": "BaseExchange.ts:1075" + "source": "BaseExchange.ts:1086" }, "cancelOrder": { "summary": "Cancel an existing open order.", @@ -394,7 +411,7 @@ "type": "Order", "description": "The cancelled order" }, - "source": "BaseExchange.ts:1085" + "source": "BaseExchange.ts:1096" }, "fetchOrder": { "summary": "Fetch a specific order by ID.", @@ -411,7 +428,7 @@ "type": "Order", "description": "The order details" }, - "source": "BaseExchange.ts:1095" + "source": "BaseExchange.ts:1106" }, "fetchOpenOrders": { "summary": "Fetch all open orders, optionally filtered by market.", @@ -428,7 +445,7 @@ "type": "Order[]", "description": "Array of open orders" }, - "source": "BaseExchange.ts:1105" + "source": "BaseExchange.ts:1116" }, "fetchMyTrades": { "summary": "Fetch authenticated user trade history.", @@ -471,7 +488,7 @@ "type": "UserTrade[]", "description": "Array of user trades" }, - "source": "BaseExchange.ts:1115" + "source": "BaseExchange.ts:1126" }, "fetchClosedOrders": { "summary": "Fetch authenticated closed orders.", @@ -510,7 +527,7 @@ "type": "Order[]", "description": "Array of closed orders" }, - "source": "BaseExchange.ts:1131" + "source": "BaseExchange.ts:1142" }, "fetchAllOrders": { "summary": "Fetch authenticated order history across open and closed orders.", @@ -549,7 +566,7 @@ "type": "Order[]", "description": "Array of orders" }, - "source": "BaseExchange.ts:1146" + "source": "BaseExchange.ts:1157" }, "fetchPositions": { "summary": "Fetch current user positions across all markets.", @@ -566,7 +583,7 @@ "type": "Position[]", "description": "Array of user positions" }, - "source": "BaseExchange.ts:1161" + "source": "BaseExchange.ts:1172" }, "fetchBalance": { "summary": "Fetch account balances.", @@ -583,7 +600,7 @@ "type": "Balance[]", "description": "Array of account balances" }, - "source": "BaseExchange.ts:1171" + "source": "BaseExchange.ts:1182" }, "getExecutionPrice": { "summary": "Calculate the volume-weighted average execution price for a given order size.", @@ -612,7 +629,7 @@ "type": "number", "description": "Average execution price, or 0 if insufficient liquidity" }, - "source": "BaseExchange.ts:1181" + "source": "BaseExchange.ts:1192" }, "getExecutionPriceDetailed": { "summary": "Calculate detailed execution price information including partial fill data.", @@ -641,7 +658,7 @@ "type": "ExecutionPriceResult", "description": "Detailed execution result with price, filled amount, and fill status" }, - "source": "BaseExchange.ts:1194" + "source": "BaseExchange.ts:1205" }, "filterMarkets": { "summary": "Filter a list of markets by criteria.", @@ -664,7 +681,7 @@ "type": "UnifiedMarket[]", "description": "Filtered array of markets" }, - "source": "BaseExchange.ts:1210" + "source": "BaseExchange.ts:1221" }, "filterEvents": { "summary": "Filter a list of events by criteria.", @@ -687,7 +704,7 @@ "type": "UnifiedEvent[]", "description": "Filtered array of events" }, - "source": "BaseExchange.ts:1370" + "source": "BaseExchange.ts:1381" }, "watchOrderBook": { "summary": "Watch order book updates in real-time via WebSocket.", @@ -716,7 +733,7 @@ "type": "OrderBook", "description": "Promise that resolves with the current orderbook state" }, - "source": "BaseExchange.ts:1466" + "source": "BaseExchange.ts:1477" }, "watchOrderBooks": { "summary": "Watch multiple order books simultaneously via WebSocket.", @@ -745,7 +762,7 @@ "type": "Record", "description": "Promise that resolves with order books keyed by ID" }, - "source": "BaseExchange.ts:1479" + "source": "BaseExchange.ts:1490" }, "unwatchOrderBook": { "summary": "Unsubscribe from a previously watched order book stream.", @@ -762,7 +779,7 @@ "type": "void", "description": "Result" }, - "source": "BaseExchange.ts:1507" + "source": "BaseExchange.ts:1518" }, "watchTrades": { "summary": "Watch trade executions in real-time via WebSocket.", @@ -797,7 +814,7 @@ "type": "Trade[]", "description": "Promise that resolves with recent trades" }, - "source": "BaseExchange.ts:1520" + "source": "BaseExchange.ts:1531" }, "watchAddress": { "summary": "Stream activity for a public wallet address", @@ -820,7 +837,7 @@ "type": "SubscribedAddressSnapshot", "description": "Promise that resolves with the latest SubscribedAddressSnapshot snapshot" }, - "source": "BaseExchange.ts:1534" + "source": "BaseExchange.ts:1545" }, "unwatchAddress": { "summary": "Stop watching a previously registered wallet address and release its resource updates.", @@ -837,7 +854,7 @@ "type": "void", "description": "Result" }, - "source": "BaseExchange.ts:1547" + "source": "BaseExchange.ts:1558" }, "close": { "summary": "Close all WebSocket connections and clean up resources.", @@ -847,7 +864,7 @@ "type": "void", "description": "Result" }, - "source": "BaseExchange.ts:1556" + "source": "BaseExchange.ts:1567" }, "fetchMarketMatches": { "summary": "Find the same or related market on other venues. Two modes:", @@ -864,7 +881,7 @@ "type": "MatchResult[]", "description": "Array of matched markets with relation and confidence" }, - "source": "BaseExchange.ts:1570" + "source": "BaseExchange.ts:1581" }, "fetchMatches": { "summary": "fetchMatches", @@ -881,7 +898,7 @@ "type": "MatchResult[]", "description": "Result" }, - "source": "BaseExchange.ts:1586" + "source": "BaseExchange.ts:1597" }, "fetchEventMatches": { "summary": "Find the same or related event on other venues. Two modes:", @@ -898,7 +915,7 @@ "type": "EventMatchResult[]", "description": "Array of matched events with market-level match details" }, - "source": "BaseExchange.ts:1594" + "source": "BaseExchange.ts:1605" }, "compareMarketPrices": { "summary": "Compare live prices for the same market across venues. Finds identity matches and returns side-by-side best bid/ask prices so you can spot price differences at a glance.", @@ -915,7 +932,7 @@ "type": "PriceComparison[]", "description": "Array of price comparisons across venues" }, - "source": "BaseExchange.ts:1610" + "source": "BaseExchange.ts:1621" }, "fetchRelatedMarkets": { "summary": "Find related markets across venues. Discovers subset/superset market relationships", @@ -932,7 +949,7 @@ "type": "PriceComparison[]", "description": "Array of subset/superset matches with live prices" }, - "source": "BaseExchange.ts:1620" + "source": "BaseExchange.ts:1631" }, "fetchMatchedMarkets": { "summary": "fetchMatchedMarkets", @@ -949,7 +966,7 @@ "type": "MatchedMarketPair[]", "description": "Result" }, - "source": "BaseExchange.ts:1631" + "source": "BaseExchange.ts:1642" }, "fetchMatchedPrices": { "summary": "fetchMatchedPrices", @@ -966,7 +983,7 @@ "type": "MatchedPricePair[]", "description": "Array of matched market pairs with prices from each venue" }, - "source": "BaseExchange.ts:1639" + "source": "BaseExchange.ts:1650" }, "fetchHedges": { "summary": "fetchHedges", @@ -983,7 +1000,7 @@ "type": "PriceComparison[]", "description": "Array of subset/superset matches with live prices" }, - "source": "BaseExchange.ts:1650" + "source": "BaseExchange.ts:1661" }, "fetchArbitrage": { "summary": "fetchArbitrage", @@ -1000,7 +1017,7 @@ "type": "ArbitrageOpportunity[]", "description": "Array of arbitrage opportunities sorted by spread" }, - "source": "BaseExchange.ts:1660" + "source": "BaseExchange.ts:1671" }, "watchPrices": { "summary": "Watch AMM price updates for a market address (Limitless only).", @@ -1142,7 +1159,7 @@ "type": "FirehoseEvent", "description": "Next event with source, symbol, and orderbook" }, - "source": "client.ts:1973" + "source": "client.ts:2057" }, "firehose": { "summary": "Stream all orderbook updates across venues.", @@ -1159,7 +1176,7 @@ "type": "FirehoseEvent", "description": "Next event with source, symbol, and orderbook" }, - "source": "client.ts:2014" + "source": "client.ts:2098" } }, "workflowExample": { diff --git a/core/src/BaseExchange.ts b/core/src/BaseExchange.ts index 59741c79..469a32c9 100644 --- a/core/src/BaseExchange.ts +++ b/core/src/BaseExchange.ts @@ -973,6 +973,17 @@ export abstract class PredictionMarketExchange { return events[0]; } + /** + * Fetch venue-native metadata for a specific event when the exchange + * exposes a dedicated metadata endpoint. + * + * Kalshi implements this for `GET /events/{event_ticker}/metadata`. + */ + async fetchEventMetadata(eventTicker: string): Promise> { + void eventTicker; + throw new Error("Method fetchEventMetadata not implemented."); + } + /** * Fetch historical OHLCV (candlestick) price data for a specific market outcome. * diff --git a/core/src/exchanges/kalshi/fetcher.ts b/core/src/exchanges/kalshi/fetcher.ts index 7276e23e..65bd37e4 100644 --- a/core/src/exchanges/kalshi/fetcher.ts +++ b/core/src/exchanges/kalshi/fetcher.ts @@ -463,6 +463,16 @@ export class KalshiFetcher implements IExchangeFetcher> { + try { + return this.ctx.callApi('GetEventMetadata', { + event_ticker: eventTicker.toUpperCase(), + }); + } catch (e: any) { + throw kalshiErrorMapper.mapError(e); + } + } + async fetchRawSeriesMap(): Promise> { try { const data = await this.ctx.callApi('GetSeriesList'); diff --git a/core/src/exchanges/kalshi/index.ts b/core/src/exchanges/kalshi/index.ts index f8f1d20d..076f556f 100644 --- a/core/src/exchanges/kalshi/index.ts +++ b/core/src/exchanges/kalshi/index.ts @@ -228,6 +228,16 @@ export class KalshiExchange extends PredictionMarketExchange { return filtered; } + /** + * Fetch Kalshi's venue-native per-event metadata payload. + * + * This surfaces Kalshi's `GET /events/{event_ticker}/metadata` endpoint, + * which is distinct from the normalized `fetchEvent` response. + */ + async fetchEventMetadata(eventTicker: string): Promise> { + return this.fetcher.fetchRawEventMetadata(eventTicker); + } + async fetchEventsPage( params: EventFetchParams = {}, ): Promise<{ events: UnifiedEvent[]; cursor: string | null; nextCursor: string | null }> { diff --git a/core/src/server/method-verbs.json b/core/src/server/method-verbs.json index 3a6b5989..205be445 100644 --- a/core/src/server/method-verbs.json +++ b/core/src/server/method-verbs.json @@ -79,6 +79,16 @@ } ] }, + "fetchEventMetadata": { + "verb": "get", + "args": [ + { + "name": "eventTicker", + "kind": "string", + "optional": false + } + ] + }, "fetchOHLCV": { "verb": "get", "args": [ diff --git a/core/src/server/openapi.yaml b/core/src/server/openapi.yaml index 64e1dbb0..428cf7d9 100644 --- a/core/src/server/openapi.yaml +++ b/core/src/server/openapi.yaml @@ -739,6 +739,33 @@ paths: description: >- Fetch a single event by lookup parameters. Convenience wrapper around fetchEvents() that returns a single result or throws EventNotFound. + '/api/{exchange}/fetchEventMetadata': + get: + summary: Fetch Event Metadata + operationId: fetchEventMetadata + parameters: + - $ref: '#/components/parameters/ExchangeParam' + - in: query + name: eventTicker + required: true + schema: + type: string + responses: + '200': + description: Fetch Event Metadata response + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + properties: + data: + type: object + additionalProperties: {} + description: >- + Fetch venue-native metadata for a specific event when the exchange exposes a dedicated metadata endpoint. Kalshi + implements this for `GET /events/{event_ticker}/metadata`. '/api/{exchange}/fetchOHLCV': get: summary: Fetch OHLCV diff --git a/core/test/exchanges/kalshi-event-metadata.test.ts b/core/test/exchanges/kalshi-event-metadata.test.ts new file mode 100644 index 00000000..e27307d4 --- /dev/null +++ b/core/test/exchanges/kalshi-event-metadata.test.ts @@ -0,0 +1,23 @@ +import { KalshiFetcher } from '../../src/exchanges/kalshi/fetcher'; + +describe('Kalshi event metadata', () => { + it('fetches event metadata through the venue GetEventMetadata operation', async () => { + const calls: Array<{ operation: string; params?: unknown }> = []; + const ctx: any = { + http: {}, + getHeaders: () => ({}), + callApi: async (operation: string, params?: unknown) => { + calls.push({ operation, params }); + return { event_metadata: { settlement_sources: ['kalshi'], foo: 'bar' } }; + }, + }; + const fetcher = new KalshiFetcher(ctx); + + await expect(fetcher.fetchRawEventMetadata('kxabc-26')).resolves.toEqual({ + event_metadata: { settlement_sources: ['kalshi'], foo: 'bar' }, + }); + expect(calls).toEqual([ + { operation: 'GetEventMetadata', params: { event_ticker: 'KXABC-26' } }, + ]); + }); +}); diff --git a/docs/api-reference/openapi.json b/docs/api-reference/openapi.json index 21413570..72ee155e 100644 --- a/docs/api-reference/openapi.json +++ b/docs/api-reference/openapi.json @@ -3,7 +3,7 @@ "info": { "title": "PMXT Hosted API", "description": "One API for supported prediction markets. Hosted catalog search in under 10ms, a unified schema for supported venues, and venue-native trading where venues expose writes.", - "version": "2.51.4" + "version": "2.17.1" }, "servers": [ { @@ -274,7 +274,32 @@ "operationId": "fetchMarkets", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "metaculus", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "suibets", + "rain", + "hunch", + "router" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -1083,7 +1108,32 @@ "operationId": "fetchEvents", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "metaculus", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "suibets", + "rain", + "hunch", + "router" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -1456,7 +1506,22 @@ "operationId": "fetchSeries", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "opinion", + "polymarket_us", + "gemini-titan", + "router" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "responses": { @@ -1494,11 +1559,6 @@ "label": "Polymarket", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" }, - { - "lang": "python", - "label": "Limitless", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, { "lang": "python", "label": "Kalshi", @@ -1509,66 +1569,21 @@ "label": "KalshiDemo", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, - { - "lang": "python", - "label": "Smarkets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, { "lang": "python", "label": "PolymarketUS", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" }, - { - "lang": "python", - "label": "Hyperliquid", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, { "lang": "python", "label": "GeminiTitan", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, - { - "lang": "python", - "label": "Rain", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_series()" - }, { "lang": "python", "label": "Router", @@ -1579,11 +1594,6 @@ "label": "Polymarket", "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" }, - { - "lang": "javascript", - "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, { "lang": "javascript", "label": "Kalshi", @@ -1594,66 +1604,21 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, - { - "lang": "javascript", - "label": "Smarkets", - "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, { "lang": "javascript", "label": "PolymarketUS", "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" }, - { - "lang": "javascript", - "label": "Hyperliquid", - "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, { "lang": "javascript", "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, - { - "lang": "javascript", - "label": "Rain", - "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchSeries();" - }, { "lang": "javascript", "label": "Router", @@ -2366,64 +2331,26 @@ ] } }, - "/api/{exchange}/fetchOHLCV": { + "/api/{exchange}/fetchEventMetadata": { "get": { - "summary": "Fetch OHLCV", - "operationId": "fetchOHLCV", + "summary": "Fetch Event Metadata", + "operationId": "fetchEventMetadata", "parameters": [ { "$ref": "#/components/parameters/ExchangeParam" }, { "in": "query", - "name": "outcomeId", + "name": "eventTicker", "required": true, "schema": { "type": "string" } - }, - { - "in": "query", - "name": "resolution", - "required": false, - "schema": { - "type": "string" - }, - "description": "Required for candle aggregation" - }, - { - "in": "query", - "name": "start", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - }, - "description": "Start of the time range" - }, - { - "in": "query", - "name": "end", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - }, - "description": "End of the time range" - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "type": "number" - }, - "description": "Maximum number of results to return" } ], "responses": { "200": { - "description": "Fetch OHLCV response", + "description": "Fetch Event Metadata response", "content": { "application/json": { "schema": { @@ -2435,10 +2362,8 @@ "type": "object", "properties": { "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PriceCandle" - } + "type": "object", + "additionalProperties": {} } } } @@ -2448,179 +2373,198 @@ } } }, - "description": "Fetch historical OHLCV (candlestick) price data for a specific market outcome.", + "description": "Fetch venue-native metadata for a specific event when the exchange exposes a dedicated metadata endpoint. Kalshi implements this for `GET /events/{event_ticker}/metadata`.", "security": [], "x-codeSamples": [ { "lang": "python", "label": "Polymarket", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Limitless", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Kalshi", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Kalshi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Kalshi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "KalshiDemo", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Probable", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Baozi", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Myriad", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Opinion", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Metaculus", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Smarkets", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "PolymarketUS", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Hyperliquid", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "GeminiTitan", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "SuiBets", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Rain", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "python", "label": "Hunch", - "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_event_metadata(event_ticker=\"value\")" }, { "lang": "javascript", "label": "Polymarket", - "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Kalshi", - "source": "import { Kalshi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Kalshi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Kalshi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Kalshi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "KalshiDemo", - "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Opinion", - "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Smarkets", - "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "PolymarketUS", - "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Hyperliquid", - "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Rain", - "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" }, { "lang": "javascript", "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchEventMetadata({ eventTicker: \"value\" });" } ] } }, - "/api/{exchange}/fetchOrderBook": { + "/api/{exchange}/fetchOHLCV": { "get": { - "summary": "Fetch Order Book", - "operationId": "fetchOrderBook", + "summary": "Fetch OHLCV", + "operationId": "fetchOHLCV", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "hyperliquid", + "rain", + "hunch" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -2632,56 +2576,46 @@ }, { "in": "query", - "name": "limit", - "required": false, - "schema": { - "type": "number" - } - }, - { - "in": "query", - "name": "side", + "name": "resolution", "required": false, "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ] + "type": "string" }, - "description": "Outcome side: 'yes' or 'no'. Required for exchanges like Limitless where the API returns a single orderbook per market." + "description": "Required for candle aggregation" }, { "in": "query", - "name": "outcome", + "name": "start", "required": false, "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, - "description": "Outcome alias: 'yes' or 'no', or an outcome token ID. When set, the first argument is treated as a market ID and this value selects which outcome's order book to fetch. Accepts the literal strings 'yes'/'no' (resolved via a market lookup) or a raw outcome token ID." + "description": "Start of the time range" }, { "in": "query", - "name": "since", + "name": "end", "required": false, "schema": { - "type": "number" + "type": "string", + "format": "date-time" }, - "description": "Unix timestamp (ms) — fetch a historical snapshot at or before this time, or the start of a range when combined with `until` (hosted API only)." + "description": "End of the time range" }, { "in": "query", - "name": "until", + "name": "limit", "required": false, "schema": { "type": "number" }, - "description": "Unix timestamp (ms) — end of a historical range. When combined with `since`, returns an array of reconstructed L2 OrderBook snapshots between `since` and `until` (hosted API only)." + "description": "Maximum number of results to return" } ], "responses": { "200": { - "description": "Fetch Order Book response", + "description": "Fetch OHLCV response", "content": { "application/json": { "schema": { @@ -2693,7 +2627,10 @@ "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/OrderBook" + "type": "array", + "items": { + "$ref": "#/components/schemas/PriceCandle" + } } } } @@ -2703,54 +2640,278 @@ } } }, - "description": "Fetch the order book (bids/asks) for a specific outcome. Supports live and historical queries. For historical data, pass `since` to get a single snapshot, or `since` + `until` to get an array of fully reconstructed L2 books from the archive. Range queries return up to `limit` snapshots (default 100, max 1000).", + "description": "Fetch historical OHLCV (candlestick) price data for a specific market outcome.", "security": [], "x-codeSamples": [ { "lang": "python", "label": "Polymarket", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Limitless", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Kalshi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Kalshi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Kalshi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "KalshiDemo", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Probable", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", "label": "Opinion", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" }, { "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" - }, + "label": "Hyperliquid", + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + }, + { + "lang": "python", + "label": "Rain", + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + }, + { + "lang": "python", + "label": "Hunch", + "source": "import pmxt\nfrom datetime import datetime, timezone\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_ohlcv(\n \"67890\",\n resolution=\"1h\",\n start=datetime(2026, 1, 1, tzinfo=timezone.utc),\n end=datetime(2026, 1, 31, tzinfo=timezone.utc),\n limit=10,\n)" + }, + { + "lang": "javascript", + "label": "Polymarket", + "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Limitless", + "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Kalshi", + "source": "import { Kalshi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Kalshi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "KalshiDemo", + "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Probable", + "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Baozi", + "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Myriad", + "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Opinion", + "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Hyperliquid", + "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Rain", + "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + }, + { + "lang": "javascript", + "label": "Hunch", + "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOHLCV(\n \"67890\",\n {\n resolution: \"1h\",\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" + } + ] + } + }, + "/api/{exchange}/fetchOrderBook": { + "get": { + "summary": "Fetch Order Book", + "operationId": "fetchOrderBook", + "parameters": [ + { + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "suibets", + "rain", + "hunch", + "router" + ] + }, + "required": true, + "description": "The prediction market exchange to target." + }, + { + "in": "query", + "name": "outcomeId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "type": "number" + } + }, + { + "in": "query", + "name": "side", + "required": false, + "schema": { + "type": "string", + "enum": [ + "yes", + "no" + ] + }, + "description": "Outcome side: 'yes' or 'no'. Required for exchanges like Limitless where the API returns a single orderbook per market." + }, + { + "in": "query", + "name": "outcome", + "required": false, + "schema": { + "type": "string" + }, + "description": "Outcome alias: 'yes' or 'no', or an outcome token ID. When set, the first argument is treated as a market ID and this value selects which outcome's order book to fetch. Accepts the literal strings 'yes'/'no' (resolved via a market lookup) or a raw outcome token ID." + }, + { + "in": "query", + "name": "since", + "required": false, + "schema": { + "type": "number" + }, + "description": "Unix timestamp (ms) — fetch a historical snapshot at or before this time, or the start of a range when combined with `until` (hosted API only)." + }, + { + "in": "query", + "name": "until", + "required": false, + "schema": { + "type": "number" + }, + "description": "Unix timestamp (ms) — end of a historical range. When combined with `since`, returns an array of reconstructed L2 OrderBook snapshots between `since` and `until` (hosted API only)." + } + ], + "responses": { + "200": { + "description": "Fetch Order Book response", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/OrderBook" + } + } + } + ] + } + } + } + } + }, + "description": "Fetch the order book (bids/asks) for a specific outcome. Supports live and historical queries. For historical data, pass `since` to get a single snapshot, or `since` + `until` to get an array of fully reconstructed L2 books from the archive. Range queries return up to `limit` snapshots (default 100, max 1000).", + "security": [], + "x-codeSamples": [ + { + "lang": "python", + "label": "Polymarket", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Limitless", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Kalshi", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Kalshi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "KalshiDemo", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Probable", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Baozi", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Myriad", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, + { + "lang": "python", + "label": "Opinion", + "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_book(\n \"67890\",\n limit=10,\n params={\"outcome\": \"yes\"},\n)" + }, { "lang": "python", "label": "Smarkets", @@ -2826,11 +2987,6 @@ "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBook(\n \"67890\",\n 10,\n { outcome: \"yes\" },\n);" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBook(\n \"67890\",\n 10,\n { outcome: \"yes\" },\n);" - }, { "lang": "javascript", "label": "Smarkets", @@ -2875,7 +3031,19 @@ "operationId": "fetchOrderBooks", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "hyperliquid" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "requestBody": { @@ -2942,11 +3110,6 @@ "label": "Polymarket", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" }, - { - "lang": "python", - "label": "Limitless", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, { "lang": "python", "label": "Kalshi", @@ -2957,76 +3120,16 @@ "label": "KalshiDemo", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Opinion", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Smarkets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "PolymarketUS", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, { "lang": "python", "label": "Hyperliquid", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" }, - { - "lang": "python", - "label": "GeminiTitan", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Rain", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books([\"67890\"])" - }, { "lang": "javascript", "label": "Polymarket", "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" }, - { - "lang": "javascript", - "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, { "lang": "javascript", "label": "Kalshi", @@ -3037,65 +3140,10 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Opinion", - "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Smarkets", - "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "PolymarketUS", - "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, { "lang": "javascript", "label": "Hyperliquid", "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Rain", - "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks([\"67890\"]);" } ] } @@ -3106,7 +3154,26 @@ "operationId": "fetchTrades", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "smarkets", + "hyperliquid", + "rain", + "hunch" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -3211,41 +3278,16 @@ "label": "Myriad", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" }, - { - "lang": "python", - "label": "Opinion", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" - }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" - }, { "lang": "python", "label": "Smarkets", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" }, - { - "lang": "python", - "label": "PolymarketUS", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" - }, { "lang": "python", "label": "Hyperliquid", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" }, - { - "lang": "python", - "label": "GeminiTitan", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" - }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_trades(\n \"67890\",\n start=\"2026-01-01T00:00:00Z\",\n end=\"2026-01-31T00:00:00Z\",\n limit=10,\n)" - }, { "lang": "python", "label": "Rain", @@ -3291,41 +3333,16 @@ "label": "Myriad", "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" }, - { - "lang": "javascript", - "label": "Opinion", - "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" - }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" - }, { "lang": "javascript", "label": "Smarkets", "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" }, - { - "lang": "javascript", - "label": "PolymarketUS", - "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" - }, { "lang": "javascript", "label": "Hyperliquid", "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" }, - { - "lang": "javascript", - "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchTrades(\n \"67890\",\n {\n start: new Date(\"2026-01-01T00:00:00Z\"),\n end: new Date(\"2026-01-31T00:00:00Z\"),\n limit: 10,\n },\n);" - }, { "lang": "javascript", "label": "Rain", @@ -3345,7 +3362,30 @@ "operationId": "createOrder", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "metaculus", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "rain", + "hunch" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "requestBody": { @@ -3473,11 +3513,6 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.GeminiTitan(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n)\nresult = exchange.create_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.SuiBets()\nresult = exchange.create_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, { "lang": "python", "label": "Rain", @@ -3553,11 +3588,6 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new GeminiTitan({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n});\nconst result = await exchange.createOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new SuiBets();\nconst result = await exchange.createOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, { "lang": "javascript", "label": "Rain", @@ -3577,7 +3607,24 @@ "operationId": "buildOrder", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "requestBody": { @@ -3643,48 +3690,23 @@ { "lang": "python", "label": "Polymarket", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Polymarket(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n proxy_address=\"YOUR_PROXY_ADDRESS\",\n signature_type=\"gnosis-safe\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, - { - "lang": "python", - "label": "Limitless", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Limitless(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, - { - "lang": "python", - "label": "Kalshi", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Kalshi(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, - { - "lang": "python", - "label": "KalshiDemo", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.KalshiDemo(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Probable(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" + "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Polymarket(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n proxy_address=\"YOUR_PROXY_ADDRESS\",\n signature_type=\"gnosis-safe\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, { "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Baozi(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" + "label": "Kalshi", + "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Kalshi(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, { "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Myriad(\n api_key=\"YOUR_API_KEY\",\n wallet_address=\"YOUR_WALLET_ADDRESS\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" + "label": "KalshiDemo", + "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.KalshiDemo(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Opinion(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n proxy_address=\"YOUR_PROXY_ADDRESS\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Metaculus(\n api_token=\"YOUR_API_TOKEN\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, { "lang": "python", "label": "Smarkets", @@ -3705,31 +3727,16 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.GeminiTitan(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.SuiBets()\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Rain(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Hunch(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.build_order(\n market_id=\"12345\",\n outcome_id=\"67890\",\n side=\"buy\",\n type=\"limit\",\n amount=10,\n price=0.55,\n)" - }, { "lang": "javascript", "label": "Polymarket", "source": "import { Polymarket } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Polymarket({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n proxyAddress: \"YOUR_PROXY_ADDRESS\",\n signatureType: \"gnosis-safe\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" }, - { - "lang": "javascript", - "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Limitless({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, { "lang": "javascript", "label": "Kalshi", @@ -3740,31 +3747,11 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new KalshiDemo({\n apiKey: \"YOUR_API_KEY\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Probable({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Baozi({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Myriad({\n apiKey: \"YOUR_API_KEY\",\n walletAddress: \"YOUR_WALLET_ADDRESS\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Opinion({\n apiKey: \"YOUR_API_KEY\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n proxyAddress: \"YOUR_PROXY_ADDRESS\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Metaculus({\n apiToken: \"YOUR_API_TOKEN\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, { "lang": "javascript", "label": "Smarkets", @@ -3785,20 +3772,10 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new GeminiTitan({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new SuiBets();\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Rain({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Hunch({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.buildOrder({\n marketId: \"12345\",\n outcomeId: \"67890\",\n side: \"buy\",\n type: \"limit\",\n amount: 10,\n price: 0.55,\n});" } ] } @@ -3809,7 +3786,24 @@ "operationId": "submitOrder", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "requestBody": { @@ -3877,11 +3871,6 @@ "label": "Polymarket", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Polymarket(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n proxy_address=\"YOUR_PROXY_ADDRESS\",\n signature_type=\"gnosis-safe\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" }, - { - "lang": "python", - "label": "Limitless", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Limitless(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, { "lang": "python", "label": "Kalshi", @@ -3892,31 +3881,11 @@ "label": "KalshiDemo", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.KalshiDemo(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Probable(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Baozi(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Myriad(\n api_key=\"YOUR_API_KEY\",\n wallet_address=\"YOUR_WALLET_ADDRESS\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Opinion(\n api_key=\"YOUR_API_KEY\",\n private_key=\"YOUR_PRIVATE_KEY\",\n proxy_address=\"YOUR_PROXY_ADDRESS\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Metaculus(\n api_token=\"YOUR_API_TOKEN\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, { "lang": "python", "label": "Smarkets", @@ -3937,31 +3906,16 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.GeminiTitan(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.SuiBets()\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Rain(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Hunch(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nbuilt = exchange.build_order(market_id=\"12345\", outcome_id=\"67890\", side=\"buy\", type=\"limit\", amount=10, price=0.55)\nresult = exchange.submit_order(built)" - }, { "lang": "javascript", "label": "Polymarket", "source": "import { Polymarket } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Polymarket({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n proxyAddress: \"YOUR_PROXY_ADDRESS\",\n signatureType: \"gnosis-safe\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" }, - { - "lang": "javascript", - "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Limitless({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, { "lang": "javascript", "label": "Kalshi", @@ -3972,31 +3926,11 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new KalshiDemo({\n apiKey: \"YOUR_API_KEY\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Probable({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Baozi({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Myriad({\n apiKey: \"YOUR_API_KEY\",\n walletAddress: \"YOUR_WALLET_ADDRESS\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Opinion({\n apiKey: \"YOUR_API_KEY\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n proxyAddress: \"YOUR_PROXY_ADDRESS\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Metaculus({\n apiToken: \"YOUR_API_TOKEN\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, { "lang": "javascript", "label": "Smarkets", @@ -4017,20 +3951,10 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new GeminiTitan({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new SuiBets();\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Rain({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Hunch({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst built = await exchange.buildOrder({ marketId: \"12345\", outcomeId: \"67890\", side: \"buy\", type: \"limit\", amount: 10, price: 0.55 });\nconst result = await exchange.submitOrder(built);" } ] } @@ -4041,7 +3965,27 @@ "operationId": "cancelOrder", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "opinion", + "metaculus", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." } ], "requestBody": { @@ -4129,16 +4073,6 @@ "label": "Probable", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Probable(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n passphrase=\"YOUR_PASSPHRASE\",\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.cancel_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Baozi(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.cancel_order(\"ord-001\")" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Myriad(\n api_key=\"YOUR_API_KEY\",\n wallet_address=\"YOUR_WALLET_ADDRESS\",\n)\nresult = exchange.cancel_order(\"ord-001\")" - }, { "lang": "python", "label": "Opinion", @@ -4169,21 +4103,11 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.GeminiTitan(\n api_key=\"YOUR_API_KEY\",\n api_secret=\"YOUR_API_SECRET\",\n)\nresult = exchange.cancel_order(\"ord-001\")" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.SuiBets()\nresult = exchange.cancel_order(\"ord-001\")" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Rain(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.cancel_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# Runs locally — never proxied through PMXT servers\nexchange = pmxt.Hunch(\n private_key=\"YOUR_PRIVATE_KEY\",\n)\nresult = exchange.cancel_order(\"ord-001\")" - }, { "lang": "javascript", "label": "Polymarket", @@ -4209,16 +4133,6 @@ "label": "Probable", "source": "import { Probable } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Probable({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n passphrase: \"YOUR_PASSPHRASE\",\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Baozi({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Myriad({\n apiKey: \"YOUR_API_KEY\",\n walletAddress: \"YOUR_WALLET_ADDRESS\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Opinion", @@ -4249,20 +4163,10 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new GeminiTitan({\n apiKey: \"YOUR_API_KEY\",\n apiSecret: \"YOUR_API_SECRET\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new SuiBets();\nconst result = await exchange.cancelOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Rain({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// Runs locally — never proxied through PMXT servers\nconst exchange = new Hunch({\n privateKey: \"YOUR_PRIVATE_KEY\",\n});\nconst result = await exchange.cancelOrder(\"ord-001\");" } ] } @@ -4273,7 +4177,24 @@ "operationId": "fetchOrder", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "probable", + "baozi", + "opinion", + "smarkets", + "polymarket_us", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -4316,11 +4237,6 @@ "label": "Polymarket", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Limitless", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, { "lang": "python", "label": "Kalshi", @@ -4341,21 +4257,11 @@ "label": "Baozi", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, { "lang": "python", "label": "Smarkets", @@ -4366,41 +4272,16 @@ "label": "PolymarketUS", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Hyperliquid", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, - { - "lang": "python", - "label": "GeminiTitan", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order(\"ord-001\")" - }, { "lang": "javascript", "label": "Polymarket", "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "Limitless", - "source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Kalshi", @@ -4421,21 +4302,11 @@ "label": "Baozi", "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Smarkets", @@ -4446,30 +4317,10 @@ "label": "PolymarketUS", "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" }, - { - "lang": "javascript", - "label": "Hyperliquid", - "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, - { - "lang": "javascript", - "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrder(\"ord-001\");" } ] } @@ -4480,7 +4331,28 @@ "operationId": "fetchOpenOrders", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -4561,11 +4433,6 @@ "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" - }, { "lang": "python", "label": "Smarkets", @@ -4586,21 +4453,11 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_open_orders(\"12345\")" - }, { "lang": "javascript", "label": "Polymarket", @@ -4641,11 +4498,6 @@ "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" - }, { "lang": "javascript", "label": "Smarkets", @@ -4666,20 +4518,10 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOpenOrders(\"12345\");" } ] } @@ -4690,7 +4532,26 @@ "operationId": "fetchMyTrades", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "myriad", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -4804,11 +4665,6 @@ "label": "Probable", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Myriad", @@ -4819,11 +4675,6 @@ "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Smarkets", @@ -4839,26 +4690,11 @@ "label": "Hyperliquid", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "GeminiTitan", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_my_trades(\n outcome_id=\"67890\",\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "javascript", "label": "Polymarket", @@ -4884,11 +4720,6 @@ "label": "Probable", "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Myriad", @@ -4899,11 +4730,6 @@ "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Smarkets", @@ -4919,25 +4745,10 @@ "label": "Hyperliquid", "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchMyTrades({\n outcomeId: \"67890\",\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" } ] } @@ -4948,7 +4759,23 @@ "operationId": "fetchClosedOrders", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "kalshi", + "kalshi-demo", + "limitless", + "opinion", + "smarkets", + "hyperliquid", + "gemini-titan", + "rain" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -5028,11 +4855,6 @@ "description": "Fetch authenticated closed orders.", "security": [], "x-codeSamples": [ - { - "lang": "python", - "label": "Polymarket", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Limitless", @@ -5048,41 +4870,16 @@ "label": "KalshiDemo", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Smarkets", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "PolymarketUS", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Hyperliquid", @@ -5093,26 +4890,11 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Rain", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_closed_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "javascript", - "label": "Polymarket", - "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Limitless", @@ -5128,41 +4910,16 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Smarkets", "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "PolymarketUS", - "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Hyperliquid", @@ -5173,20 +4930,10 @@ "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Rain", "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchClosedOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" } ] } @@ -5197,7 +4944,22 @@ "operationId": "fetchAllOrders", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "kalshi", + "kalshi-demo", + "limitless", + "opinion", + "smarkets", + "hyperliquid", + "gemini-titan" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -5277,11 +5039,6 @@ "description": "Fetch authenticated order history across open and closed orders.", "security": [], "x-codeSamples": [ - { - "lang": "python", - "label": "Polymarket", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Limitless", @@ -5297,41 +5054,16 @@ "label": "KalshiDemo", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Probable", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Baozi", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Myriad", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Smarkets", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "PolymarketUS", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUS(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, { "lang": "python", "label": "Hyperliquid", @@ -5342,26 +5074,6 @@ "label": "GeminiTitan", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Rain", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Rain(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "python", - "label": "Hunch", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hunch(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_all_orders(\n market_id=\"12345\",\n since=\"2026-01-01T00:00:00Z\",\n until=\"2026-01-31T00:00:00Z\",\n limit=10,\n cursor=\"abc123\",\n)" - }, - { - "lang": "javascript", - "label": "Polymarket", - "source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Limitless", @@ -5377,41 +5089,16 @@ "label": "KalshiDemo", "source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Probable", - "source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Baozi", - "source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Myriad", - "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Smarkets", "source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" }, - { - "lang": "javascript", - "label": "PolymarketUS", - "source": "import { PolymarketUS } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUS({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, { "lang": "javascript", "label": "Hyperliquid", @@ -5421,21 +5108,6 @@ "lang": "javascript", "label": "GeminiTitan", "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Rain", - "source": "import { Rain } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Rain({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" - }, - { - "lang": "javascript", - "label": "Hunch", - "source": "import { Hunch } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hunch({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchAllOrders({\n marketId: \"12345\",\n since: \"2026-01-01T00:00:00Z\",\n until: \"2026-01-31T00:00:00Z\",\n limit: 10,\n cursor: \"abc123\",\n});" } ] } @@ -5446,7 +5118,30 @@ "operationId": "fetchPositions", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "opinion", + "smarkets", + "polymarket_us", + "hyperliquid", + "gemini-titan", + "suibets", + "rain", + "hunch" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -5527,11 +5222,6 @@ "label": "Opinion", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_positions(address=\"0x1111111111111111111111111111111111111111\")" }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_positions(address=\"0x1111111111111111111111111111111111111111\")" - }, { "lang": "python", "label": "Smarkets", @@ -5607,11 +5297,6 @@ "label": "Opinion", "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchPositions(\"0x1111111111111111111111111111111111111111\");" }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchPositions(\"0x1111111111111111111111111111111111111111\");" - }, { "lang": "javascript", "label": "Smarkets", @@ -5656,7 +5341,27 @@ "operationId": "fetchBalance", "parameters": [ { - "$ref": "#/components/parameters/ExchangeParam" + "in": "path", + "name": "exchange", + "schema": { + "type": "string", + "enum": [ + "polymarket", + "kalshi", + "kalshi-demo", + "limitless", + "probable", + "baozi", + "myriad", + "smarkets", + "polymarket_us", + "hyperliquid", + "rain", + "hunch" + ] + }, + "required": true, + "description": "The prediction market exchange to target." }, { "in": "query", @@ -5732,16 +5437,6 @@ "label": "Myriad", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" }, - { - "lang": "python", - "label": "Opinion", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" - }, - { - "lang": "python", - "label": "Metaculus", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" - }, { "lang": "python", "label": "Smarkets", @@ -5757,16 +5452,6 @@ "label": "Hyperliquid", "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" }, - { - "lang": "python", - "label": "GeminiTitan", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" - }, - { - "lang": "python", - "label": "SuiBets", - "source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.SuiBets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_balance(address=\"0x1111111111111111111111111111111111111111\")" - }, { "lang": "python", "label": "Rain", @@ -5812,16 +5497,6 @@ "label": "Myriad", "source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" }, - { - "lang": "javascript", - "label": "Opinion", - "source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" - }, - { - "lang": "javascript", - "label": "Metaculus", - "source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" - }, { "lang": "javascript", "label": "Smarkets", @@ -5837,16 +5512,6 @@ "label": "Hyperliquid", "source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" }, - { - "lang": "javascript", - "label": "GeminiTitan", - "source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" - }, - { - "lang": "javascript", - "label": "SuiBets", - "source": "import { SuiBets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new SuiBets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchBalance(\"0x1111111111111111111111111111111111111111\");" - }, { "lang": "javascript", "label": "Rain", diff --git a/docs/concepts/venues.mdx b/docs/concepts/venues.mdx index 87a56ec1..9ec7bf3a 100644 --- a/docs/concepts/venues.mdx +++ b/docs/concepts/venues.mdx @@ -7,7 +7,7 @@ description: "Every venue PMXT currently speaks." AUTO-GENERATED from pmxt-core's openapi spec (ExchangeParam enum). Do not edit by hand — run `npm run generate:mintlify` to regenerate. Source: docs/api-reference/openapi.json - pmxt-core version at last sync: 2.51.4 + pmxt-core version at last sync: 2.17.1 */} PMXT currently supports the following venue targets. The **wire key** is diff --git a/docs/docs.json b/docs/docs.json index 29c878b4..dbdb4b93 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -216,7 +216,8 @@ { "group": "Other", "pages": [ - "GET /api/{exchange}/fetchSeries" + "GET /api/{exchange}/fetchSeries", + "GET /api/{exchange}/fetchEventMetadata" ], "openapi": "api-reference/openapi.json" }, diff --git a/docs/llms-full.txt b/docs/llms-full.txt index d7212c4a..62391cd6 100644 --- a/docs/llms-full.txt +++ b/docs/llms-full.txt @@ -6134,6 +6134,41 @@ const result = await exchange.fetchSeries(); ``` +### Fetch Event Metadata + +`GET /api/{exchange}/fetchEventMetadata` + +Fetch venue-native metadata for a specific event when the exchange exposes a dedicated metadata endpoint. Kalshi implements this for `GET /events/{event_ticker}/metadata`. + +| Parameter | Type | Required | Description | +| --- | --- | --- | --- | +| `eventTicker` | string | Yes | | + +**Response:** `{ success: true, data: ... }` + +**Python:** +```python +import pmxt + +# API key optional — enables faster catalog-backed lookups +exchange = pmxt.Kalshi( + pmxt_api_key="YOUR_PMXT_API_KEY", +) +result = exchange.fetch_event_metadata(event_ticker="value") +``` + +**TypeScript:** +```typescript +import { Kalshi } from "pmxtjs"; + +// API key optional — enables faster catalog-backed lookups +const exchange = new Kalshi({ + pmxtApiKey: "YOUR_PMXT_API_KEY", +}); +const result = await exchange.fetchEventMetadata({ eventTicker: "value" }); +``` + + ## Enterprise diff --git a/docs/llms.txt b/docs/llms.txt index f78c573d..eec8d298 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -75,6 +75,7 @@ GitHub: https://github.com/pmxt-dev/pmxt - [Fetch Oracle History](https://pmxt.dev/docs/api-reference/feedFetchOracleHistory): Returns historical Chainlink oracle rounds for a price feed. - [Fetch Historical Prices](https://pmxt.dev/docs/api-reference/feedFetchHistoricalPrices): Returns historical price data as tickers within a time range. - [Fetch Series](https://pmxt.dev/docs/api-reference/fetchSeries): Fetch the recurring series (fourth tier above Event -> Market -> Outcome) that this venue exposes. Returns an empty array on venues without a series concept (Limitless, Smarkets, Probable, Metaculus, Baozi, Hyperliquid, SuiBets, Polymarket US). - `params.id` -> a single matching series with its events populated where supported. - no params -> the full list, typically without nested events for payload size. +- [Fetch Event Metadata](https://pmxt.dev/docs/api-reference/fetchEventMetadata): Fetch venue-native metadata for a specific event when the exchange exposes a dedicated metadata endpoint. Kalshi implements this for `GET /events/{event_ticker}/metadata`. - [Execute a read-only SQL query against ClickHouse](https://pmxt.dev/docs/api-reference/postV0Sql) ## Full documentation diff --git a/sdks/python/API_REFERENCE.md b/sdks/python/API_REFERENCE.md index 48e401fb..44a18595 100644 --- a/sdks/python/API_REFERENCE.md +++ b/sdks/python/API_REFERENCE.md @@ -347,6 +347,31 @@ exchange.fetch_event() ``` +--- +### `fetch_event_metadata` + +Fetch venue-native metadata for a specific event when the exchange + + +**Signature:** + +```python +def fetch_event_metadata(event_ticker: str) -> Dict[str, unknown]: +``` + +**Parameters:** + +- `event_ticker` (str): eventTicker + +**Returns:** Dict[str, unknown] - Result + +**Example:** + +```python +exchange.fetch_event_metadata(event_ticker="...") +``` + + --- ### `fetch_ohlcv` diff --git a/sdks/python/pmxt/client.py b/sdks/python/pmxt/client.py index 6087a207..dcf32247 100644 --- a/sdks/python/pmxt/client.py +++ b/sdks/python/pmxt/client.py @@ -1471,6 +1471,26 @@ def fetch_event(self, params: Optional[dict] = None, **kwargs) -> UnifiedEvent: except ApiException as e: raise self._parse_api_exception(e) from None + def fetch_event_metadata(self, event_ticker: str) -> Dict[str, Any]: + try: + args = [] + args.append(event_ticker) + body: dict = {"args": args} + creds = self._get_credentials_dict() + if creds: + body["credentials"] = creds + url = f"{self._resolve_sidecar_host()}/api/{self.exchange_name}/fetchEventMetadata" + headers = {"Content-Type": "application/json", "Accept": "application/json"} + headers.update(self._get_auth_headers()) + response = self._fetch_with_retry( + lambda: self._api_client.call_api(method="POST", url=url, body=body, header_params=headers) + ) + response.read() + data = self._handle_response(json.loads(response.data)) + return data + except ApiException as e: + raise self._parse_api_exception(e) from None + def fetch_order_book(self, outcome_id: Union[str, "MarketOutcome"] = _UNSET, limit: Optional[float] = None, params: Optional[FetchOrderBookParams] = None, **kwargs) -> Union[OrderBook, List[OrderBook]]: try: args = [] diff --git a/sdks/typescript/API_REFERENCE.md b/sdks/typescript/API_REFERENCE.md index 7676b324..79ec1a85 100644 --- a/sdks/typescript/API_REFERENCE.md +++ b/sdks/typescript/API_REFERENCE.md @@ -349,6 +349,31 @@ await exchange.fetchEvent() ``` +--- +### `fetchEventMetadata` + +Fetch venue-native metadata for a specific event when the exchange + + +**Signature:** + +```typescript +async fetchEventMetadata(eventTicker: string): Promise> +``` + +**Parameters:** + +- `eventTicker` (string): eventTicker + +**Returns:** Promise> - Result + +**Example:** + +```typescript +await exchange.fetchEventMetadata("...") +``` + + --- ### `fetchOHLCV` diff --git a/sdks/typescript/pmxt/client.ts b/sdks/typescript/pmxt/client.ts index 057cf1e3..41eadab9 100644 --- a/sdks/typescript/pmxt/client.ts +++ b/sdks/typescript/pmxt/client.ts @@ -1164,6 +1164,31 @@ export abstract class Exchange { } } + async fetchEventMetadata(eventTicker: string): Promise> { + await this.initPromise; + try { + const args: any[] = []; + args.push(eventTicker); + const response = await this.fetchWithRetry(`${this.resolveBaseUrl()}/api/${this.exchangeName}/fetchEventMetadata`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', ...this.getAuthHeaders() }, + body: JSON.stringify({ args, credentials: this.getCredentials() }), + }); + if (!response.ok) { + const body = await response.json().catch(() => ({})); + if (body.error && typeof body.error === "object") { + throw fromServerError(body.error); + } + throw new PmxtError(body.error?.message || response.statusText); + } + const json = await response.json(); + return this.handleResponse(json); + } catch (error) { + if (error instanceof PmxtError) throw error; + throw new PmxtError(`Failed to fetchEventMetadata: ${error}`); + } + } + async fetchOrderBook(outcomeId: string | MarketOutcome, limit?: number, params?: FetchOrderBookParams): Promise { await this.initPromise; try { diff --git a/sdks/typescript/scripts/generate-client-methods.js b/sdks/typescript/scripts/generate-client-methods.js index d32faf2b..7eed6d61 100644 --- a/sdks/typescript/scripts/generate-client-methods.js +++ b/sdks/typescript/scripts/generate-client-methods.js @@ -381,6 +381,9 @@ function buildReturnLines(config) { case 'single': return `${i}const data = this.handleResponse(json);\n${i}return ${converter}(data);`; case 'record': + if (!converter) { + return `${i}return this.handleResponse(json);`; + } return [ `${i}const data = this.handleResponse(json);`, `${i}const result: ${config.returnTs} = {};`,