Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release.
Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet’s other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore.
Result: trade_pending (no funding) or funding_pending (execution.fundingStatuspending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect.
Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.
Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every /v3 call; sent instead of an API key. Letters, digits and ._:-, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.
Wallet sign-in token: SIWE <token>, where <token> is result.token from a login action (exactly one space after SIWE). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new login action to renew it.
One answer, tagged by kind. Only signature answers are accepted; transaction answers are refused.
Option 1
Option 2
Show child attributes
Response
The committed plan (execution.committed: true).
A trade plan. Statuses: needs_signatures → ready_to_execute → (/execute) funding_pending → trade_pending → completed, with reconciling while an outcome is being confirmed. Terminal: completed, expired, failed, funded_trade_failed, funded_trade_expired.
audience and tradeExecutionRegion are opaque values signed into the plan — do not interpret or change them.
The order. Decimals must be canonical ("0.5", not "0.50"; "1", not "1.0"). size must match the venue's share lot exactly.
Hyperliquid: whole-share size, at most 5 price decimals, GTC/FAK/IOC only.
In a response this is the effective order — check it before signing: outcome is canonical and on Predict.fun a GTC order may come back as GTD with expiresAt set.
Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string
Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string
Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string
{
"error": "rate limit exceeded for this endpoint; retry later"
}
{
"error": "internal error"
}
{
"error": "unknown or expired action"
}
{"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/partner/trade-plans-preview/commit-a-trade-plan-for-execution","slug":"/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution","pageMetadata":{"title":"Commit a trade plan for execution","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nCommits the plan: Kairos checks balances, reserves `tradeBudget.maxDebitRaw` at the destination (and `funding.amountInRaw` at the source when funded) against the wallet's other plans, then runs it. The body is the same as `/answers`; `answers` may be empty when every signature was already posted. Call it before `executeBefore`.\n\nResult: `trade_pending` (no funding) or `funding_pending` (`execution.fundingStatus` `pending`, or `awaiting_client` when `submission.funding` is `client`). Calling it again after a successful commit returns the current plan with no new effect.\n\n**Client-owned funding.** After committing, POST each signed permit yourself to `requests[].externalSubmission.endpoint` (`funding-1` first), then report it with `POST /v3/trade-plans/{id}/reports`.","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans/{id}/execute","href":"/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, 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(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Preview: available on staging (\", _jsx(_components.code, {\n children: \"https://staging-execution.kairos.trade\"\n }), \"); production returns \", _jsx(_components.code, {\n children: \"503\"\n }), \" until release.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Commits the plan: Kairos checks balances, reserves \", _jsx(_components.code, {\n children: \"tradeBudget.maxDebitRaw\"\n }), \" at the destination (and \", _jsx(_components.code, {\n children: \"funding.amountInRaw\"\n }), \" at the source when funded) against the wallet’s other plans, then runs it. The body is the same as \", _jsx(_components.code, {\n children: \"/answers\"\n }), \"; \", _jsx(_components.code, {\n children: \"answers\"\n }), \" may be empty when every signature was already posted. Call it before \", _jsx(_components.code, {\n children: \"executeBefore\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Result: \", _jsx(_components.code, {\n children: \"trade_pending\"\n }), \" (no funding) or \", _jsx(_components.code, {\n children: \"funding_pending\"\n }), \" (\", _jsx(_components.code, {\n children: \"execution.fundingStatus\"\n }), \" \", _jsx(_components.code, {\n children: \"pending\"\n }), \", or \", _jsx(_components.code, {\n children: \"awaiting_client\"\n }), \" when \", _jsx(_components.code, {\n children: \"submission.funding\"\n }), \" is \", _jsx(_components.code, {\n children: \"client\"\n }), \"). Calling it again after a successful commit returns the current plan with no new effect.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Client-owned funding.\"\n }), \" After committing, POST each signed permit yourself to \", _jsx(_components.code, {\n children: \"requests[].externalSubmission.endpoint\"\n }), \" (\", _jsx(_components.code, {\n children: \"funding-1\"\n }), \" first), then report it with \", _jsx(_components.code, {\n children: \"POST /v3/trade-plans/{id}/reports\"\n }), \".\"]\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":"Commit a trade plan for execution","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nCommits the plan: Kairos checks balances, reserves `tradeBudget.maxDebitRaw` at the destination (and `funding.amountInRaw` at the source when funded) against the wallet's other plans, then runs it. The body is the same as `/answers`; `answers` may be empty when every signature was already posted. Call it before `executeBefore`.\n\nResult: `trade_pending` (no funding) or `funding_pending` (`execution.fundingStatus` `pending`, or `awaiting_client` when `submission.funding` is `client`). Calling it again after a successful commit returns the current plan with no new effect.\n\n**Client-owned funding.** After committing, POST each signed permit yourself to `requests[].externalSubmission.endpoint` (`funding-1` first), then report it with `POST /v3/trade-plans/{id}/reports`.","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans/{id}/execute","href":"/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"executeTradePlan","summary":"Commit a trade plan for execution","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nCommits the plan: Kairos checks balances, reserves `tradeBudget.maxDebitRaw` at the destination (and `funding.amountInRaw` at the source when funded) against the wallet's other plans, then runs it. The body is the same as `/answers`; `answers` may be empty when every signature was already posted. Call it before `executeBefore`.\n\nResult: `trade_pending` (no funding) or `funding_pending` (`execution.fundingStatus` `pending`, or `awaiting_client` when `submission.funding` is `client`). Calling it again after a successful commit returns the current plan with no new effect.\n\n**Client-owned funding.** After committing, POST each signed permit yourself to `requests[].externalSubmission.endpoint` (`funding-1` first), then report it with `POST /v3/trade-plans/{id}/reports`.","tags":["Trade plans (preview)"],"x-kairos-status":"preview","x-kairos-auth":"partner id or API key triple, plus wallet sign-in (Authorization SIWE) or an API key that owns the wallet","x-kairos-scope":"trade:execute (API-key callers)","x-kairos-rate-limit":"120 requests/minute per client IP per route; 1000/minute when X-Client-Id is sent","security":["b31bc9ae-f494-4704-a108-dc04bcdf3789","34234e8c-988b-4b33-8015-cf6642c9f03e","c15a3e4a-0162-4cec-b174-388d4c1e987d","16c74ade-79f7-432a-afc2-c0df74efaa90","93e8f99b-f23b-4220-97f0-132756d77f13"],"parameters":["17a2b263-a1ba-47f8-b9a0-563811e2fec6"],"requestBody":"a31e433c-b204-4fc3-a478-b5f79be6ac7d","responses":{"200":"57afa13c-f77f-4f79-bfe0-fb788d80ea7c","400":"43b9e23b-cb1d-42b9-9764-6ed4da9b2627","401":"d6f953bb-dff9-4115-89cb-b40e404093e0","403":"e6827cef-60e8-433c-a63c-0efd1e9d175d","404":"227170f4-86cd-4557-85eb-dd3474a21d2e","409":"6e47de0c-2fda-4884-8682-06cf5d9bd26c","410":"35a596d6-434c-48e8-8fc9-0a099e27228b","413":"57e7aba1-2ba9-4186-bf22-61defd29cad1","415":"f8a96826-b99f-4f50-9d4e-700ce223f77e","422":"69e8fe2c-9710-471c-8ea6-27c348f39308","429":"70f6c5fc-a526-4788-a555-8b432e7982b2","500":"9e71235f-4fe1-4c48-8348-239f07b9389e","503":"224a720c-8b39-4b12-804f-ac120a47e12f"},"method":"post","type":"path","servers":["330d272c-627a-4ff5-ad01-0263b300ce7a","83635983-3d27-4bb6-bc26-42ecc043c06c"],"path":"/v3/trade-plans/{id}/execute","baseUrlOptions":["https://execution.kairos.trade","https://staging-execution.kairos.trade"],"title":"Commit a trade plan for execution","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"17a2b263-a1ba-47f8-b9a0-563811e2fec6":{"name":"id","in":"path","required":true,"description":"Trade plan id.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Trade plan id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Body of `/answers` and `/execute`.","required":["planHash","answers"],"properties":{"planHash":{"type":"string","description":"Must equal the plan's `planHash`.","isRequired":true,"uniqueKey":"planHash","typeLabel":"string"},"answers":{"type":"array","maxItems":32,"items":{"oneOf":[{"type":"object","description":"One answer, tagged by `kind`. Only `signature` answers are accepted; `transaction` answers are refused.","required":["kind","requestId","signature"],"properties":{"kind":{"type":"string","const":"signature","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.0.kind","typeLabel":"string"},"requestId":{"type":"string","description":"`requests[].id`.","example":"plan","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.0.requestId","typeLabel":"string"},"signature":{"type":"string","description":"65-byte ECDSA signature (low-s) from `wallet`.","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.0.signature","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"answers.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One answer, tagged by `kind`. Only `signature` answers are accepted; `transaction` answers are refused.","required":["kind","requestId","transactionHash"],"properties":{"kind":{"type":"string","const":"transaction","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.1.kind","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.1.requestId","typeLabel":"string"},"transactionHash":{"type":"string","isRequired":true,"uniqueKey":"answers.items.[INDEX].oneOf.1.transactionHash","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"answers.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"answers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"answers","typeLabel":"object[]"}},"example":{"planHash":"0xb3d5c6e930ee2015f733bd9ffa2a2302fedd2a5bf38628e220f0b675d50f6953","answers":[{"kind":"signature","requestId":"plan","signature":"0xb2befc57fa7365cd671c908b8ba106005520bbd0fdb7212c8ea2134a6f2ff38a1b41a830b69eb1f51b7f1520681382729fdd1630ee70b131aac7b9059195de081c"},{"kind":"signature","requestId":"trade","signature":"0xe09dacdd8731b4d1d972464ff7c88b1b9bb892273460f5be18304747af897c5c0764badc6c1a57bf5c0f92bfa1ef908b34ab4eb4772381d72f5df6bb8007e3541c"}]},"uniqueKey":"","typeLabel":"object"},"example":{"planHash":"0xb3d5c6e930ee2015f733bd9ffa2a2302fedd2a5bf38628e220f0b675d50f6953","answers":[]},"examples":{"Example":{"title":"Example","value":{"planHash":"0xb3d5c6e930ee2015f733bd9ffa2a2302fedd2a5bf38628e220f0b675d50f6953","answers":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"57afa13c-f77f-4f79-bfe0-fb788d80ea7c":{"description":"The committed plan (`execution.committed: true`).","content":{"application/json":{"schema":{"type":"object","description":"A trade plan. Statuses: `needs_signatures` → `ready_to_execute` → (`/execute`) `funding_pending` → `trade_pending` → `completed`, with `reconciling` while an outcome is being confirmed. Terminal: `completed`, `expired`, `failed`, `funded_trade_failed`, `funded_trade_expired`.\n\n`audience` and `tradeExecutionRegion` are opaque values signed into the plan — do not interpret or change them.","required":["contractVersion","id","planHash","revision","wallet","partnerId","audience","interactionMode","submission","status","venue","tradeExecutionRegion","order","tradingWallet","tradePayloadDigest","tradeBudget","funding","createdAt","executeBefore","tradeSubmitBefore","requests","execution","error"],"properties":{"contractVersion":{"type":"integer","const":1,"isRequired":true,"uniqueKey":"contractVersion","typeLabel":"integer"},"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"planHash":{"type":"string","description":"Hash of the plan's terms; every answer must echo it.","isRequired":true,"uniqueKey":"planHash","typeLabel":"string"},"revision":{"type":"string","description":"Increases on every stored change (`\"0\"` at prepare).","isRequired":true,"uniqueKey":"revision","typeLabel":"string"},"wallet":{"type":"string","description":"The signing wallet, lowercase.","isRequired":true,"uniqueKey":"wallet","typeLabel":"string"},"partnerId":{"type":"string","isRequired":true,"uniqueKey":"partnerId","typeLabel":"string"},"audience":{"type":"string","description":"Opaque signed field.","isRequired":true,"uniqueKey":"audience","typeLabel":"string"},"interactionMode":{"type":"string","enum":["single_batch","allow_followup"],"isRequired":true,"uniqueKey":"interactionMode","typeLabel":"enum\u003cstring>"},"submission":{"type":"object","additionalProperties":false,"description":"Who submits each part. Defaults to Kairos for both. `trade` accepts only `kairos`.","properties":{"funding":{"type":"string","enum":["kairos","client"],"default":"kairos","description":"`client` — you POST the signed funding permits yourself (see `requests[].externalSubmission`) and report them.","uniqueKey":"submission.funding","typeLabel":"enum\u003cstring>"},"trade":{"type":"string","enum":["kairos"],"default":"kairos","uniqueKey":"submission.trade","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"submission","typeLabel":"object"},"status":{"type":"string","enum":["needs_signatures","ready_to_execute","funding_pending","trade_pending","reconciling","completed","expired","failed","funded_trade_failed","funded_trade_expired"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"venue":{"type":"string","description":"Venue id. `predict.fun` is accepted as an input alias of `predictfun`.","enum":["polymarket","predictfun","hyperliquid"],"isRequired":true,"uniqueKey":"venue","typeLabel":"enum\u003cstring>"},"tradeExecutionRegion":{"type":"string","description":"Opaque signed field.","isRequired":true,"uniqueKey":"tradeExecutionRegion","typeLabel":"string"},"order":{"type":"object","additionalProperties":false,"description":"The order. Decimals must be **canonical** (`\"0.5\"`, not `\"0.50\"`; `\"1\"`, not `\"1.0\"`). `size` must match the venue's share lot exactly.\nHyperliquid: whole-share `size`, at most 5 price decimals, `GTC`/`FAK`/`IOC` only.\nIn a response this is the **effective** order — check it before signing: `outcome` is canonical and on Predict.fun a `GTC` order may come back as `GTD` with `expiresAt` set.","required":["market","outcome","side","price","size","timeInForce","postOnly","clientOrderId"],"properties":{"market":{"type":"string","description":"`venue:market_id` (required form here) — `polymarket:0x\u003c64-hex>`, `predictfun:\u003cdigits>`, `hyperliquid:\u003cdigits>`.","example":"polymarket:0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a","isRequired":true,"uniqueKey":"order.market","typeLabel":"string"},"outcome":{"type":"string","minLength":1,"maxLength":64,"example":"Yes","isRequired":true,"uniqueKey":"order.outcome","typeLabel":"string"},"side":{"type":"string","const":"buy","description":"Trade plans are buy-only.","isRequired":true,"uniqueKey":"order.side","typeLabel":"string"},"price":{"type":"string","description":"Canonical decimal, above 0 and below 1.","example":"0.05","isRequired":true,"uniqueKey":"order.price","typeLabel":"string"},"size":{"type":"string","description":"Canonical decimal, shares.","example":"10","isRequired":true,"uniqueKey":"order.size","typeLabel":"string"},"timeInForce":{"type":"string","enum":["GTC","GTD","FOK","FAK","IOC"],"isRequired":true,"uniqueKey":"order.timeInForce","typeLabel":"enum\u003cstring>"},"postOnly":{"type":"boolean","description":"Only with `GTC` or `GTD`.","isRequired":true,"uniqueKey":"order.postOnly","typeLabel":"boolean"},"clientOrderId":{"type":"string","minLength":1,"maxLength":128,"description":"Required. Printable ASCII, unique per wallet and venue across plans; must not start with `trade-plan:`.","example":"partner-trade-1042","isRequired":true,"uniqueKey":"order.clientOrderId","typeLabel":"string"},"expiresAt":{"type":"string","format":"date-time","description":"Required exactly when `timeInForce` is `GTD`. RFC 3339, whole seconds, after `tradeSubmitBefore`.","uniqueKey":"order.expiresAt","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"order","typeLabel":"object"},"tradingWallet":{"type":"string","description":"Where the collateral must sit — Polymarket's trading wallet, or the wallet itself on Predict.fun and Hyperliquid.","isRequired":true,"uniqueKey":"tradingWallet","typeLabel":"string"},"tradePayloadDigest":{"type":"string","description":"Signing digest of the `trade` request.","isRequired":true,"uniqueKey":"tradePayloadDigest","typeLabel":"string"},"tradeBudget":{"type":"object","description":"The collateral ceiling the wallet authorizes. Raw amounts are integer strings in collateral base units.","required":["collateral","decimals","notionalRaw","maxCollateralFeeRaw","maxPlatformFeeBps","maxDebitRaw","existingSpendableRaw"],"properties":{"collateral":{"oneOf":[{"type":"object","description":"A collateral asset, tagged by `kind`.","required":["kind","chainId","token"],"properties":{"kind":{"type":"string","const":"evm","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.0.kind","typeLabel":"string"},"chainId":{"type":"string","description":"Decimal chain id.","example":"137","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.0.chainId","typeLabel":"string"},"token":{"type":"string","description":"Token address.","example":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.0.token","typeLabel":"string"}},"isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.0","typeLabel":"object"},{"type":"object","description":"A collateral asset, tagged by `kind`.","required":["kind","environment","ledger","token"],"properties":{"kind":{"type":"string","const":"hypercore","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.1.kind","typeLabel":"string"},"environment":{"type":"string","enum":["mainnet","testnet"],"isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.1.environment","typeLabel":"enum\u003cstring>"},"ledger":{"type":"string","const":"spot","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.1.ledger","typeLabel":"string"},"token":{"type":"string","const":"USDC","isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.1.token","typeLabel":"string"}},"isRequired":true,"uniqueKey":"tradeBudget.collateral.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"tradeBudget.collateral","typeLabel":"object"},"decimals":{"type":"integer","description":"6 (pUSD, Hyperliquid USDC) or 18 (BNB Chain USDT).","isRequired":true,"uniqueKey":"tradeBudget.decimals","typeLabel":"integer"},"notionalRaw":{"type":"string","description":"Order notional.","isRequired":true,"uniqueKey":"tradeBudget.notionalRaw","typeLabel":"string"},"maxCollateralFeeRaw":{"type":"string","description":"Upper bound on fees: `notional × maxPlatformFeeBps / 10000` plus the venue's own fee bound, rounded up.","isRequired":true,"uniqueKey":"tradeBudget.maxCollateralFeeRaw","typeLabel":"string"},"maxPlatformFeeBps":{"type":"integer","minimum":0,"maximum":1000,"description":"Kairos maximum plus `partnerFee.maxBps`. Prepare is refused (`422`) above 1000 (10%).","isRequired":true,"uniqueKey":"tradeBudget.maxPlatformFeeBps","typeLabel":"integer"},"maxDebitRaw":{"type":"string","description":"`notionalRaw + maxCollateralFeeRaw` — the most this plan can take from the trading account.","isRequired":true,"uniqueKey":"tradeBudget.maxDebitRaw","typeLabel":"string"},"existingSpendableRaw":{"type":"string","description":"Collateral already available at the venue, net of other plans' holds, when prepared (a snapshot, not a reservation).","isRequired":true,"uniqueKey":"tradeBudget.existingSpendableRaw","typeLabel":"string"},"partnerFee":{"type":"object","description":"The partner fee this plan pins, signed by the wallet as part of the plan. Partner fee schedules are configured by Kairos for each partner — a default, optionally per venue, optionally per user — as up to 16 bands selected by order notional (USD) and the user's 30-day trading volume; each band has a maker and a taker shape. The band in force when the plan is prepared is pinned here; later schedule changes do not affect the plan.\n\nAt fill time the partner rate is `maker` or `taker` evaluated at the fill price, charged on notional. Combined with the Kairos rate it never exceeds `tradeBudget.maxPlatformFeeBps` (at most 1000 bps, 10%). Polymarket and Predict.fun only.","required":["scheduleId","maxBps","maker","taker"],"properties":{"scheduleId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.scheduleId","typeLabel":"string\u003cuuid>"},"maxBps":{"type":"integer","minimum":0,"maximum":1000,"description":"The highest rate either shape reaches.","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maxBps","typeLabel":"integer"},"maker":{"oneOf":[{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","bps"],"example":{"model":"flat","bps":25},"properties":{"model":{"type":"string","const":"flat","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.0.model","typeLabel":"string"},"bps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.0.bps","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.0","typeLabel":"object"},{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","points"],"example":{"model":"curve","points":[{"price":"0","feeBps":10},{"price":"0.5","feeBps":60},{"price":"1","feeBps":10}]},"properties":{"model":{"type":"string","const":"curve","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1.model","typeLabel":"string"},"points":{"type":"array","minItems":2,"maxItems":32,"items":{"type":"object","required":["price","feeBps"],"properties":{"price":{"type":"string","description":"Decimal string, 0–1.","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1.points.items.[INDEX].price","typeLabel":"string"},"feeBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1.points.items.[INDEX].feeBps","typeLabel":"integer"}},"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1.points.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1.points","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.1","typeLabel":"object"},{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","edgeBps","centerBps"],"example":{"model":"parabolic","edgeBps":5,"centerBps":40},"properties":{"model":{"type":"string","const":"parabolic","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.2.model","typeLabel":"string"},"edgeBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.2.edgeBps","typeLabel":"integer"},"centerBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.2.centerBps","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.maker","typeLabel":"object"},"taker":{"oneOf":[{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","bps"],"example":{"model":"flat","bps":25},"properties":{"model":{"type":"string","const":"flat","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.0.model","typeLabel":"string"},"bps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.0.bps","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.0","typeLabel":"object"},{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","points"],"example":{"model":"curve","points":[{"price":"0","feeBps":10},{"price":"0.5","feeBps":60},{"price":"1","feeBps":10}]},"properties":{"model":{"type":"string","const":"curve","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1.model","typeLabel":"string"},"points":{"type":"array","minItems":2,"maxItems":32,"items":{"type":"object","required":["price","feeBps"],"properties":{"price":{"type":"string","description":"Decimal string, 0–1.","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1.points.items.[INDEX].price","typeLabel":"string"},"feeBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1.points.items.[INDEX].feeBps","typeLabel":"integer"}},"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1.points.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1.points","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.1","typeLabel":"object"},{"type":"object","description":"How a partner fee rate varies with the fill price `p` (0–1). Rates are integer bps, 0–1000.","required":["model","edgeBps","centerBps"],"example":{"model":"parabolic","edgeBps":5,"centerBps":40},"properties":{"model":{"type":"string","const":"parabolic","isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.2.model","typeLabel":"string"},"edgeBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.2.edgeBps","typeLabel":"integer"},"centerBps":{"type":"integer","minimum":0,"maximum":1000,"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.2.centerBps","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"tradeBudget.partnerFee.taker","typeLabel":"object"}},"uniqueKey":"tradeBudget.partnerFee","typeLabel":"object"}},"isRequired":true,"uniqueKey":"tradeBudget","typeLabel":"object"},"funding":{"oneOf":[{"type":"object","description":"The funding quote. Raw amounts are integer strings in base units.","required":["sourceChainId","sourceToken","sourceDecimals","quoteId","providerRequestId","amountInRaw","maxGasCostRaw","destination","destinationDecimals","recipient","refundRecipient","requiredArrivalRaw","minimumArrivalRaw","expectedArrivalRaw","quoteExpiresAt","fundingSubmitBefore","maxAmountRaw","slippageBps"],"properties":{"sourceChainId":{"type":"string","isRequired":true,"uniqueKey":"funding.oneOf.0.sourceChainId","typeLabel":"string"},"sourceToken":{"type":"string","isRequired":true,"uniqueKey":"funding.oneOf.0.sourceToken","typeLabel":"string"},"sourceDecimals":{"type":"integer","isRequired":true,"uniqueKey":"funding.oneOf.0.sourceDecimals","typeLabel":"integer"},"quoteId":{"type":"string","description":"Opaque quote id.","isRequired":true,"uniqueKey":"funding.oneOf.0.quoteId","typeLabel":"string"},"providerRequestId":{"type":"string","description":"The bridge provider's request id.","isRequired":true,"uniqueKey":"funding.oneOf.0.providerRequestId","typeLabel":"string"},"amountInRaw":{"type":"string","description":"Source debit including bridge fees (at most `maxAmountRaw`).","isRequired":true,"uniqueKey":"funding.oneOf.0.amountInRaw","typeLabel":"string"},"maxGasCostRaw":{"type":"string","description":"Always `\"0\"`.","isRequired":true,"uniqueKey":"funding.oneOf.0.maxGasCostRaw","typeLabel":"string"},"destination":{"oneOf":[{"type":"object","description":"A collateral asset, tagged by `kind`.","required":["kind","chainId","token"],"properties":{"kind":{"type":"string","const":"evm","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.0.kind","typeLabel":"string"},"chainId":{"type":"string","description":"Decimal chain id.","example":"137","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.0.chainId","typeLabel":"string"},"token":{"type":"string","description":"Token address.","example":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.0.token","typeLabel":"string"}},"isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.0","typeLabel":"object"},{"type":"object","description":"A collateral asset, tagged by `kind`.","required":["kind","environment","ledger","token"],"properties":{"kind":{"type":"string","const":"hypercore","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.1.kind","typeLabel":"string"},"environment":{"type":"string","enum":["mainnet","testnet"],"isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.1.environment","typeLabel":"enum\u003cstring>"},"ledger":{"type":"string","const":"spot","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.1.ledger","typeLabel":"string"},"token":{"type":"string","const":"USDC","isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.1.token","typeLabel":"string"}},"isRequired":true,"uniqueKey":"funding.oneOf.0.destination.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"funding.oneOf.0.destination","typeLabel":"object"},"destinationDecimals":{"type":"integer","isRequired":true,"uniqueKey":"funding.oneOf.0.destinationDecimals","typeLabel":"integer"},"recipient":{"type":"string","description":"Equals `tradingWallet`.","isRequired":true,"uniqueKey":"funding.oneOf.0.recipient","typeLabel":"string"},"refundRecipient":{"type":"string","description":"Equals `wallet`; the bridge provider returns a failed bridge here, on the source chain.","isRequired":true,"uniqueKey":"funding.oneOf.0.refundRecipient","typeLabel":"string"},"requiredArrivalRaw":{"type":"string","description":"The shortfall — `maxDebitRaw` minus what is already spendable.","isRequired":true,"uniqueKey":"funding.oneOf.0.requiredArrivalRaw","typeLabel":"string"},"minimumArrivalRaw":{"type":"string","description":"Guaranteed floor, at least `requiredArrivalRaw`. Arrival below it fails the plan (`FUNDING_SHORTFALL`).","isRequired":true,"uniqueKey":"funding.oneOf.0.minimumArrivalRaw","typeLabel":"string"},"expectedArrivalRaw":{"type":"string","description":"Estimate.","isRequired":true,"uniqueKey":"funding.oneOf.0.expectedArrivalRaw","typeLabel":"string"},"quoteExpiresAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"funding.oneOf.0.quoteExpiresAt","typeLabel":"string\u003cdate-time>"},"fundingSubmitBefore":{"type":"string","format":"date-time","description":"Deadline for the funding permits; also the plan's `executeBefore`.","isRequired":true,"uniqueKey":"funding.oneOf.0.fundingSubmitBefore","typeLabel":"string\u003cdate-time>"},"maxAmountRaw":{"type":"string","isRequired":true,"uniqueKey":"funding.oneOf.0.maxAmountRaw","typeLabel":"string"},"slippageBps":{"type":"integer","isRequired":true,"uniqueKey":"funding.oneOf.0.slippageBps","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"funding.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"funding.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"funding","typeLabel":"object | null"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"executeBefore":{"type":"string","format":"date-time","description":"Deadline for answers and `/execute` — `funding.fundingSubmitBefore` when funded, else `tradeSubmitBefore`.","isRequired":true,"uniqueKey":"executeBefore","typeLabel":"string\u003cdate-time>"},"tradeSubmitBefore":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"tradeSubmitBefore","typeLabel":"string\u003cdate-time>"},"requests":{"type":"array","minItems":2,"maxItems":32,"items":{"type":"object","description":"One signature the plan needs, in order:\n- `plan` — `KairosTradePlan` typed data binding `wallet`, `partnerId`, `audience`, `planId`, `planHash`, `executeBefore`, `tradeSubmitBefore`; on the venue's chain.\n- `funding-1`, `funding-2` — funded plans only, on the **source** chain: the bridge authorization, then the USDC `ReceiveWithAuthorization` permit.\n- `trade` — the venue order (Polymarket and Predict.fun native orders; a Kairos `PlaceOrder` authorization on Hyperliquid); on the venue's chain.\n\nSign every request whose `actionable` is `true`. `params[1]` of typed-data requests is a JSON string — pass it unchanged.","required":["id","purpose","kind","signer","chainId","request","requestHash","collectAfter","executeAfter","status","actionable"],"properties":{"id":{"type":"string","example":"plan","isRequired":true,"uniqueKey":"requests.items.[INDEX].id","typeLabel":"string"},"purpose":{"type":"string","enum":["plan","trade","funding"],"isRequired":true,"uniqueKey":"requests.items.[INDEX].purpose","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","const":"signature","isRequired":true,"uniqueKey":"requests.items.[INDEX].kind","typeLabel":"string"},"signer":{"type":"string","description":"Equals `wallet`.","isRequired":true,"uniqueKey":"requests.items.[INDEX].signer","typeLabel":"string"},"chainId":{"oneOf":[{"type":"string","description":"Chain to sign on, hex.","example":"0x89","isRequired":true,"uniqueKey":"requests.items.[INDEX].chainId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Chain to sign on, hex.","example":"0x89","isRequired":true,"uniqueKey":"requests.items.[INDEX].chainId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"requests.items.[INDEX].chainId","typeLabel":"string | null"},"request":{"type":"object","description":"An EIP-1193 request to run through the wallet's provider exactly as given (`provider.request({method, params})`).\n- `eth_signTypedData_v4`: `params` = `[address, typedData]` — `typedData` is a **JSON string**; pass it unchanged.\n- `personal_sign`: `params` = `[hexMessage, address]`.\n- `wallet_sendCalls` (EIP-5792): `params` = `[{version, chainId, from, atomicRequired, calls}]`; the wallet pays gas.\n- `eth_sendTransaction`: `params` = `[{from, to, data, value, chainId?}]`; the wallet pays gas.","required":["method","params"],"properties":{"method":{"type":"string","enum":["eth_signTypedData_v4","personal_sign","wallet_sendCalls","eth_sendTransaction"],"isRequired":true,"uniqueKey":"requests.items.[INDEX].request.method","typeLabel":"enum\u003cstring>"},"params":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"requests.items.[INDEX].request.params.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"requests.items.[INDEX].request.params","typeLabel":"any[]"}},"example":{"method":"personal_sign","params":["0x6b6169726f732e7472616465207761…","0x8ba1f109551bD432803012645Ac136ddd64DBA72"]},"isRequired":true,"uniqueKey":"requests.items.[INDEX].request","typeLabel":"object"},"requestHash":{"type":"string","description":"Hash of the canonical request; pinned by `planHash`.","isRequired":true,"uniqueKey":"requests.items.[INDEX].requestHash","typeLabel":"string"},"collectAfter":{"type":"array","items":{"type":"string","uniqueKey":"requests.items.[INDEX].collectAfter.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"requests.items.[INDEX].collectAfter","typeLabel":"string[]"},"executeAfter":{"type":"array","description":"Requests that must run before this one (e.g. `trade` after the funding ids).","items":{"type":"string","uniqueKey":"requests.items.[INDEX].executeAfter.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"requests.items.[INDEX].executeAfter","typeLabel":"string[]"},"status":{"type":"string","enum":["ready","accepted","confirmed"],"description":"`ready` → `accepted` (signature stored) → `confirmed` (executed).","isRequired":true,"uniqueKey":"requests.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"actionable":{"type":"boolean","description":"`true` when the client should sign this request now.","isRequired":true,"uniqueKey":"requests.items.[INDEX].actionable","typeLabel":"boolean"},"externalSubmission":{"type":"object","description":"Client-owned funding only: POST the signed permit here yourself, `funding-1` first, with `{kind, requestId, api}` as the body and the signature as the `signature` query parameter.","required":["endpoint","method","kind","requestId","api"],"properties":{"endpoint":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.endpoint","typeLabel":"string\u003curi>"},"method":{"type":"string","const":"POST","isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.method","typeLabel":"string"},"kind":{"type":"string","enum":["multicall-authorization","eip3009"],"isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.kind","typeLabel":"enum\u003cstring>"},"requestId":{"type":"string","description":"Equals `funding.providerRequestId`.","isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.requestId","typeLabel":"string"},"api":{"oneOf":[{"type":"string","description":"The Relay API to call; `swap` on every current route.","isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.api.oneOf.0","typeLabel":"string"},{"type":"null","description":"The Relay API to call; `swap` on every current route.","isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.api.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"requests.items.[INDEX].externalSubmission.api","typeLabel":"string | null"}},"uniqueKey":"requests.items.[INDEX].externalSubmission","typeLabel":"object"}},"uniqueKey":"requests.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"requests","typeLabel":"object[]"},"execution":{"type":"object","description":"Progress of a committed plan.","required":["committed","phase","fundingStatus","tradeStatus"],"properties":{"committed":{"type":"boolean","isRequired":true,"uniqueKey":"execution.committed","typeLabel":"boolean"},"phase":{"type":"string","enum":["collecting","funding","trade","finished"],"isRequired":true,"uniqueKey":"execution.phase","typeLabel":"enum\u003cstring>"},"fundingStatus":{"type":"string","enum":["not_required","not_started","pending","awaiting_client","unknown","confirmed"],"description":"`unknown` while the bridge is in flight or uncertain.","isRequired":true,"uniqueKey":"execution.fundingStatus","typeLabel":"enum\u003cstring>"},"tradeStatus":{"type":"string","enum":["not_started","unknown","accepted","failed","expired"],"description":"`accepted` — the venue acknowledged the order (not necessarily filled).","isRequired":true,"uniqueKey":"execution.tradeStatus","typeLabel":"enum\u003cstring>"},"movementId":{"type":"string","description":"The bridge provider's request id, once known.","uniqueKey":"execution.movementId","typeLabel":"string"},"orderId":{"type":"string","description":"Kairos order id.","uniqueKey":"execution.orderId","typeLabel":"string"},"venueOrderId":{"type":"string","uniqueKey":"execution.venueOrderId","typeLabel":"string"},"venueOrderStatus":{"type":"string","example":"live","uniqueKey":"execution.venueOrderStatus","typeLabel":"string"},"confirmedArrivalRaw":{"type":"string","description":"Collateral confirmed at the destination.","uniqueKey":"execution.confirmedArrivalRaw","typeLabel":"string"}},"isRequired":true,"uniqueKey":"execution","typeLabel":"object"},"error":{"oneOf":[{"type":"object","description":"Why a plan is in flight or stopped (returned with HTTP `200`).\n\n| `code` | Meaning |\n|---|---|\n| `OUTCOME_UNKNOWN` | Funding or the trade is in flight; keep polling (`nextAction: reconcile`). |\n| `PLAN_EXPIRED` | Not executed before `executeBefore`. |\n| `TRADE_EXPIRED` | The order was not submitted by `tradeSubmitBefore`, or funding arrived after it. |\n| `FUNDING_SHORTFALL` | Less than `minimumArrivalRaw` arrived. |\n| `COLLATERAL_CHANGED` | The balance fell below `maxDebitRaw` before submission. |\n| `VENUE_REJECTED` | The venue refused the signed order. |\n| `PREFLIGHT_REFUSED` | A pre-submission check refused the order. |\n| `NATIVE_NOT_DISPATCHED` | The trade authorization expired before submission. |\n\n`nextAction` is `reconcile` (keep polling) or `inspect_funds` (terminal: check where the collateral is — bridged funds stay in `tradingWallet`).","required":["code","message","nextAction"],"properties":{"code":{"type":"string","enum":["OUTCOME_UNKNOWN","PLAN_EXPIRED","TRADE_EXPIRED","FUNDING_SHORTFALL","COLLATERAL_CHANGED","VENUE_REJECTED","PREFLIGHT_REFUSED","NATIVE_NOT_DISPATCHED"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"nextAction":{"type":"string","enum":["reconcile","inspect_funds"],"isRequired":true,"uniqueKey":"error.oneOf.0.nextAction","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object | null"},"ctfDependencies":{"type":"array","items":{"type":"object","description":"An on-chain intent this plan depends on, with the collateral it is expected to free.","required":["intent","anticipatedCreditRaw"],"properties":{"intent":{"type":"object","description":"A confirmed-before-me intent, pinned by hash.","required":["intentId","intentHash","account","chainId","effects"],"properties":{"intentId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.intentId","typeLabel":"string\u003cuuid>"},"intentHash":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.intentHash","typeLabel":"string"},"account":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.account","typeLabel":"string"},"chainId":{"type":"string","example":"137","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.chainId","typeLabel":"string"},"effects":{"type":"array","items":{"type":"object","description":"An exact gross token movement on the deposit wallet.","required":["token","direction","amountRaw"],"properties":{"token":{"oneOf":[{"type":"object","description":"A token, tagged by `kind`.","required":["kind","contract"],"properties":{"kind":{"type":"string","const":"erc20","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.0.kind","typeLabel":"string"},"contract":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.0.contract","typeLabel":"string"}},"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.0","typeLabel":"object"},{"type":"object","description":"A token, tagged by `kind`.","required":["kind","contract","tokenId"],"properties":{"kind":{"type":"string","const":"erc1155","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.1.kind","typeLabel":"string"},"contract":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.1.contract","typeLabel":"string"},"tokenId":{"type":"string","description":"Decimal token id.","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.1.tokenId","typeLabel":"string"}},"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].token","typeLabel":"object"},"direction":{"type":"string","enum":["debit","credit"],"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].direction","typeLabel":"enum\u003cstring>"},"amountRaw":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX].amountRaw","typeLabel":"string"}},"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent.effects","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].intent","typeLabel":"object"},"anticipatedCreditRaw":{"type":"string","isRequired":true,"uniqueKey":"ctfDependencies.items.[INDEX].anticipatedCreditRaw","typeLabel":"string"}},"uniqueKey":"ctfDependencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"ctfDependencies","typeLabel":"object[]"}},"example":{"contractVersion":1,"id":"0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e","planHash":"0xb3d5c6e930ee2015f733bd9ffa2a2302fedd2a5bf38628e220f0b675d50f6953","revision":"0","wallet":"0x8ba1f109551bd432803012645ac136ddd64dba72","partnerId":"acme","audience":"https://staging-execution.kairos.trade","interactionMode":"single_batch","submission":{"funding":"kairos","trade":"kairos"},"status":"needs_signatures","venue":"polymarket","tradeExecutionRegion":"opaque-region-id","order":{"market":"polymarket:0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a","outcome":"Yes","side":"buy","price":"0.05","size":"10","timeInForce":"GTC","postOnly":true,"clientOrderId":"partner-trade-1042"},"tradingWallet":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","tradePayloadDigest":"0xa3612e136ad81349bbc469dbc02ebd85d3cfcd3f76f90fc06a5c33d6bd03a67a","tradeBudget":{"collateral":{"kind":"evm","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb"},"decimals":6,"notionalRaw":"500000","maxCollateralFeeRaw":"16750","maxPlatformFeeBps":75,"maxDebitRaw":"516750","existingSpendableRaw":"0","partnerFee":{"scheduleId":"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d","maxBps":25,"maker":{"model":"flat","bps":10},"taker":{"model":"flat","bps":25}}},"funding":{"sourceChainId":"42161","sourceToken":"0xaf88d065e77c8cc2239327c5edb3a432268e5831","sourceDecimals":6,"quoteId":"wallet-funding:0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e","providerRequestId":"0x5d7e9f1a3b5c7d9e1f3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d5e7f9a1b3c5d7e","amountInRaw":"531200","maxGasCostRaw":"0","destination":{"kind":"evm","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb"},"destinationDecimals":6,"recipient":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","refundRecipient":"0x8ba1f109551bd432803012645ac136ddd64dba72","requiredArrivalRaw":"516750","minimumArrivalRaw":"516750","expectedArrivalRaw":"517900","quoteExpiresAt":"2026-10-28T12:02:00Z","fundingSubmitBefore":"2026-10-28T12:02:00Z","maxAmountRaw":"750000","slippageBps":50},"createdAt":"2026-10-28T12:00:00Z","executeBefore":"2026-10-28T12:02:00Z","tradeSubmitBefore":"2026-10-28T12:04:00Z","requests":[{"id":"plan","purpose":"plan","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{\"domain\":{\"chainId\":137,\"name\":\"KairosTradePlan\",\"version\":\"1\"},\"message\":{\"audience\":\"https://staging-execution.kairos.trade\",\"executeBefore\":\"1793188920\",\"partnerId\":\"acme\",\"planHash\":\"0xb3d5…6953\",\"planId\":\"0b1c2d3e-…\",\"tradeSubmitBefore\":\"1793189040\",\"wallet\":\"0x8ba1…ba72\"},\"primaryType\":\"TradePlan\",\"types\":{…}}"]},"requestHash":"0x164f42fed95c09f82995ceb0d79c95e4074f81d9165c7ec449ffe4f5e15ace6e","collectAfter":[],"executeAfter":[],"status":"ready","actionable":true},{"id":"funding-1","purpose":"funding","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0xa4b1","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x2a4c6e8b0d2f4a6c8e0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c","collectAfter":[],"executeAfter":[],"status":"ready","actionable":true},{"id":"funding-2","purpose":"funding","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0xa4b1","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d","collectAfter":[],"executeAfter":["funding-1"],"status":"ready","actionable":true},{"id":"trade","purpose":"trade","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x0949c4fc3fec5036e82047f68491e76ea6d7a10b11c8bb5c5b04aa62969a1297","collectAfter":[],"executeAfter":["funding-1","funding-2"],"status":"ready","actionable":true}],"execution":{"committed":false,"phase":"collecting","fundingStatus":"not_started","tradeStatus":"not_started"},"error":null},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"contractVersion":1,"id":"0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e","planHash":"0xb3d5c6e930ee2015f733bd9ffa2a2302fedd2a5bf38628e220f0b675d50f6953","revision":"0","wallet":"0x8ba1f109551bd432803012645ac136ddd64dba72","partnerId":"acme","audience":"https://staging-execution.kairos.trade","interactionMode":"single_batch","submission":{"funding":"kairos","trade":"kairos"},"status":"needs_signatures","venue":"polymarket","tradeExecutionRegion":"opaque-region-id","order":{"market":"polymarket:0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a","outcome":"Yes","side":"buy","price":"0.05","size":"10","timeInForce":"GTC","postOnly":true,"clientOrderId":"partner-trade-1042"},"tradingWallet":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","tradePayloadDigest":"0xa3612e136ad81349bbc469dbc02ebd85d3cfcd3f76f90fc06a5c33d6bd03a67a","tradeBudget":{"collateral":{"kind":"evm","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb"},"decimals":6,"notionalRaw":"500000","maxCollateralFeeRaw":"16750","maxPlatformFeeBps":75,"maxDebitRaw":"516750","existingSpendableRaw":"0","partnerFee":{"scheduleId":"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d","maxBps":25,"maker":{"model":"flat","bps":10},"taker":{"model":"flat","bps":25}}},"funding":{"sourceChainId":"42161","sourceToken":"0xaf88d065e77c8cc2239327c5edb3a432268e5831","sourceDecimals":6,"quoteId":"wallet-funding:0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e","providerRequestId":"0x5d7e9f1a3b5c7d9e1f3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d5e7f9a1b3c5d7e","amountInRaw":"531200","maxGasCostRaw":"0","destination":{"kind":"evm","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb"},"destinationDecimals":6,"recipient":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","refundRecipient":"0x8ba1f109551bd432803012645ac136ddd64dba72","requiredArrivalRaw":"516750","minimumArrivalRaw":"516750","expectedArrivalRaw":"517900","quoteExpiresAt":"2026-10-28T12:02:00Z","fundingSubmitBefore":"2026-10-28T12:02:00Z","maxAmountRaw":"750000","slippageBps":50},"createdAt":"2026-10-28T12:00:00Z","executeBefore":"2026-10-28T12:02:00Z","tradeSubmitBefore":"2026-10-28T12:04:00Z","requests":[{"id":"plan","purpose":"plan","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{\"domain\":{\"chainId\":137,\"name\":\"KairosTradePlan\",\"version\":\"1\"},\"message\":{\"audience\":\"https://staging-execution.kairos.trade\",\"executeBefore\":\"1793188920\",\"partnerId\":\"acme\",\"planHash\":\"0xb3d5…6953\",\"planId\":\"0b1c2d3e-…\",\"tradeSubmitBefore\":\"1793189040\",\"wallet\":\"0x8ba1…ba72\"},\"primaryType\":\"TradePlan\",\"types\":{…}}"]},"requestHash":"0x164f42fed95c09f82995ceb0d79c95e4074f81d9165c7ec449ffe4f5e15ace6e","collectAfter":[],"executeAfter":[],"status":"ready","actionable":true},{"id":"funding-1","purpose":"funding","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0xa4b1","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x2a4c6e8b0d2f4a6c8e0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c","collectAfter":[],"executeAfter":[],"status":"ready","actionable":true},{"id":"funding-2","purpose":"funding","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0xa4b1","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d","collectAfter":[],"executeAfter":["funding-1"],"status":"ready","actionable":true},{"id":"trade","purpose":"trade","kind":"signature","signer":"0x8ba1f109551bd432803012645ac136ddd64dba72","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{…}"]},"requestHash":"0x0949c4fc3fec5036e82047f68491e76ea6d7a10b11c8bb5c5b04aa62969a1297","collectAfter":[],"executeAfter":["funding-1","funding-2"],"status":"ready","actionable":true}],"execution":{"committed":false,"phase":"collecting","fundingStatus":"not_started","tradeStatus":"not_started"},"error":null}}},"exampleType":"generated"}},"exampleType":"generated"},"43b9e23b-cb1d-42b9-9764-6ed4da9b2627":{"description":"Same answer validation as `/answers`. Plain text for malformed JSON or a non-UUID `{id}`.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"},"text/plain":{"schema":{"type":"string","description":"A plain-text (non-JSON) rejection from request parsing — malformed JSON, a body of the wrong shape, a missing `Content-Type`, a malformed path id or query. Do not JSON-parse it.","example":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string"}},"exampleType":"generated"}},"exampleType":"generated"},"d6f953bb-dff9-4115-89cb-b40e404093e0":{"description":"`signature does not authorize this plan request`, or a tenant or sign-in failure.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"},"e6827cef-60e8-433c-a63c-0efd1e9d175d":{"description":"`API key missing trade:execute scope`; `wallet partner is disabled`; `API-key access to \u003cvenue> is disabled`; `external-signing execution is not enabled for this account`.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"},"227170f4-86cd-4557-85eb-dd3474a21d2e":{"description":"`trade plan not found` — unknown, or not visible to this partner and wallet.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"example":{"error":"trade plan not found"},"examples":{"Example":{"title":"Example","value":{"error":"trade plan not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"6e47de0c-2fda-4884-8682-06cf5d9bd26c":{"description":"`the plan is missing required signatures`; `the plan no longer accepts this operation`; `trade plan changed; read it before retrying` (the balance net of other reservations no longer covers the plan, or it changed while committing — read the plan, then retry or prepare a new one); `CTF prerequisite is unavailable`; `collateral observation predates the CTF prerequisite` (retry shortly); `Hyperliquid wallet readiness changed`.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"},"35a596d6-434c-48e8-8fc9-0a099e27228b":{"description":"`plan authorization has expired` — `executeBefore` has passed. Prepare a new one.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"example":{"error":"plan authorization has expired"},"examples":{"Example":{"title":"Example","value":{"error":"plan authorization has expired"}}},"exampleType":"examples"}},"exampleType":"examples"},"57e7aba1-2ba9-4186-bf22-61defd29cad1":{"description":"Plain text (`Failed to buffer the request body: length limit exceeded`) when the body is over the limit: 16 KiB for fee settlements, 64 KiB for trade plans and on-chain intents, the server-wide 2 MiB for actions. Above 64 KiB the answer may instead be `{\"error\": \"request body too large\"}`.","content":{"text/plain":{"schema":{"type":"string","description":"A plain-text (non-JSON) rejection from request parsing — malformed JSON, a body of the wrong shape, a missing `Content-Type`, a malformed path id or query. Do not JSON-parse it.","example":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string"}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"},"f8a96826-b99f-4f50-9d4e-700ce223f77e":{"description":"Plain text — the request has no `Content-Type: application/json` header.","content":{"text/plain":{"schema":{"type":"string","description":"A plain-text (non-JSON) rejection from request parsing — malformed JSON, a body of the wrong shape, a missing `Content-Type`, a malformed path id or query. Do not JSON-parse it.","example":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string"}},"exampleType":"generated"}},"exampleType":"generated"},"69e8fe2c-9710-471c-8ea6-27c348f39308":{"description":"Plain text — the body is valid JSON of the wrong shape (a missing or unknown field, or a wrong type).","content":{"text/plain":{"schema":{"type":"string","description":"A plain-text (non-JSON) rejection from request parsing — malformed JSON, a body of the wrong shape, a missing `Content-Type`, a malformed path id or query. Do not JSON-parse it.","example":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Failed to deserialize the JSON body into the target type: action.price: invalid type: floating point `0.52`, expected a string"}},"exampleType":"generated"}},"exampleType":"generated"},"70f6c5fc-a526-4788-a555-8b432e7982b2":{"description":"`rate limit exceeded for this endpoint; retry later`. The default limit is 120 requests per minute per client IP per path (1000 when `X-Client-Id` is sent), over a sliding 60 s window; `GET` and `POST` on one path share it. No `Retry-After` header is sent.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"example":{"error":"rate limit exceeded for this endpoint; retry later"},"examples":{"Example":{"title":"Example","value":{"error":"rate limit exceeded for this endpoint; retry later"}}},"exampleType":"examples"}},"exampleType":"examples"},"9e71235f-4fe1-4c48-8348-239f07b9389e":{"description":"`internal error`.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"example":{"error":"internal error"},"examples":{"Example":{"title":"Example","value":{"error":"internal error"}}},"exampleType":"examples"}},"exampleType":"examples"},"224a720c-8b39-4b12-804f-ac120a47e12f":{"description":"Production: `trade plans are disabled` until this lane is released (the trade-plan reads and writes other than prepare can return `500 internal error` there instead). Staging: a dependency is unavailable, `partner registry unavailable; retry shortly`, or `rate limiter unavailable`.","content":{"application/json":{"schema":{"type":"object","description":"Wallet API error body. `error` is a human-readable message; `code` is set on a few structured refusals (e.g. `CLIENT_ORDER_ID_CONFLICT`, `POLYMARKET_V2_TRADING_DISABLED`, `SIGNATURE_EXPIRED`); `errorCode` mirrors `code` where the same refusal can also surface on a failed step. Most `/v3` errors carry only `error`. Framework rejections (malformed JSON, wrong shape, missing content type) are plain text, not this body.","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable code, present on structured refusals only.","uniqueKey":"code","typeLabel":"string"},"errorCode":{"type":"string","description":"Same as `code`; present where the refusal can also appear as a failed step's `errorCode`.","uniqueKey":"errorCode","typeLabel":"string"}},"example":{"error":"unknown or expired action"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"b31bc9ae-f494-4704-a108-dc04bcdf3789":{"walletPartnerId":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"walletSignIn":{"type":"apiKey","in":"header","name":"Authorization","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","scopes":[],"schemeName":"walletSignIn"}},"34234e8c-988b-4b33-8015-cf6642c9f03e":{"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"},"walletSignIn":{"type":"apiKey","in":"header","name":"Authorization","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","scopes":[],"schemeName":"walletSignIn"}},"c15a3e4a-0162-4cec-b174-388d4c1e987d":{"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"}},"16c74ade-79f7-432a-afc2-c0df74efaa90":{"walletPartnerId":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"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"}},"93e8f99b-f23b-4220-97f0-132756d77f13":{"walletPartnerId":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"First-party Kairos session JWT (web app sessions). Not issued to API consumers.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"330d272c-627a-4ff5-ad01-0263b300ce7a":{"url":"https://execution.kairos.trade","description":"Production"},"83635983-3d27-4bb6-bc26-42ecc043c06c":{"url":"https://staging-execution.kairos.trade","description":"Staging"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"schema":{"title":"X-Kairos-Partner-Id","type":"string","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"walletPartnerId","name":"X-Kairos-Partner-Id"},{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","scopes":[],"schemeName":"walletSignIn"},"schema":{"title":"Authorization","type":"string","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"walletSignIn","name":"Authorization"}],"title":"walletPartnerId \u0026 walletSignIn"},{"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"},{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","scopes":[],"schemeName":"walletSignIn"},"schema":{"title":"Authorization","type":"string","description":"Wallet sign-in token: `SIWE \u003ctoken>`, where `\u003ctoken>` is `result.token` from a `login` action (exactly one space after `SIWE`). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new `login` action to renew it.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"walletSignIn","name":"Authorization"}],"title":"apiKeyClientId \u0026 apiKeyKey \u0026 apiKeySecret \u0026 walletSignIn"},{"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"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"schema":{"title":"X-Kairos-Partner-Id","type":"string","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"walletPartnerId","name":"X-Kairos-Partner-Id"},{"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":"walletPartnerId \u0026 apiKeyClientId \u0026 apiKeyKey \u0026 apiKeySecret"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Kairos-Partner-Id","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","scopes":[],"schemeName":"walletPartnerId"},"schema":{"title":"X-Kairos-Partner-Id","type":"string","description":"Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every `/v3` call; sent instead of an API key. Letters, digits and `._:-`, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"walletPartnerId","name":"X-Kairos-Partner-Id"},{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"First-party Kairos session JWT (web app sessions). Not issued to API consumers.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"First-party Kairos session JWT (web app sessions). Not issued to API consumers.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"walletPartnerId \u0026 bearerAuth"}]},"originalFileLocation":"openapi/wallet-api.json"},"subdomain":"kairos-c5456474","siteName":"Kairos","title":"Commit a trade plan for execution - Kairos","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T04:21:19.654Z","originalFileLocation":"api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution.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=\"Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release. Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet\u0026#x27;s other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore. Result: trade_pending (no funding) or funding_pending (execution.fundingStatus pending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect. Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.\">\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=\"Commit a trade plan for execution - Kairos\">\u003cmeta data-mint-head property=\"og:description\" content=\"Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release. Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet\u0026#x27;s other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore. Result: trade_pending (no funding) or funding_pending (execution.fundingStatus pending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect. Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kairos\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution\">\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=Trade+plans+%28preview%29\u0026amp;title=Commit+a+trade+plan+for+execution\u0026amp;description=Preview%3A+available+on+staging+%28%60https%3A%2F%2Fstaging-execution.kairos.trade%60%29%3B+production+returns+%60503%60+until+release.%0A%0ACommits+the+plan%3A+Kairos+checks+balances%2C+res\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=2e6b4eaaf9fc7112aff0b9274972a9121394bea7c32219baa9ea55c17ae150a1\">\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=\"Commit a trade plan for execution - Kairos\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release. Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet\u0026#x27;s other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore. Result: trade_pending (no funding) or funding_pending (execution.fundingStatus pending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect. Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kairos-c5456474.mintlify.app/_mintlify/api/og/v2?division=Trade+plans+%28preview%29\u0026amp;title=Commit+a+trade+plan+for+execution\u0026amp;description=Preview%3A+available+on+staging+%28%60https%3A%2F%2Fstaging-execution.kairos.trade%60%29%3B+production+returns+%60503%60+until+release.%0A%0ACommits+the+plan%3A+Kairos+checks+balances%2C+res\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=2e6b4eaaf9fc7112aff0b9274972a9121394bea7c32219baa9ea55c17ae150a1\">\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/partner/trade-plans-preview/commit-a-trade-plan-for-execution\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution.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/partner/trade-plans-preview/commit-a-trade-plan-for-execution#webpage\",\"url\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution\",\"name\":\"Commit a trade plan for execution\",\"description\":\"Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release. Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet's other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore. Result: trade_pending (no funding) or funding_pending (execution.fundingStatus pending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect. Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.\",\"dateModified\":\"2026-10-29T04:21:19.654Z\",\"isPartOf\":{\"@id\":\"https://docs.kairos.trade#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.kairos.trade/api-reference/partner/actions/start-a-wallet-action-setup-order-cancel-login\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trade plans (preview)\",\"item\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/prepare-a-trade-plan-one-buy-optionally-funded-cross-chain\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Commit a trade plan for execution\",\"item\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution#apireference\",\"headline\":\"Commit a trade plan for execution\",\"name\":\"Commit a trade plan for execution\",\"description\":\"Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release. Commits the plan: Kairos checks balances, reserves tradeBudget.maxDebitRaw at the destination (and funding.amountInRaw at the source when funded) against the wallet's other plans, then runs it. The body is the same as /answers; answers may be empty when every signature was already posted. Call it before executeBefore. Result: trade_pending (no funding) or funding_pending (execution.fundingStatus pending, or awaiting_client when submission.funding is client). Calling it again after a successful commit returns the current plan with no new effect. Client-owned funding. After committing, POST each signed permit yourself to requests[].externalSubmission.endpoint (funding-1 first), then report it with POST /v3/trade-plans/{id}/reports.\",\"url\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kairos.trade/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution#webpage\"},\"dateModified\":\"2026-10-29T04:21:19.654Z\",\"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","groups":[{"group":"Get started","icon":"rocket","pages":[{"title":"Kairos Partner API","sidebarTitle":"Introduction","icon":"wallet","href":"/wallets/overview"},{"title":"Onboarding and go-live","sidebarTitle":"Onboarding and go-live","icon":"list-check","href":"/wallets/onboarding"},{"title":"Quickstart: your first order","sidebarTitle":"Quickstart","icon":"rocket","href":"/wallets/quickstart"},{"title":"Partner API authentication","sidebarTitle":"Authentication","icon":"key","href":"/wallets/authentication"}]},{"group":"Onboard users","icon":"user-plus","pages":[{"title":"Set up and fund a wallet","sidebarTitle":"Set up and fund a wallet","icon":"user-plus","href":"/wallets/setup"},{"title":"Venue rules","sidebarTitle":"Venue rules","icon":"building-columns","href":"/wallets/venues"}]},{"group":"Trade","icon":"arrow-right-arrow-left","pages":[{"title":"Show markets","sidebarTitle":"Show markets","icon":"chart-line","href":"/wallets/markets"},{"title":"Place and cancel orders","sidebarTitle":"Place and cancel orders","icon":"arrow-right-arrow-left","href":"/wallets/trade"},{"title":"Show orders and positions","sidebarTitle":"Show orders and positions","icon":"briefcase","href":"/wallets/portfolio"},{"title":"What the wallet signs","sidebarTitle":"What the wallet signs","icon":"signature","href":"/wallets/signing"}]},{"group":"Route and fund","icon":"route","pages":[{"title":"Routing across venues","sidebarTitle":"Routing across venues","icon":"route","href":"/wallets/routing"},{"title":"Funded trade plans","tag":"Preview","sidebarTitle":"Funded trade plans","icon":"route","href":"/wallets/trade-plans"},{"title":"Split, merge and redeem","tag":"Preview","sidebarTitle":"Split, merge, redeem","icon":"link","href":"/wallets/onchain"}]},{"group":"Partner fees","icon":"receipt","pages":[{"title":"Partner fees and settlement","tag":"Preview","sidebarTitle":"Partner fees","icon":"receipt","href":"/wallets/fees"}]},{"group":"Build","icon":"code","pages":[{"title":"TypeScript SDK","sidebarTitle":"TypeScript SDK","icon":"js","href":"/wallets/sdk"},{"title":"Without the SDK: plain HTTP","sidebarTitle":"Plain HTTP clients","icon":"terminal","href":"/wallets/http"},{"title":"Errors, limits and idempotency","sidebarTitle":"Errors and limits","icon":"book","href":"/wallets/reference"}]},{"group":"Endpoints","icon":"brackets-curly","pages":[{"group":"Actions","pages":[{"title":"Start a wallet action (setup, order, cancel, login)","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/actions","href":"/api-reference/partner/actions/start-a-wallet-action-setup-order-cancel-login"},{"title":"Read an action's current step","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/actions/{id}","href":"/api-reference/partner/actions/read-an-actions-current-step"},{"title":"Answer the current step (signature or wallet result)","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/actions/{id}","href":"/api-reference/partner/actions/answer-the-current-step-signature-or-wallet-result"}]},{"group":"Reads","pages":[{"title":"Read a wallet's readiness and balances per venue","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/wallets/{address}","href":"/api-reference/partner/reads/read-a-wallets-readiness-and-balances-per-venue"},{"title":"List a wallet's orders across venues","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/wallets/{address}/orders","href":"/api-reference/partner/reads/list-a-wallets-orders-across-venues"},{"title":"List a wallet's positions across venues","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/wallets/{address}/positions","href":"/api-reference/partner/reads/list-a-wallets-positions-across-venues"}]},{"group":"Fees (preview)","pages":[{"title":"Read a wallet's unpaid trading fees per venue","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/fees","href":"/api-reference/partner/fees-preview/read-a-wallets-unpaid-trading-fees-per-venue"},{"title":"Open a settlement for a wallet's unpaid fees on one venue","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/fees/settlements","href":"/api-reference/partner/fees-preview/open-a-settlement-for-a-wallets-unpaid-fees-on-one-venue"},{"title":"Read (and advance) a fee settlement","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/fees/settlements/{id}","href":"/api-reference/partner/fees-preview/read-and-advance-a-fee-settlement"},{"title":"Post the wallet's signature or transaction hash for a settlement","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/fees/settlements/{id}/answer","href":"/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement"}]},{"group":"Trade plans (preview)","pages":[{"title":"Prepare a trade plan (one buy, optionally funded cross-chain)","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans","href":"/api-reference/partner/trade-plans-preview/prepare-a-trade-plan-one-buy-optionally-funded-cross-chain"},{"title":"Read a trade plan","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/trade-plans/{id}","href":"/api-reference/partner/trade-plans-preview/read-a-trade-plan"},{"title":"Post signatures for a trade plan's requests","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nPosts one or more signatures for the plan's `requests[]`. Answers may arrive in several batches; the whole batch is checked before anything is stored. When every required signature is in, `status` becomes `ready_to_execute`. You can also skip this call and send all signatures in the `/execute` body.\n\nEach signature must be 65 bytes, low-s, and recover to `wallet` over that request's typed data. Re-sending an accepted signature is a no-op; a different signature for an accepted request is refused. With `submission.funding: \"client\"`, keep the funding signatures — Kairos refuses them. Only `kind: \"signature\"` answers are accepted.","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans/{id}/answers","href":"/api-reference/partner/trade-plans-preview/post-signatures-for-a-trade-plans-requests"},{"title":"Commit a trade plan for execution","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans/{id}/execute","href":"/api-reference/partner/trade-plans-preview/commit-a-trade-plan-for-execution"},{"title":"Report client-submitted funding permits","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nOnly for committed plans with `submission.funding: \"client\"`. After you POST a signed funding permit to its `externalSubmission.endpoint`, report it here so Kairos checks the funding right away. A report is only a hint: it never marks funding as confirmed — Kairos confirms from the provider and the destination chain. `requestHash` and `providerRequestId` must equal the values on the plan's request.","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/trade-plans/{id}/reports","href":"/api-reference/partner/trade-plans-preview/report-client-submitted-funding-permits"}]},{"group":"On-chain intents (preview)","pages":[{"title":"Prepare a split, merge or redeem on a Polymarket deposit wallet","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/onchain-intents","href":"/api-reference/partner/on-chain-intents-preview/prepare-a-split-merge-or-redeem-on-a-polymarket-deposit-wallet"},{"title":"Read an on-chain intent","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json get /v3/onchain-intents/{id}","href":"/api-reference/partner/on-chain-intents-preview/read-an-on-chain-intent"},{"title":"Commit an on-chain intent with its signatures","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/onchain-intents/{id}/execute","href":"/api-reference/partner/on-chain-intents-preview/commit-an-on-chain-intent-with-its-signatures"},{"title":"Report the transaction hash of a client-submitted intent","deprecated":null,"version":null,"openapi":"/openapi/wallet-api.json post /v3/onchain-intents/{id}/reports","href":"/api-reference/partner/on-chain-intents-preview/report-the-transaction-hash-of-a-client-submitted-intent"}]}]}]},{"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","pages":[{"title":"API Reference","href":"/api-reference"}]}]},"basePath":"","title":"Commit a trade plan for execution - 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"]}