Post the wallet's signature or transaction hash for a settlement
Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503.
Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed.
A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).
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.
Predict.fun — 0x + 64 hex hash of the payment transaction (not all zeros).
Pattern: ^0x[0-9a-fA-F]{64}$
Response
The settlement, refreshed after the answer — usually submitted. If the payment transaction is already known and in a finalized block (a Predict.fun hash, or a batch the relayer reports mined), it may come back confirmed or failed.
A payment of a wallet's unpaid fees on one venue. The amount is frozen when the settlement opens.
awaiting_signature → submitted → confirmed. Terminal: confirmed and failed. expired is final unless it is a Predict.fun settlement whose reported transaction lands within 7 days of expiring: GET /v3/fees or POST /v3/fees/settlements then credits it and it becomes confirmed (GET /v3/fees/settlements/{id} does not re-check an expired settlement).
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"
}
{
"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/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement","slug":"/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement","pageMetadata":{"title":"Post the wallet's signature or transaction hash for a settlement","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); not yet released in production, where trade plans — the only source of this fee debt — return `503`.\n\nAnswers a settlement in `awaiting_signature`: a `signature` on Polymarket, a `transactionHash` on Predict.fun — never both. On success the settlement is `submitted`; poll `GET /v3/fees/settlements/{id}` until it is `confirmed`.\n\nA Polymarket signature must be a plain 65-byte ECDSA signature from `wallet` (low-s); smart-account signatures are refused. It is accepted until 30 s before `expiresAt`. `wallet` must be the wallet that opened the settlement (`walletRequest.request.params[0]` on Polymarket).","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","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 ..._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 }), \"); not yet released in production, where trade plans — the only source of this fee debt — return \", _jsx(_components.code, {\n children: \"503\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Answers a settlement in \", _jsx(_components.code, {\n children: \"awaiting_signature\"\n }), \": a \", _jsx(_components.code, {\n children: \"signature\"\n }), \" on Polymarket, a \", _jsx(_components.code, {\n children: \"transactionHash\"\n }), \" on Predict.fun — never both. On success the settlement is \", _jsx(_components.code, {\n children: \"submitted\"\n }), \"; poll \", _jsx(_components.code, {\n children: \"GET /v3/fees/settlements/{id}\"\n }), \" until it is \", _jsx(_components.code, {\n children: \"confirmed\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A Polymarket signature must be a plain 65-byte ECDSA signature from \", _jsx(_components.code, {\n children: \"wallet\"\n }), \" (low-s); smart-account signatures are refused. It is accepted until 30 s before \", _jsx(_components.code, {\n children: \"expiresAt\"\n }), \". \", _jsx(_components.code, {\n children: \"wallet\"\n }), \" must be the wallet that opened the settlement (\", _jsx(_components.code, {\n children: \"walletRequest.request.params[0]\"\n }), \" on Polymarket).\"]\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":"Post the wallet's signature or transaction hash for a settlement","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); not yet released in production, where trade plans — the only source of this fee debt — return `503`.\n\nAnswers a settlement in `awaiting_signature`: a `signature` on Polymarket, a `transactionHash` on Predict.fun — never both. On success the settlement is `submitted`; poll `GET /v3/fees/settlements/{id}` until it is `confirmed`.\n\nA Polymarket signature must be a plain 65-byte ECDSA signature from `wallet` (low-s); smart-account signatures are refused. It is accepted until 30 s before `expiresAt`. `wallet` must be the wallet that opened the settlement (`walletRequest.request.params[0]` on Polymarket).","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"answerFeeSettlement","summary":"Post the wallet's signature or transaction hash for a settlement","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); not yet released in production, where trade plans — the only source of this fee debt — return `503`.\n\nAnswers a settlement in `awaiting_signature`: a `signature` on Polymarket, a `transactionHash` on Predict.fun — never both. On success the settlement is `submitted`; poll `GET /v3/fees/settlements/{id}` until it is `confirmed`.\n\nA Polymarket signature must be a plain 65-byte ECDSA signature from `wallet` (low-s); smart-account signatures are refused. It is accepted until 30 s before `expiresAt`. `wallet` must be the wallet that opened the settlement (`walletRequest.request.params[0]` on Polymarket).","tags":["Fees (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":["fb6373b4-4fa8-4256-b614-cbf4c94acbc3","b121b947-d215-4484-95ec-1ac9f889cd3f","56e1b1cf-3b24-45d2-8144-95514df86a9c","da489bd5-0409-4c79-bec3-ed787203d3c8","187f2319-c610-4aa6-8e4b-310513dad141"],"parameters":["25a2c34e-d0a9-4db6-8eb2-f48242f64a15"],"requestBody":"90339bf7-5dd0-4ac4-bab0-12c8cdf44bda","responses":{"200":"2d8bbe45-541c-40e6-9c59-5cc09c7ee8dd","400":"87866187-7365-4705-a318-1b84855fdb64","401":"706ce322-cdb7-47a8-87f2-2eda298f160d","403":"526c2bb8-1d48-4542-afde-8125b0939aa7","404":"2f68b9d6-11ea-4cf1-9218-60e8c566c9a0","409":"7c06fa66-b45d-4369-b039-e4dbe3e2e513","410":"7a9af3f8-698c-404b-8cd7-1cce076dc963","413":"2744f484-3af0-46dc-bd65-1fed420c4f15","415":"3277208c-93b1-4834-9a89-c3ad0d4aa298","422":"9de1f64a-f3a7-4da8-a5b8-16b161bc6a5f","429":"553e1047-d8de-4332-a975-1efd4e5d6811","500":"641a5036-4d2c-4196-9a27-ad00e467d88c","502":"0c6d6db1-7ec2-4979-bdb9-d2a9ca549ced","503":"218510d5-2adc-4f3c-a78b-fa21d147c843"},"method":"post","type":"path","servers":["330d272c-627a-4ff5-ad01-0263b300ce7a","83635983-3d27-4bb6-bc26-42ecc043c06c"],"path":"/v3/fees/settlements/{id}/answer","baseUrlOptions":["https://execution.kairos.trade","https://staging-execution.kairos.trade"],"title":"Post the wallet's signature or transaction hash for a settlement","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"25a2c34e-d0a9-4db6-8eb2-f48242f64a15":{"name":"id","in":"path","required":true,"description":"Settlement id.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Settlement id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Send `signature` (Polymarket) or `transactionHash` (Predict.fun) — exactly one.","required":["wallet"],"properties":{"wallet":{"type":"string","description":"EVM address, `0x` + 40 hex.","pattern":"^0x[0-9a-fA-F]{40}$","example":"0x8ba1f109551bd432803012645ac136ddd64dba72","isRequired":true,"uniqueKey":"wallet","typeLabel":"string"},"signature":{"type":"string","description":"Polymarket — 65-byte ECDSA signature of `walletRequest`, `0x`-prefixed hex (`v` of 0, 1, 27 or 28; low-s).","pattern":"^0x[0-9a-fA-F]{130}$","uniqueKey":"signature","typeLabel":"string"},"transactionHash":{"type":"string","description":"Predict.fun — `0x` + 64 hex hash of the payment transaction (not all zeros).","pattern":"^0x[0-9a-fA-F]{64}$","uniqueKey":"transactionHash","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"polymarket":{"title":"polymarket","value":{"wallet":"0x8ba1f109551bd432803012645ac136ddd64dba72","signature":"0x4f8b2c1d9e7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c3d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e1b"}},"predictfun":{"title":"predictfun","value":{"wallet":"0x8ba1f109551bd432803012645ac136ddd64dba72","transactionHash":"0x7c3e9a1b5d2f4c6e8a0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"2d8bbe45-541c-40e6-9c59-5cc09c7ee8dd":{"description":"The settlement, refreshed after the answer — usually `submitted`. If the payment transaction is already known and in a finalized block (a Predict.fun hash, or a batch the relayer reports mined), it may come back `confirmed` or `failed`.","content":{"application/json":{"schema":{"type":"object","description":"A payment of a wallet's unpaid fees on one venue. The amount is frozen when the settlement opens.","required":["id","venue","status","holdingWallet","assetKey","chainId","token","treasury","decimals","amountRaw","transactionHash","expiresAt","failure","walletRequest"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"venue":{"type":"string","enum":["polymarket","predictfun"],"isRequired":true,"uniqueKey":"venue","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["awaiting_signature","submitted","confirmed","failed","expired"],"description":"`awaiting_signature` → `submitted` → `confirmed`. Terminal: `confirmed` and `failed`. `expired` is final unless it is a Predict.fun settlement whose reported transaction lands within 7 days of expiring: `GET /v3/fees` or `POST /v3/fees/settlements` then credits it and it becomes `confirmed` (`GET /v3/fees/settlements/{id}` does not re-check an expired settlement).","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"holdingWallet":{"type":"string","description":"Address the fee is paid from — Polymarket's trading wallet, or the wallet itself on Predict.fun.","isRequired":true,"uniqueKey":"holdingWallet","typeLabel":"string"},"assetKey":{"type":"string","example":"evm:137:0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","isRequired":true,"uniqueKey":"assetKey","typeLabel":"string"},"chainId":{"type":"string","description":"Chain id as a **decimal** string (`walletRequest.chainId` is hex).","example":"137","isRequired":true,"uniqueKey":"chainId","typeLabel":"string"},"token":{"type":"string","description":"Fee token (pUSD on Polygon, USDT on BNB Chain).","isRequired":true,"uniqueKey":"token","typeLabel":"string"},"treasury":{"type":"string","description":"The payee address.","isRequired":true,"uniqueKey":"treasury","typeLabel":"string"},"decimals":{"type":"integer","description":"Token decimals (6 for pUSD, 18 for BNB Chain USDT).","isRequired":true,"uniqueKey":"decimals","typeLabel":"integer"},"amountRaw":{"type":"string","description":"Amount to pay, integer string in token base units.","isRequired":true,"uniqueKey":"amountRaw","typeLabel":"string"},"transactionHash":{"oneOf":[{"type":"string","description":"The payment transaction, once known.","isRequired":true,"uniqueKey":"transactionHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The payment transaction, once known.","isRequired":true,"uniqueKey":"transactionHash.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transactionHash","typeLabel":"string | null"},"expiresAt":{"oneOf":[{"type":"string","format":"date-time","description":"Polymarket — sign before this (30 minutes after opening). `null` on Predict.fun.","isRequired":true,"uniqueKey":"expiresAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Polymarket — sign before this (30 minutes after opening). `null` on Predict.fun.","isRequired":true,"uniqueKey":"expiresAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"expiresAt","typeLabel":"string\u003cdate-time> | null"},"failure":{"oneOf":[{"type":"string","description":"Why the settlement failed or expired. Kept when a late Predict.fun payment later confirms an `expired` settlement.","isRequired":true,"uniqueKey":"failure.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the settlement failed or expired. Kept when a late Predict.fun payment later confirms an `expired` settlement.","isRequired":true,"uniqueKey":"failure.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"failure","typeLabel":"string | null"},"walletRequest":{"oneOf":[{"type":"object","description":"Present only while `awaiting_signature`.","required":["kind","chainId","request"],"example":{"kind":"transaction","chainId":"0x38","request":{"method":"eth_sendTransaction","params":[{"from":"0x8ba1f109551bd432803012645ac136ddd64dba72","to":"0x55d398326f99059ff775485246999027b3197955","value":"0x0","data":"0xa9059cbb0000000000000000000000003333333333333333333333333333333333333333000000000000000000000000000000000000000000000000ad78ebc5ac620000","chainId":"0x38"}]}},"properties":{"kind":{"type":"string","enum":["signature","transaction"],"isRequired":true,"uniqueKey":"walletRequest.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"chainId":{"type":"string","description":"Chain to switch to, **hex** (`0x89` or `0x38`).","isRequired":true,"uniqueKey":"walletRequest.oneOf.0.chainId","typeLabel":"string"},"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":"walletRequest.oneOf.0.request.method","typeLabel":"enum\u003cstring>"},"params":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"walletRequest.oneOf.0.request.params.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"walletRequest.oneOf.0.request.params","typeLabel":"any[]"}},"example":{"method":"personal_sign","params":["0x6b6169726f732e7472616465207761…","0x8ba1f109551bD432803012645Ac136ddd64DBA72"]},"isRequired":true,"uniqueKey":"walletRequest.oneOf.0.request","typeLabel":"object"}},"isRequired":true,"uniqueKey":"walletRequest.oneOf.0","typeLabel":"object"},{"type":"null","description":"Present only while `awaiting_signature`.","isRequired":true,"uniqueKey":"walletRequest.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"walletRequest","typeLabel":"object | null"}},"example":{"id":"4e1d2c3b-5a6f-4b7c-8d9e-0f1a2b3c4d5e","venue":"polymarket","status":"awaiting_signature","holdingWallet":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","assetKey":"evm:137:0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","treasury":"0x3333333333333333333333333333333333333333","decimals":6,"amountRaw":"12500000","transactionHash":null,"expiresAt":"2026-10-28T12:30:00Z","failure":null,"walletRequest":{"kind":"signature","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{\"types\":{\"EIP712Domain\":[…],\"Batch\":[{\"name\":\"wallet\",\"type\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"calls\",\"type\":\"Call[]\"}],\"Call\":[…]},\"domain\":{\"name\":\"DepositWallet\",\"version\":\"1\",\"chainId\":\"137\",\"verifyingContract\":\"0x2f9c…4c3b\"},\"primaryType\":\"Batch\",\"message\":{…}}"]}}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"4e1d2c3b-5a6f-4b7c-8d9e-0f1a2b3c4d5e","venue":"polymarket","status":"awaiting_signature","holdingWallet":"0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b","assetKey":"evm:137:0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","chainId":"137","token":"0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb","treasury":"0x3333333333333333333333333333333333333333","decimals":6,"amountRaw":"12500000","transactionHash":null,"expiresAt":"2026-10-28T12:30:00Z","failure":null,"walletRequest":{"kind":"signature","chainId":"0x89","request":{"method":"eth_signTypedData_v4","params":["0x8ba1f109551bd432803012645ac136ddd64dba72","{\"types\":{\"EIP712Domain\":[…],\"Batch\":[{\"name\":\"wallet\",\"type\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"calls\",\"type\":\"Call[]\"}],\"Call\":[…]},\"domain\":{\"name\":\"DepositWallet\",\"version\":\"1\",\"chainId\":\"137\",\"verifyingContract\":\"0x2f9c…4c3b\"},\"primaryType\":\"Batch\",\"message\":{…}}"]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"87866187-7365-4705-a318-1b84855fdb64":{"description":"`answer with a signature on Polymarket or a transactionHash on Predict.fun`; `invalid transactionHash`; `wallet must be a 0x address`. Plain text for malformed JSON or a non-UUID `{id}`. With API-key wallet proof a malformed `wallet` is `404 wallet not found` instead.","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"},"706ce322-cdb7-47a8-87f2-2eda298f160d":{"description":"`signature does not authorize this fee settlement` — malformed (not `0x` + 130 hex), high-s, or not signed by `wallet` over this batch; or a tenant or sign-in failure (see `GET /v3/wallets/{address}/orders`).","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"},"526c2bb8-1d48-4542-afde-8125b0939aa7":{"description":"`API key missing trade:read scope` (reads) or `API key missing trade:execute scope` (writes) when an API key is the caller — `trade:execute` does not imply `trade:read`; or a tenant refusal: `unknown partner id`, `this partner id is used with its API key; send the key instead of X-Kairos-Partner-Id`, `this API key lacks the trade:execute scope`, `the wallet API 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"},"example":{"error":"API key missing trade:read scope"},"examples":{"Example":{"title":"Example","value":{"error":"API key missing trade:read scope"}}},"exampleType":"examples"}},"exampleType":"examples"},"2f68b9d6-11ea-4cf1-9218-60e8c566c9a0":{"description":"`fee settlement not found` — unknown, or not this wallet's; `wallet not found`.","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"},"7c06fa66-b45d-4369-b039-e4dbe3e2e513":{"description":"`this fee settlement no longer accepts an answer`; `that transaction already paid another settlement`.","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"},"7a9af3f8-698c-404b-8cd7-1cce076dc963":{"description":"`this fee settlement expired; create a new one` — fewer than 30 s were left before `expiresAt`.","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"},"2744f484-3af0-46dc-bd65-1fed420c4f15":{"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"},"3277208c-93b1-4834-9a89-c3ad0d4aa298":{"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"},"9de1f64a-f3a7-4da8-a5b8-16b161bc6a5f":{"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"},"553e1047-d8de-4332-a975-1efd4e5d6811":{"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"},"641a5036-4d2c-4196-9a27-ad00e467d88c":{"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"},"0c6d6db1-7ec2-4979-bdb9-d2a9ca549ced":{"description":"`the Polymarket relayer refused the settlement` — the settlement is now `failed`; open 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"},"examples":{"Example":{"title":"Example","value":{"error":"unknown or expired action"}}},"exampleType":"generated"}},"exampleType":"generated"},"218510d5-2adc-4f3c-a78b-fa21d147c843":{"description":"`fee settlement storage is unavailable`; `the BNB Chain treasury is unavailable`; another settlement dependency is unavailable; `the chain RPC is unavailable`; `partner registry unavailable; retry shortly`; `rate limiter unavailable`. Retry later.","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":{"fb6373b4-4fa8-4256-b614-cbf4c94acbc3":{"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"}},"b121b947-d215-4484-95ec-1ac9f889cd3f":{"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"}},"56e1b1cf-3b24-45d2-8144-95514df86a9c":{"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"}},"da489bd5-0409-4c79-bec3-ed787203d3c8":{"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"}},"187f2319-c610-4aa6-8e4b-310513dad141":{"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":"Post the wallet's signature or transaction hash for a settlement - Kairos","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T04:21:19.600Z","originalFileLocation":"api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement.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); not yet released in production, where trade plans — the only source of this fee debt — return 503. Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed. A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).\">\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=\"Post the wallet\u0026#x27;s signature or transaction hash for a settlement - Kairos\">\u003cmeta data-mint-head property=\"og:description\" content=\"Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503. Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed. A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).\">\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/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement\">\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=Fees+%28preview%29\u0026amp;title=Post+the+wallet%27s+signature+or+transaction+hash+for+a+settlement\u0026amp;description=Preview%3A+available+on+staging+%28%60https%3A%2F%2Fstaging-execution.kairos.trade%60%29%3B+not+yet+released+in+production%2C+where+trade+plans+%E2%80%94+the+only+source+of+this+fee+debt+%E2%80%94\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=c0180bb258dfd0cf0d0e7c0e72021beb847fc883c9ca9b260e5dd4074e80ff6b\">\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=\"Post the wallet\u0026#x27;s signature or transaction hash for a settlement - Kairos\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503. Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed. A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kairos-c5456474.mintlify.app/_mintlify/api/og/v2?division=Fees+%28preview%29\u0026amp;title=Post+the+wallet%27s+signature+or+transaction+hash+for+a+settlement\u0026amp;description=Preview%3A+available+on+staging+%28%60https%3A%2F%2Fstaging-execution.kairos.trade%60%29%3B+not+yet+released+in+production%2C+where+trade+plans+%E2%80%94+the+only+source+of+this+fee+debt+%E2%80%94\u0026amp;theme=530643ae41273bc052a9a850\u0026amp;signature=c0180bb258dfd0cf0d0e7c0e72021beb847fc883c9ca9b260e5dd4074e80ff6b\">\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/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement\">\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/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement.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/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement#webpage\",\"url\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement\",\"name\":\"Post the wallet's signature or transaction hash for a settlement\",\"description\":\"Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503. Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed. A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).\",\"dateModified\":\"2026-10-29T04:21:19.600Z\",\"isPartOf\":{\"@id\":\"https://docs.kairos.trade#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement#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\":\"Fees (preview)\",\"item\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/read-a-wallets-unpaid-trading-fees-per-venue\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Post the wallet's signature or transaction hash for a settlement\",\"item\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement#apireference\",\"headline\":\"Post the wallet's signature or transaction hash for a settlement\",\"name\":\"Post the wallet's signature or transaction hash for a settlement\",\"description\":\"Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503. Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed. A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).\",\"url\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kairos.trade/api-reference/partner/fees-preview/post-the-wallets-signature-or-transaction-hash-for-a-settlement#webpage\"},\"dateModified\":\"2026-10-29T04:21:19.600Z\",\"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","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); not yet released in production, where trade plans — the only source of this fee debt — return `503`.\n\nReturns the settlement after refreshing it from chain evidence. **This read is what advances a settlement** — poll it until `status` is terminal (`confirmed`, `failed`, `expired`). `confirmed` requires the payment to be in a **finalized** block, so it can trail the transaction by minutes.\n\nStatuses: `awaiting_signature` → (answer) → `submitted` → `confirmed`. A Polymarket settlement left unsigned past `expiresAt` becomes `expired`; a Predict.fun hash that never appears on chain within an hour becomes `expired`. If that transaction lands within 7 days of expiring, `GET /v3/fees` or `POST /v3/fees/settlements` (not this read) credits it and moves the settlement to `confirmed`. A Polymarket batch the relayer fails, or never executes by 5 minutes after `expiresAt`, becomes `failed`. `failed` carries a reason in `failure`, for example `the transaction reverted`, `transfer differs from the settlement`, `receipt contains no settlement transfer`, `receipt pays the settlement more than once`, `transaction predates the 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)","description":"Preview: available on staging (`https://staging-execution.kairos.trade`); production returns `503` until release.\n\nA trade plan is **one buy order on one venue**, authorized up front in one batch of signatures, with an explicit fee ceiling (`tradeBudget`) and hard deadlines. When the venue account is short of collateral, the plan can also bridge **exactly the shortfall** from the same wallet's USDC on Polygon (`137`) or Arbitrum (`42161`) through gasless permits. Kairos runs funding first and submits the order only after the destination credit is final.\n\nUse `/v3/actions` for sells, cancels, setup and login; trade plans are buy-only and the venue wallet must already be set up through a `setup` action.\n\n**Flow.** Prepare → check `order` (the server may normalize it: canonical `outcome`; on Predict.fun a `GTC` order becomes a `GTD` order bounded by the venue session) → sign every `requests[]` entry whose `actionable` is `true` → `POST /v3/trade-plans/{id}/answers` and/or `POST /v3/trade-plans/{id}/execute` before `executeBefore` → poll `GET /v3/trade-plans/{id}`.\n\nAn unfunded plan needs 2 signatures (`plan`, `trade`); a funded plan adds `funding-1` and `funding-2`, signed on the **source** chain. Every signature must be a plain 65-byte ECDSA signature (low-s) from `wallet`.\n\n**Idempotency.** `Idempotency-Key` is required. The same key with the same body returns the stored plan in its current state; with a different body it is `409`. `clientOrderId` is unique per wallet and venue across plans.\n\n**Fees.** `tradeBudget.maxPlatformFeeBps` is the Kairos maximum plus the partner maximum (`partnerFee.maxBps`), never above 1000 bps (10%). Partner fees are configured by Kairos per partner and pinned into the plan the wallet signs. Fees are not deducted in the order: they accrue as debt and are paid through `/v3/fees/settlements`. When the wallet's debt is at or above the partner's threshold, prepare returns `409 FEE_SETTLEMENT_REQUIRED`.","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","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","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":"Post the wallet's signature or transaction hash for a settlement - 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"]}