Price a size across the legs of an approved cross-venue market link
Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan.
Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned.
A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400.
Auth & scope. Requires trade:read for provider.
GET
/
orders
/
route-quote
Price a size across the legs of an approved cross-venue market link
Why planning stopped. below_minimum means every venue leg fell under its venue's minimum order (Polymarket $1.00, Predict.fun 0.90 USD, Hyperliquid its configured USDC minimum), so nothing was planned; each exclusion is a notes entry ending minimum order — leg excluded.
A venue the caller cannot route to that would have filled the whole request at a strictly lower fee-inclusive price. Today only a Kalshi leg for an account with no Kalshi credential (reason: not_connected); null when no such venue beats the plan, or its book is not fresh. The plan itself never includes that venue.
Show child attributes
Was this page helpful?
⌘I
Price a size across the legs of an approved cross-venue market link
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Kairos","colors":{"primary":"#807dfe","light":"#6d6ae0","dark":"#a5a3ff"},"logo":{"light":"https://mintcdn.com/kairos-c5456474/JzYk92-enXUuMl0B/logo/kairos-wing.png?fit=max\u0026auto=format\u0026n=JzYk92-enXUuMl0B\u0026q=85\u0026s=c7c397bb87847c7f0e27019d68594bff","dark":"https://mintcdn.com/kairos-c5456474/JzYk92-enXUuMl0B/logo/wordmark.png?fit=max\u0026auto=format\u0026n=JzYk92-enXUuMl0B\u0026q=85\u0026s=8f2796ccf6273359a7ad0713bc86686d"},"favicon":"https://mintcdn.com/kairos-c5456474/JzYk92-enXUuMl0B/logo/kairos-wing.png?fit=max\u0026auto=format\u0026n=JzYk92-enXUuMl0B\u0026q=85\u0026s=c7c397bb87847c7f0e27019d68594bff","appearance":{"default":"dark"},"background":{"color":{"light":"#ffffff","dark":"#0a0a0f"}},"navbar":{"primary":{"type":"button","label":"Launch App","href":"https://app.kairos.trade"}},"contextual":{"options":["copy","view","download-spec","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kairos-c5456474","hasAudioNarration":false,"actualSubdomain":"kairos-c5456474","customDomains":["docs.kairos.trade"],"gitSource":{"type":"github","owner":"kairoslive","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aead0641411fefa89136024","collectionId":"4b502bda-1c32-4823-b83c-8b1fef053274","liveDeploymentHistoryId":"6aead0641411fefa89136024","schemaVersion":"v3"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aead0641411fefa89136024","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":139},{"language":"default","tag":"Data API","count":77},{"language":"default","tag":"Execution API","count":53},{"language":"default","tag":"Partner API","count":36},{"language":"default","tag":"Trading API","count":27},{"language":"default","tag":"Markets","count":20},{"language":"default","tag":"Sports","count":20},{"language":"default","tag":"Endpoints","count":19},{"language":"default","tag":"Documentation","count":18},{"language":"default","tag":"Market Data","count":17}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link","slug":"/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link","pageMetadata":{"title":"Price a size across the legs of an approved cross-venue market link","description":"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. `POST /orders/route-buy` executes the same plan.\nRoutable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in `cheaper_elsewhere` with `reason: not_connected`; it is never planned.\n**A plan that cannot be built is still a `200`** with `routed: false` — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are `400`.\n**Auth \u0026 scope.** Requires `trade:read` for `provider`.","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/route-quote","href":"/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. \", _jsx(_components.code, {\n children: \"POST /orders/route-buy\"\n }), \" executes the same plan.\\nRoutable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in \", _jsx(_components.code, {\n children: \"cheaper_elsewhere\"\n }), \" with \", _jsx(_components.code, {\n children: \"reason: not_connected\"\n }), \"; it is never planned.\\n\", _jsxs(_components.strong, {\n children: [\"A plan that cannot be built is still a \", _jsx(_components.code, {\n children: \"200\"\n })]\n }), \" with \", _jsx(_components.code, {\n children: \"routed: false\"\n }), \" — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are \", _jsx(_components.code, {\n children: \"400\"\n }), \".\\n\", _jsx(_components.strong, {\n children: \"Auth \u0026 scope.\"\n }), \" Requires \", _jsx(_components.code, {\n children: \"trade:read\"\n }), \" for \", _jsx(_components.code, {\n children: \"provider\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Price a size across the legs of an approved cross-venue market link","description":"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. `POST /orders/route-buy` executes the same plan.\nRoutable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in `cheaper_elsewhere` with `reason: not_connected`; it is never planned.\n**A plan that cannot be built is still a `200`** with `routed: false` — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are `400`.\n**Auth \u0026 scope.** Requires `trade:read` for `provider`.","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/route-quote","href":"/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getRouteQuote","summary":"Price a size across the legs of an approved cross-venue market link","description":"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. `POST /orders/route-buy` executes the same plan.\nRoutable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in `cheaper_elsewhere` with `reason: not_connected`; it is never planned.\n**A plan that cannot be built is still a `200`** with `routed: false` — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are `400`.\n**Auth \u0026 scope.** Requires `trade:read` for `provider`.","tags":["Routing"],"x-kairos-auth":"api-key","x-kairos-scope":"trade:read","parameters":["ee63cfbf-5125-40a5-8014-bdb46cfbb290","4d18a425-d30b-47ef-8dd3-c3035c9bed38","b4086320-b137-4cc9-ad25-57a56e544ab4","fb45a73c-e75b-41dc-b7c3-430889a26ff9","218e712d-2221-4f6a-9b0b-51963bb79ba4"],"responses":{"200":"ec83c86c-f8bb-44e0-92c6-f31b4b2429db","400":"6c1266dd-2280-4601-9af0-a528ad5fc100","401":"22aad4f0-58fe-42c5-80e4-bd42ff235f5d","403":"4efdeb1f-63cc-4f7a-afe0-3425fbc0fdb4","503":"c507702f-ef46-49ed-9970-bb7cd4be2d30"},"method":"get","type":"path","servers":["14ad5dad-959f-4754-b278-f3166a52ce15","a1097607-7978-4620-a08a-e8a961b51eda","9a96d8a5-159c-40d8-b0da-4aa569493567","cdb106b6-1f16-4bfe-8d77-0e45e4c349b1"],"security":["b6eddfb0-cb5b-4841-a06b-b5a704e83540"],"path":"/orders/route-quote","baseUrlOptions":["https://execution.kairos.trade","https://eu-west-1-polymarket.executor.kairos.trade","https://ap-northeast-1-predictfun.executor.kairos.trade","https://staging-execution.kairos.trade"],"title":"Price a size across the legs of an approved cross-venue market link","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ee63cfbf-5125-40a5-8014-bdb46cfbb290":{"name":"provider","in":"query","required":true,"description":"The venue you are quoting from; any leg of the link, routable or not.","schema":{"type":"string","example":"polymarket","isRequired":true,"description":"The venue you are quoting from; any leg of the link, routable or not.","uniqueKey":"","typeLabel":"string"}},"4d18a425-d30b-47ef-8dd3-c3035c9bed38":{"name":"market_id","in":"query","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"b4086320-b137-4cc9-ad25-57a56e544ab4":{"name":"side","in":"query","required":true,"description":"`yes` or `no`, case-insensitive.","schema":{"type":"string","enum":["yes","no"],"isRequired":true,"description":"`yes` or `no`, case-insensitive.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"fb45a73c-e75b-41dc-b7c3-430889a26ff9":{"name":"quantity","in":"query","required":true,"description":"Decimal string, must be > 0.","schema":{"type":"string","example":"100","isRequired":true,"description":"Decimal string, must be > 0.","uniqueKey":"","typeLabel":"string"}},"218e712d-2221-4f6a-9b0b-51963bb79ba4":{"name":"slippage_cents","in":"query","required":false,"description":"Must be in `[1, 99]` if provided.","schema":{"type":"integer","isRequired":false,"description":"Must be in `[1, 99]` if provided.","uniqueKey":"","typeLabel":"integer"}}},"responses":{"ec83c86c-f8bb-44e0-92c6-f31b4b2429db":{"description":"The routing plan (check `routed`).","content":{"application/json":{"schema":{"type":"object","description":"Response for `GET /orders/route-quote`. A quote that cannot be routed is still a `200` with `routed` set false — check the flag, not the status code.","required":["routed","notes","legs","requested","planned","unfilled"],"properties":{"routed":{"type":"boolean","isRequired":true,"uniqueKey":"routed","typeLabel":"boolean"},"notes":{"type":"array","items":{"type":"string","uniqueKey":"notes.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"notes","typeLabel":"string[]"},"legs":{"type":"array","items":{"type":"object","required":["provider","market_id","token_id","quantity","limit_price","effective_limit","est_notional","est_fee","below_min_notional"],"properties":{"provider":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].provider","typeLabel":"string"},"market_id":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].market_id","typeLabel":"string"},"token_id":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].token_id","typeLabel":"string"},"quantity":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].quantity","typeLabel":"string"},"limit_price":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].limit_price","typeLabel":"string"},"effective_limit":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].effective_limit","typeLabel":"string"},"est_notional":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].est_notional","typeLabel":"string"},"est_fee":{"type":"string","isRequired":true,"uniqueKey":"legs.items.[INDEX].est_fee","typeLabel":"string"},"below_min_notional":{"type":"boolean","isRequired":true,"uniqueKey":"legs.items.[INDEX].below_min_notional","typeLabel":"boolean"}},"uniqueKey":"legs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"legs","typeLabel":"object[]"},"requested":{"type":"string","isRequired":true,"uniqueKey":"requested","typeLabel":"string"},"planned":{"type":"string","isRequired":true,"uniqueKey":"planned","typeLabel":"string"},"unfilled":{"type":"string","isRequired":true,"uniqueKey":"unfilled","typeLabel":"string"},"link_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"link_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"link_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"link_id","typeLabel":"string\u003cuuid> | null"},"link_title":{"oneOf":[{"type":"string","uniqueKey":"link_title.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"link_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"link_title","typeLabel":"string | null"},"blended_effective":{"oneOf":[{"type":"string","uniqueKey":"blended_effective.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"blended_effective.oneOf.1","typeLabel":"null"}],"uniqueKey":"blended_effective","typeLabel":"string | null"},"stop":{"oneOf":[{"type":"string","description":"Why planning stopped. `below_minimum` means every venue leg fell under its venue's minimum order (Polymarket $1.00, Predict.fun 0.90 USD, Hyperliquid its configured USDC minimum), so nothing was planned; each exclusion is a `notes` entry ending `minimum order — leg excluded`.","enum":["filled","exhausted","effective_cap","below_minimum"],"uniqueKey":"stop.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Why planning stopped. `below_minimum` means every venue leg fell under its venue's minimum order (Polymarket $1.00, Predict.fun 0.90 USD, Hyperliquid its configured USDC minimum), so nothing was planned; each exclusion is a `notes` entry ending `minimum order — leg excluded`.","enum":["filled","exhausted","effective_cap","below_minimum"],"uniqueKey":"stop.oneOf.1","typeLabel":"null"}],"uniqueKey":"stop","typeLabel":"enum\u003cstring> | null"},"cheaper_elsewhere":{"oneOf":[{"type":"object","description":"A venue the caller cannot route to that would have filled the whole request at a strictly lower fee-inclusive price. Today only a Kalshi leg for an account with no Kalshi credential (`reason: not_connected`); `null` when no such venue beats the plan, or its book is not fresh. The plan itself never includes that venue.","required":["provider","blended_effective","delta_per_share","reason"],"properties":{"provider":{"type":"string","example":"kalshi","isRequired":true,"uniqueKey":"cheaper_elsewhere.oneOf.0.provider","typeLabel":"string"},"blended_effective":{"type":"string","description":"Decimal string; the venue's fee-inclusive price per share for the requested quantity.","isRequired":true,"uniqueKey":"cheaper_elsewhere.oneOf.0.blended_effective","typeLabel":"string"},"delta_per_share":{"type":"string","description":"Decimal string; the plan's `blended_effective` minus this venue's. Always positive.","isRequired":true,"uniqueKey":"cheaper_elsewhere.oneOf.0.delta_per_share","typeLabel":"string"},"reason":{"type":"string","enum":["not_connected"],"isRequired":true,"uniqueKey":"cheaper_elsewhere.oneOf.0.reason","typeLabel":"enum\u003cstring>"}},"uniqueKey":"cheaper_elsewhere.oneOf.0","typeLabel":"object"},{"type":"null","description":"A venue the caller cannot route to that would have filled the whole request at a strictly lower fee-inclusive price. Today only a Kalshi leg for an account with no Kalshi credential (`reason: not_connected`); `null` when no such venue beats the plan, or its book is not fresh. The plan itself never includes that venue.","uniqueKey":"cheaper_elsewhere.oneOf.1","typeLabel":"null"}],"uniqueKey":"cheaper_elsewhere","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"routed":true,"notes":["\u003cstring>"],"legs":[{"provider":"\u003cstring>","market_id":"\u003cstring>","token_id":"\u003cstring>","quantity":"\u003cstring>","limit_price":"\u003cstring>","effective_limit":"\u003cstring>","est_notional":"\u003cstring>","est_fee":"\u003cstring>","below_min_notional":true}],"requested":"\u003cstring>","planned":"\u003cstring>","unfilled":"\u003cstring>","link_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","link_title":"\u003cstring>","blended_effective":"\u003cstring>","stop":"filled","cheaper_elsewhere":{"provider":"kalshi","blended_effective":"\u003cstring>","delta_per_share":"\u003cstring>","reason":"not_connected"}}}},"exampleType":"generated"}},"exampleType":"generated"},"6c1266dd-2280-4601-9af0-a528ad5fc100":{"description":"`slippage_cents` outside `[1, 99]`, invalid `side`, non-positive `quantity`, or a malformed authenticated user id. Empty body (status code only).","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"22aad4f0-58fe-42c5-80e4-bd42ff235f5d":{"description":"No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","example":"Unauthorized","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Unauthorized"}}},"exampleType":"generated"}},"exampleType":"generated"},"4efdeb1f-63cc-4f7a-afe0-3425fbc0fdb4":{"description":"Missing `trade:read` scope, or API-key access to `provider` is disabled. Empty body (status code only).","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"c507702f-ef46-49ed-9970-bb7cd4be2d30":{"description":"API-key access to `provider` could not be checked (fails closed). Empty body (status code only).","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"b6eddfb0-cb5b-4841-a06b-b5a704e83540":{"apiKeyClientId":{"type":"apiKey","in":"header","name":"X-Client-Id","description":"Credential client id (`kairos_ck_...`). Must be sent together with X-Api-Key and X-Api-Secret.","scopes":[],"schemeName":"apiKeyClientId"},"apiKeyKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"64-char hex API key.","scopes":[],"schemeName":"apiKeyKey"},"apiKeySecret":{"type":"apiKey","in":"header","name":"X-Api-Secret","description":"64-char hex API secret.","scopes":[],"schemeName":"apiKeySecret"}}},"servers":{"14ad5dad-959f-4754-b278-f3166a52ce15":{"url":"https://execution.kairos.trade","description":"Production (central primary, us-east-1)"},"a1097607-7978-4620-a08a-e8a961b51eda":{"url":"https://eu-west-1-polymarket.executor.kairos.trade","description":"Production regional execution node — Ireland, colocated with Polymarket. Same API surface; assigned at onboarding."},"9a96d8a5-159c-40d8-b0da-4aa569493567":{"url":"https://ap-northeast-1-predictfun.executor.kairos.trade","description":"Production regional execution node — Tokyo, colocated with Predict.fun. Same API surface; assigned at onboarding."},"cdb106b6-1f16-4bfe-8d77-0e45e4c349b1":{"url":"https://staging-execution.kairos.trade","description":"Staging"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Client-Id","description":"Credential client id (`kairos_ck_...`). Must be sent together with X-Api-Key and X-Api-Secret.","scopes":[],"schemeName":"apiKeyClientId"},"schema":{"title":"X-Client-Id","type":"string","description":"Credential client id (`kairos_ck_...`). Must be sent together with X-Api-Key and X-Api-Secret.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyClientId","name":"X-Client-Id"},{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"64-char hex API key.","scopes":[],"schemeName":"apiKeyKey"},"schema":{"title":"X-Api-Key","type":"string","description":"64-char hex API key.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyKey","name":"X-Api-Key"},{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Secret","description":"64-char hex API secret.","scopes":[],"schemeName":"apiKeySecret"},"schema":{"title":"X-Api-Secret","type":"string","description":"64-char hex API secret.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeySecret","name":"X-Api-Secret"}],"title":"apiKeyClientId \u0026 apiKeyKey \u0026 apiKeySecret"}]},"originalFileLocation":"openapi/execution.yaml"},"subdomain":"kairos-c5456474","siteName":"Kairos","title":"Price a size across the legs of an approved cross-venue market link - Kairos","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T06:31:20.360Z","originalFileLocation":"api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan. Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned. A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400. Auth \u0026amp; scope. Requires trade:read for provider.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kairos\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Price a size across the legs of an approved cross-venue market link - Kairos\">\u003cmeta data-mint-head property=\"og:description\" content=\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan. Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned. A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400. Auth \u0026amp; scope. Requires trade:read for provider.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kairos\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kairos-c5456474.mintlify.app/_mintlify/api/og/v2?division=Routing\u0026amp;title=Price+a+size+across+the+legs+of+an+approved+cross-venue+market+link\u0026amp;description=Plans+a+buy+across+the+venues+of+an+approved+market+link+the+caller+can+route+to+and+returns+the+per-leg+sizes%2C+limit+prices+and+fee+estimates+it+would+use%2C+wit\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=27ddf9a8c107f34948a7da2d4963fda0fc8a9c2dc10504db6bc0ef3796be92d0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Price a size across the legs of an approved cross-venue market link - Kairos\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan. Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned. A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400. Auth \u0026amp; scope. Requires trade:read for provider.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kairos-c5456474.mintlify.app/_mintlify/api/og/v2?division=Routing\u0026amp;title=Price+a+size+across+the+legs+of+an+approved+cross-venue+market+link\u0026amp;description=Plans+a+buy+across+the+venues+of+an+approved+market+link+the+caller+can+route+to+and+returns+the+per-leg+sizes%2C+limit+prices+and+fee+estimates+it+would+use%2C+wit\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=27ddf9a8c107f34948a7da2d4963fda0fc8a9c2dc10504db6bc0ef3796be92d0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kairos-c5456474/9YOcCIzMBy0Rv1b-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kairos\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#807dfe\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kairos.trade/#organization\",\"name\":\"Kairos\",\"url\":\"https://docs.kairos.trade\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kairos-c5456474/JzYk92-enXUuMl0B/logo/kairos-wing.png?fit=max\u0026auto=format\u0026n=JzYk92-enXUuMl0B\u0026q=85\u0026s=c7c397bb87847c7f0e27019d68594bff\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kairos.trade#website\",\"name\":\"Kairos\",\"url\":\"https://docs.kairos.trade\",\"publisher\":{\"@id\":\"https://docs.kairos.trade/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link#webpage\",\"url\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link\",\"name\":\"Price a size across the legs of an approved cross-venue market link\",\"description\":\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan. Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned. A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400. Auth \u0026 scope. Requires trade:read for provider.\",\"dateModified\":\"2026-10-29T06:31:20.360Z\",\"isPartOf\":{\"@id\":\"https://docs.kairos.trade#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Execution API\",\"item\":\"https://docs.kairos.trade/api-reference/execution/synthetic-books/create-or-join-a-synthetic-book-definition\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Price a size across the legs of an approved cross-venue market link\",\"item\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link#apireference\",\"headline\":\"Price a size across the legs of an approved cross-venue market link\",\"name\":\"Price a size across the legs of an approved cross-venue market link\",\"description\":\"Plans a buy across the venues of an approved market link the caller can route to and returns the per-leg sizes, limit prices and fee estimates it would use, without submitting anything. POST /orders/route-buy executes the same plan. Routable legs are per caller: Polymarket and Predict.fun always, Hyperliquid when routing is enabled, Kalshi only for an account with a Kalshi credential connected. A Kalshi leg that would have filled the request at a strictly lower fee-inclusive price than the plan is reported in cheaper_elsewhere with reason: not_connected; it is never planned. A plan that cannot be built is still a 200 with routed: false — no approved link for this market, sources unavailable, or no routable leg with a live book. Only caller-input errors are 400. Auth \u0026 scope. Requires trade:read for provider.\",\"url\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kairos.trade/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link#webpage\"},\"dateModified\":\"2026-10-29T06:31:20.360Z\",\"publisher\":{\"@id\":\"https://docs.kairos.trade/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kairos.trade#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kairos\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kairos","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Partner API","pages":[{"title":"Partner API","href":"/wallets/overview"}]},{"tab":"Trading API","pages":[{"title":"Trading API","href":"/guides/order-types"}]},{"tab":"Market Data","pages":[{"title":"Market Data","href":"/market-data/overview"}]},{"tab":"API Reference","groups":[{"group":"Overview","icon":"book","pages":[{"title":"API Reference","icon":"book","href":"/api-reference"}]},{"group":"Market Data API","icon":"database","pages":[{"group":"Status","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /health","href":"/api-reference/market-data/status/liveness-probe"},{"title":"Readiness probe","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /ready","href":"/api-reference/market-data/status/readiness-probe"}]},{"group":"Markets","pages":[{"title":"Get one market's metadata","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/markets/{provider}/{market_id}","href":"/api-reference/market-data/markets/get-one-markets-metadata"},{"title":"Fetch multiple markets by id, one provider at a time","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml post /v1/markets/batch","href":"/api-reference/market-data/markets/fetch-multiple-markets-by-id-one-provider-at-a-time"},{"title":"Resolve venue-specific identifiers to canonical Kairos market ids","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml post /v1/market-identifiers/resolve","href":"/api-reference/market-data/markets/resolve-venue-specific-identifiers-to-canonical-kairos-market-ids"},{"title":"Paginate active markets for one provider","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/markets","href":"/api-reference/market-data/markets/paginate-active-markets-for-one-provider"},{"title":"Current valid tick grid for one market","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/markets/tick-size","href":"/api-reference/market-data/markets/current-valid-tick-grid-for-one-market"},{"title":"Current tick grids for up to 200 markets of one provider","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml post /v1/markets/tick-size/batch","href":"/api-reference/market-data/markets/current-tick-grids-for-up-to-200-markets-of-one-provider"}]},{"group":"Resolutions","pages":[{"title":"Batch resolution fractions for up to 200 markets","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/resolutions","href":"/api-reference/market-data/resolutions/batch-resolution-fractions-for-up-to-200-markets"},{"title":"Current resolution lifecycle snapshot for one market","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/markets/{provider}/{market_id}/resolution","href":"/api-reference/market-data/resolutions/current-resolution-lifecycle-snapshot-for-one-market"},{"title":"Full resolution lifecycle timeline for one market","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/markets/{provider}/{market_id}/resolution/events","href":"/api-reference/market-data/resolutions/full-resolution-lifecycle-timeline-for-one-market"}]},{"group":"Marks","pages":[{"title":"Latest mark (last trade price) for up to 200 contract/token pairs","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/marks","href":"/api-reference/market-data/marks/latest-mark-last-trade-price-for-up-to-200-contracttoken-pairs"}]},{"group":"Candles","pages":[{"title":"Get a single OHLCV candle series","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/candles","href":"/api-reference/market-data/candles/get-a-single-ohlcv-candle-series"},{"title":"Get up to 200 candle series in one request","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml post /v1/candles/batch","href":"/api-reference/market-data/candles/get-up-to-200-candle-series-in-one-request"}]},{"group":"Trades","pages":[{"title":"Recent trade tape for a contract","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/trades","href":"/api-reference/market-data/trades/recent-trade-tape-for-a-contract"},{"title":"Aggregate trade volume/pressure metrics for a contract window","deprecated":null,"version":null,"openapi":"/openapi/market-data-api.yaml get /v1/trades/metrics","href":"/api-reference/market-data/trades/aggregate-trade-volumepressure-metrics-for-a-contract-window"}]}]},{"group":"Data API","icon":"server","pages":[{"group":"Markets","pages":[{"title":"Enumerate active markets for a provider (MMC cursor page)","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/active","href":"/api-reference/data/markets/enumerate-active-markets-for-a-provider-mmc-cursor-page"},{"title":"Fetch market details (name/category/status/ids)","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml post /markets/details","href":"/api-reference/data/markets/fetch-market-details-namecategorystatusids"},{"title":"Batch fetch current prices for multiple markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml post /markets/batch-prices","href":"/api-reference/data/markets/batch-fetch-current-prices-for-multiple-markets"},{"title":"Get full market metadata (rules, images, contract spec)","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/metadata","href":"/api-reference/data/markets/get-full-market-metadata-rules-images-contract-spec"},{"title":"Batch fetch market metadata for multiple contracts","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml post /markets/metadata/batch","href":"/api-reference/data/markets/batch-fetch-market-metadata-for-multiple-contracts"},{"title":"Get all sibling outcomes for the event containing a market","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/outcomes","href":"/api-reference/data/markets/get-all-sibling-outcomes-for-the-event-containing-a-market"},{"title":"Get 5m/15m/1h crypto up-or-down prediction markets for a window","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/crypto","href":"/api-reference/data/markets/get-5m15m1h-crypto-up-or-down-prediction-markets-for-a-window"},{"title":"Get historical oracle (spot) prices for crypto chart pre-population","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/crypto/oracle-history","href":"/api-reference/data/markets/get-historical-oracle-spot-prices-for-crypto-chart-pre-population"},{"title":"Get Price-to-Beat (PTB) values for crypto up/down contracts","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/crypto/ptb","href":"/api-reference/data/markets/get-price-to-beat-ptb-values-for-crypto-updown-contracts"},{"title":"Get last-known prices for equity/forex/commodity symbols","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /markets/equity/snapshot","href":"/api-reference/data/markets/get-last-known-prices-for-equityforexcommodity-symbols"},{"title":"Cross-venue arbitrage opportunities from the Arb Bets feed","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /arb-bets/","href":"/api-reference/data/markets/cross-venue-arbitrage-opportunities-from-the-arb-bets-feed"},{"title":"Ranked cross-venue links with a union book","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /market-links/featured","href":"/api-reference/data/markets/ranked-cross-venue-links-with-a-union-book"},{"title":"The cross-venue link holding each venue market","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /market-links/lookup","href":"/api-reference/data/markets/the-cross-venue-link-holding-each-venue-market"},{"title":"Cross-venue cluster membership for a set of markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /market-clusters","href":"/api-reference/data/markets/cross-venue-cluster-membership-for-a-set-of-markets"}]},{"group":"Candles","pages":[{"title":"Fetch OHLCV candles for a single contract","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /candles","href":"/api-reference/data/candles/fetch-ohlcv-candles-for-a-single-contract"},{"title":"Fetch candles for up to 200 contracts in one request","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml post /candles/batch","href":"/api-reference/data/candles/fetch-candles-for-up-to-200-contracts-in-one-request"}]},{"group":"Trades","pages":[{"title":"Fetch normalized, Kairos-ingested trade history for a contract","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trades/history","href":"/api-reference/data/trades/fetch-normalized-kairos-ingested-trade-history-for-a-contract"},{"title":"Fetch volume and outcome-pressure metrics for a contract","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trades/metrics","href":"/api-reference/data/trades/fetch-volume-and-outcome-pressure-metrics-for-a-contract"}]},{"group":"Trader Analytics","pages":[{"title":"Get a trader's realized-PnL time series","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trader-stats/pnl-history/{wallet_address}","href":"/api-reference/data/trader-analytics/get-a-traders-realized-pnl-time-series"},{"title":"Get a trader's performance stats without the position list","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trader-stats/summary/{wallet_address}","href":"/api-reference/data/trader-analytics/get-a-traders-performance-stats-without-the-position-list"},{"title":"Get a trader's PnL windows, win/loss, ROI distribution and daily PnL calendar","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trader-stats/analysis/{wallet_address}","href":"/api-reference/data/trader-analytics/get-a-traders-pnl-windows-winloss-roi-distribution-and-daily-pnl-calendar"},{"title":"Get a trader's open/closed positions and derived performance stats","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trader-stats/positions/{wallet_address}","href":"/api-reference/data/trader-analytics/get-a-traders-openclosed-positions-and-derived-performance-stats"},{"title":"Get a trader's recent trade/fill history","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /trader-stats/trades/{wallet_address}","href":"/api-reference/data/trader-analytics/get-a-traders-recent-tradefill-history"},{"title":"Get top token holders for one or more markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /top-holders","href":"/api-reference/data/trader-analytics/get-top-token-holders-for-one-or-more-markets"},{"title":"Search for a trader's public profile by wallet address","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search-traders","href":"/api-reference/data/trader-analytics/search-for-a-traders-public-profile-by-wallet-address"}]},{"group":"PnL","pages":[{"title":"List available PnL providers","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /pnl/providers","href":"/api-reference/data/pnl/list-available-pnl-providers"},{"title":"Get merged PnL data for a user across one or more wallets/providers","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /pnl/{user_id}","href":"/api-reference/data/pnl/get-merged-pnl-data-for-a-user-across-one-or-more-walletsproviders"},{"title":"Batch public wallet identities and market position summaries","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml post /pnl/market-wallets","href":"/api-reference/data/pnl/batch-public-wallet-identities-and-market-position-summaries"},{"title":"Live per-market PnL for a (wallet, market) pair","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /pnl/hover/{provider_id}/{wallet}/{contract_id}","href":"/api-reference/data/pnl/live-per-market-pnl-for-a-wallet-market-pair"},{"title":"Wallet-wide PnL totals across all markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /pnl/wallet-totals/{provider_id}/{wallet}","href":"/api-reference/data/pnl/wallet-wide-pnl-totals-across-all-markets"}]},{"group":"Search","pages":[{"title":"Search markets by text query","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/markets","href":"/api-reference/data/search/search-markets-by-text-query"},{"title":"Search both markets and events with combined relevance scoring","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/markets-and-events","href":"/api-reference/data/search/search-both-markets-and-events-with-combined-relevance-scoring"},{"title":"Fast simple search for navbar/autocomplete overlay","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/simple","href":"/api-reference/data/search/fast-simple-search-for-navbarautocomplete-overlay"},{"title":"Resolve a pasted Polymarket/Kalshi/predict.fun market or event URL","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/resolve-url","href":"/api-reference/data/search/resolve-a-pasted-polymarketkalshipredictfun-market-or-event-url"},{"title":"Autocomplete suggestions for search-as-you-type","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/suggest","href":"/api-reference/data/search/autocomplete-suggestions-for-search-as-you-type"},{"title":"Find markets by what their book and tape are doing","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/screener","href":"/api-reference/data/search/find-markets-by-what-their-book-and-tape-are-doing"},{"title":"One-click screens the screener offers","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /search/screener/presets","href":"/api-reference/data/search/one-click-screens-the-screener-offers"}]},{"group":"Discover","pages":[{"title":"Paginated, filtered, event-grouped market list for the Discover page","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2","href":"/api-reference/data/discover/paginated-filtered-event-grouped-market-list-for-the-discover-page"},{"title":"Compact full market list for client-side instant search","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2/search-index","href":"/api-reference/data/discover/compact-full-market-list-for-client-side-instant-search"},{"title":"Top markets for the discover page ticker bar","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2/ticker","href":"/api-reference/data/discover/top-markets-for-the-discover-page-ticker-bar"},{"title":"Market pulse — latest trending movers for the Pulse rail","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2/breaking","href":"/api-reference/data/discover/market-pulse-—-latest-trending-movers-for-the-pulse-rail"},{"title":"Markets expiring soonest, with actionable prices","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2/expiring","href":"/api-reference/data/discover/markets-expiring-soonest-with-actionable-prices"},{"title":"Available subcategories (subtopics) for a topic category, with live market counts","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/discover/v2/subcategories","href":"/api-reference/data/discover/available-subcategories-subtopics-for-a-topic-category-with-live-market-counts"},{"title":"Kalshi sports events matched against live Polymarket games","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/sports/kalshi-live","href":"/api-reference/data/discover/kalshi-sports-events-matched-against-live-polymarket-games"},{"title":"Trending markets by 1h volume","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/trending","href":"/api-reference/data/discover/trending-markets-by-1h-volume"},{"title":"Trending market ids for a live-price subscription","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /api/markets/trending/ws","href":"/api-reference/data/discover/trending-market-ids-for-a-live-price-subscription"}]},{"group":"Providers","pages":[{"title":"List all active provider configurations","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /providers/configs","href":"/api-reference/data/providers/list-all-active-provider-configurations"},{"title":"List providers available to API-key callers","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /providers/api-access","href":"/api-reference/data/providers/list-providers-available-to-api-key-callers"},{"title":"Get a single provider configuration by id","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /providers/configs/{provider_id}","href":"/api-reference/data/providers/get-a-single-provider-configuration-by-id"}]},{"group":"Sports","pages":[{"title":"Top live/upcoming sports markets matched across Polymarket and Kalshi","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/trending-matched","href":"/api-reference/data/sports/top-liveupcoming-sports-markets-matched-across-polymarket-and-kalshi"},{"title":"Cross-platform matching-market records for a set of market slugs","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/matching-markets","href":"/api-reference/data/sports/cross-platform-matching-market-records-for-a-set-of-market-slugs"},{"title":"Kalshi Sport -> Competition -> Scope taxonomy","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/kalshi-filters","href":"/api-reference/data/sports/kalshi-sport->-competition->-scope-taxonomy"},{"title":"Active sports games with urgency scores and cross-provider prices","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/live-events","href":"/api-reference/data/sports/active-sports-games-with-urgency-scores-and-cross-provider-prices"},{"title":"All markets for a single sports event","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/event-markets","href":"/api-reference/data/sports/all-markets-for-a-single-sports-event"},{"title":"Currently-live Kalshi sports games (NHL/NBA/MLB/NFL+UFL/soccer/esports)","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/kalshi-live-games","href":"/api-reference/data/sports/currently-live-kalshi-sports-games-nhlnbamlbnfl+uflsocceresports"},{"title":"Live game pairings between Polymarket and Kalshi","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/poly-kalshi-pairings","href":"/api-reference/data/sports/live-game-pairings-between-polymarket-and-kalshi"},{"title":"Enriched catalog of sport categories and leagues","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/catalog","href":"/api-reference/data/sports/enriched-catalog-of-sport-categories-and-leagues"},{"title":"Upcoming (not-yet-live) sports events within a time window","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/upcoming-events","href":"/api-reference/data/sports/upcoming-not-yet-live-sports-events-within-a-time-window"},{"title":"Season/tournament futures markets across sports","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/futures","href":"/api-reference/data/sports/seasontournament-futures-markets-across-sports"},{"title":"Tournament bracket with live cross-provider prices per tie","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/tournament-bracket","href":"/api-reference/data/sports/tournament-bracket-with-live-cross-provider-prices-per-tie"},{"title":"Cross-venue market families for a single game, grouped by section","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/game-markets","href":"/api-reference/data/sports/cross-venue-market-families-for-a-single-game-grouped-by-section"},{"title":"Catalog of combo-eligible Polymarket markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/combo-markets","href":"/api-reference/data/sports/catalog-of-combo-eligible-polymarket-markets"},{"title":"Synced sports teams and leagues reference data","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /sports/metadata","href":"/api-reference/data/sports/synced-sports-teams-and-leagues-reference-data"},{"title":"Matched markets with identifiers, outcomes, and current reference prices","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /matched-markets/enriched","href":"/api-reference/data/sports/matched-markets-with-identifiers-outcomes-and-current-reference-prices"},{"title":"Paginated catalog of verified cross-venue matched markets","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /matched-markets","href":"/api-reference/data/sports/paginated-catalog-of-verified-cross-venue-matched-markets"},{"title":"List sports fixtures with live status and win probabilities","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /txodds/fixtures","href":"/api-reference/data/sports/list-sports-fixtures-with-live-status-and-win-probabilities"},{"title":"Score, timeline, and possession metrics for one fixture","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /txodds/fixtures/{fixture_id}","href":"/api-reference/data/sports/score-timeline-and-possession-metrics-for-one-fixture"},{"title":"Source-observed soccer and NFL fixture timing","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /txodds/fixtures/{fixture_id}/timing","href":"/api-reference/data/sports/source-observed-soccer-and-nfl-fixture-timing"},{"title":"Win-probability history and market read for one fixture","deprecated":null,"version":null,"openapi":"/openapi/data-api.yaml get /txodds/fixtures/{fixture_id}/timeseries","href":"/api-reference/data/sports/win-probability-history-and-market-read-for-one-fixture"}]}]},{"group":"Execution API","icon":"paper-plane","pages":[{"group":"Synthetic Books","pages":[{"title":"Create or join a Synthetic Book definition","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /v1/synthetics","href":"/api-reference/execution/synthetic-books/create-or-join-a-synthetic-book-definition"},{"title":"Refresh a Synthetic Book lease","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /v1/synthetics/subscriptions/{subscription_id}/refresh","href":"/api-reference/execution/synthetic-books/refresh-a-synthetic-book-lease"},{"title":"Release a Synthetic Book lease","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml delete /v1/synthetics/subscriptions/{subscription_id}","href":"/api-reference/execution/synthetic-books/release-a-synthetic-book-lease"},{"title":"Inspect a Synthetic Book definition","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /v1/synthetics/{synthetic_id}","href":"/api-reference/execution/synthetic-books/inspect-a-synthetic-book-definition"}]},{"group":"Orders","pages":[{"title":"List the authenticated user's orders","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders","href":"/api-reference/execution/orders/list-the-authenticated-users-orders"},{"title":"Submit a new order","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders","href":"/api-reference/execution/orders/submit-a-new-order"},{"title":"Get a single order by internal id","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/{order_id}","href":"/api-reference/execution/orders/get-a-single-order-by-internal-id"},{"title":"Cancel a single order","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/{order_id}/cancel","href":"/api-reference/execution/orders/cancel-a-single-order"},{"title":"Reprice a resting limit order in place","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/{order_id}/amend","href":"/api-reference/execution/orders/reprice-a-resting-limit-order-in-place"},{"title":"Cancel a specific set of orders atomically at the selection layer","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/cancel-batch","href":"/api-reference/execution/orders/cancel-a-specific-set-of-orders-atomically-at-the-selection-layer"},{"title":"Cancel all of the authenticated user's open orders on an exchange","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/cancel-all","href":"/api-reference/execution/orders/cancel-all-of-the-authenticated-users-open-orders-on-an-exchange"},{"title":"Get a combined platform + exchange fee quote for a prospective trade","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/fee-quote","href":"/api-reference/execution/orders/get-a-combined-platform-+-exchange-fee-quote-for-a-prospective-trade"},{"title":"Get the authenticated user's current live position exposure","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /positions/exposure","href":"/api-reference/execution/orders/get-the-authenticated-users-current-live-position-exposure"},{"title":"Shallow liveness probe","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /health","href":"/api-reference/execution/orders/shallow-liveness-probe"}]},{"group":"Exchanges","pages":[{"title":"List the venue ids this deployment has registered","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges","href":"/api-reference/execution/exchanges/list-the-venue-ids-this-deployment-has-registered"},{"title":"Get a venue's display info and full capability set","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges/{exchange_id}","href":"/api-reference/execution/exchanges/get-a-venues-display-info-and-full-capability-set"},{"title":"Get a venue's capability set","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges/{exchange_id}/capabilities","href":"/api-reference/execution/exchanges/get-a-venues-capability-set"},{"title":"Set the on-chain allowances the venue needs","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/{exchange_id}/allowances","href":"/api-reference/execution/exchanges/set-the-on-chain-allowances-the-venue-needs"},{"title":"Drop the service's cached copy of your venue credentials","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /credentials/invalidate","href":"/api-reference/execution/exchanges/drop-the-services-cached-copy-of-your-venue-credentials"},{"title":"Sponsor gas and set the venue's required allowances on a wallet","description":"The one-time onboarding step behind \"enable trading\": tops the wallet up with sponsored gas if it needs it, then sets every token allowance the venue's contracts require. Both legs are signed custodially with the user's delegated key.\n**`wait_for_confirmation` defaults to `true`.** The call then blocks until the work completes and the response reports what actually happened. Passing `false` returns immediately with `confirmation_pending: true`, `success: true`, `gas_sponsored: false` and `allowances_set: 0` — **`success: true` there means \"accepted\", not \"done\"**, and a background failure is only logged, never surfaced. Poll the RPC query `exchange.getAllowances` to find out whether it worked.\nThe three identity fields are mandatory but are validated against the authenticated caller and the wallets it owns; they can confirm authority, never grant it.\nSelf-custody callers on the external-signing lane should use `POST /v2/onchain/intent` with `op: \"approvals\"` instead and pay their own gas.\n**Auth \u0026 scope.** Requires `trade:execute`, the mutation gate (this endpoint spends gas-station funds, so a stolen JWT alone must not reach it), wallet ownership, and a current Turnkey policy version.","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/{exchange_id}/prepare-wallet","href":"/api-reference/execution/exchanges/sponsor-gas-and-set-the-venues-required-allowances-on-a-wallet"}]},{"group":"Routing","pages":[{"title":"Price a size across the legs of an approved cross-venue market link","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/route-quote","href":"/api-reference/execution/routing/price-a-size-across-the-legs-of-an-approved-cross-venue-market-link"},{"title":"Get the per-leg fee model for an approved cross-venue market link","description":"Returns the fee model each leg of the link charges per side, so a client can show the routing cost before quoting a size. Every union leg is listed; `executable` says whether the router fires on it for THIS caller and `connectable` whether connecting a Kalshi account would make it so. An unrecognized link is a `200` with `routed: false` and an empty `legs`.\n**Auth \u0026 scope.** Requires `trade:read` for `provider`.","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/route-fees","href":"/api-reference/execution/routing/get-the-per-leg-fee-model-for-an-approved-cross-venue-market-link"},{"title":"Buy a size split across both legs of an approved cross-venue market link","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/route-buy","href":"/api-reference/execution/routing/buy-a-size-split-across-both-legs-of-an-approved-cross-venue-market-link"},{"title":"Close a routed position across both legs of a market link","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/route-close","href":"/api-reference/execution/routing/close-a-routed-position-across-both-legs-of-a-market-link"},{"title":"List the caller's routed parent orders and their legs","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /orders/routes","href":"/api-reference/execution/routing/list-the-callers-routed-parent-orders-and-their-legs"},{"title":"Create (or preview) a self-serve cross-venue market link","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /orders/market-links","href":"/api-reference/execution/routing/create-or-preview-a-self-serve-cross-venue-market-link"}]},{"group":"Combo","pages":[{"title":"Price a Polymarket combo (parlay) without executing it","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /combo/quote","href":"/api-reference/execution/combo/price-a-polymarket-combo-parlay-without-executing-it"},{"title":"Buy a Polymarket combo (parlay) via the RFQ gateway","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /combo/execute","href":"/api-reference/execution/combo/buy-a-polymarket-combo-parlay-via-the-rfq-gateway"},{"title":"List the authenticated user's Polymarket combo positions","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /combo/positions","href":"/api-reference/execution/combo/list-the-authenticated-users-polymarket-combo-positions"},{"title":"Price a combo cash-out (SELL) without executing it","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /combo/cash-out-quote","href":"/api-reference/execution/combo/price-a-combo-cash-out-sell-without-executing-it"},{"title":"Sell an open combo position back to pUSD","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /combo/cash-out","href":"/api-reference/execution/combo/sell-an-open-combo-position-back-to-pusd"},{"title":"Redeem a resolved, winning combo back to pUSD","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /combo/redeem","href":"/api-reference/execution/combo/redeem-a-resolved-winning-combo-back-to-pusd"}]},{"group":"Onboarding","pages":[{"title":"Provision Polymarket CLOB credentials and set on-chain approvals","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/polymarket/enable-trading","href":"/api-reference/execution/onboarding/provision-polymarket-clob-credentials-and-set-on-chain-approvals"},{"title":"Provision CLOB credentials for an imported Polymarket wallet","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/polymarket/enable-imported-trading","href":"/api-reference/execution/onboarding/provision-clob-credentials-for-an-imported-polymarket-wallet"},{"title":"Set the on-chain approvals Predict.fun needs","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/enable-trading","href":"/api-reference/execution/onboarding/set-the-on-chain-approvals-predictfun-needs"},{"title":"Connect your own Kalshi account by storing its API credentials","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/kalshi/enable-trading","href":"/api-reference/execution/onboarding/connect-your-own-kalshi-account-by-storing-its-api-credentials"},{"title":"Get the caller's Predict.fun account profile","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges/predictfun/account","href":"/api-reference/execution/onboarding/get-the-callers-predictfun-account-profile"},{"title":"Get the caller's Predict.fun campaign lootboxes","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges/predictfun/activities/{code}","href":"/api-reference/execution/onboarding/get-the-callers-predictfun-campaign-lootboxes"},{"title":"Reveal settled campaign matches","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/activities/{code}/reveal","href":"/api-reference/execution/onboarding/reveal-settled-campaign-matches"},{"title":"Open revealed lootboxes","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/activities/{code}/open","href":"/api-reference/execution/onboarding/open-revealed-lootboxes"},{"title":"Claim campaign rewards","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/activities/{code}/claim","href":"/api-reference/execution/onboarding/claim-campaign-rewards"},{"title":"List the caller's campaign lootboxes","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml get /exchanges/predictfun/activities/{code}/boxes","href":"/api-reference/execution/onboarding/list-the-callers-campaign-lootboxes"},{"title":"Open one lootbox","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/activities/{code}/boxes/{box_id}/open","href":"/api-reference/execution/onboarding/open-one-lootbox"},{"title":"Reveal one campaign match","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/predictfun/activities/{code}/matches/{match_id}/reveal","href":"/api-reference/execution/onboarding/reveal-one-campaign-match"}]},{"group":"Hyperliquid","pages":[{"title":"Build the typed data for a Hyperliquid withdrawal (step 1 of 2)","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/hyperliquid/withdraw/prepare","href":"/api-reference/execution/hyperliquid/build-the-typed-data-for-a-hyperliquid-withdrawal-step-1-of-2"},{"title":"Submit a signed Hyperliquid withdrawal (step 2 of 2)","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/hyperliquid/withdraw","href":"/api-reference/execution/hyperliquid/submit-a-signed-hyperliquid-withdrawal-step-2-of-2"},{"title":"Build the typed data for a Hyperliquid spot↔perp transfer (step 1 of 2)","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/hyperliquid/transfer/prepare","href":"/api-reference/execution/hyperliquid/build-the-typed-data-for-a-hyperliquid-spot↔perp-transfer-step-1-of-2"},{"title":"Submit a signed Hyperliquid spot↔perp transfer (step 2 of 2)","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/hyperliquid/transfer","href":"/api-reference/execution/hyperliquid/submit-a-signed-hyperliquid-spot↔perp-transfer-step-2-of-2"}]},{"group":"Deposit wallet","pages":[{"title":"Deploy the caller's Polymarket deposit wallet and set its trading approvals","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/polymarket/deposit-wallet/onboard","href":"/api-reference/execution/deposit-wallet/deploy-the-callers-polymarket-deposit-wallet-and-set-its-trading-approvals"},{"title":"Read the relayer nonce (and GSN relay) for an imported Polymarket wallet","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/polymarket/imported/relay-info","href":"/api-reference/execution/deposit-wallet/read-the-relayer-nonce-and-gsn-relay-for-an-imported-polymarket-wallet"}]},{"group":"CTF","pages":[{"title":"Split collateral into a complete outcome-token set","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/{exchange_id}/ctf/split","href":"/api-reference/execution/ctf/split-collateral-into-a-complete-outcome-token-set"},{"title":"Merge a complete outcome-token set back into collateral","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/{exchange_id}/ctf/merge","href":"/api-reference/execution/ctf/merge-a-complete-outcome-token-set-back-into-collateral"},{"title":"Redeem winning outcome tokens after resolution","deprecated":null,"version":null,"openapi":"/openapi/execution.yaml post /exchanges/{exchange_id}/redeem","href":"/api-reference/execution/ctf/redeem-winning-outcome-tokens-after-resolution"}]}]}]}]},"basePath":"","title":"Price a size across the legs of an approved cross-venue market link - Kairos","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BAvA99GL.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}