Prepare a split, merge or redeem on a Polymarket deposit wallet
Preview: available on staging (https://staging-execution.kairos.trade); production returns 503 until release.
Runs one conditional-token operation — split, merge or redeem — on the wallet's Polymarket deposit wallet on Polygon. Kairos builds the exact calls and returns two typed-data requests for the owner to sign; the wallet pays no gas. Kairos marks the intent confirmed only after it verifies a finalized receipt whose token transfers equal intent.terms.effects exactly.
Scope. Polymarket on Polygon (137), binary markets only. redeem needs a resolved market and an outcome; markets on the legacy conditional-token contract cannot be redeemed here. Each batch is [approval, operation]: merge and redeem leave a standing operator approval (setApprovalForAll) for the operating contract on the deposit wallet. The wallet must already be set up through a setup action.
Addresses wallet and account must be lowercase; a checksummed address is refused.
Flow. Prepare → sign consentRequest (and nativeRequest when submissionOwner is kairos) → POST /v3/onchain-intents/{id}/execute before executeBefore (at most 5 minutes out) → poll GET /v3/onchain-intents/{id} until confirmed.
Do not broadcast the batch from the wallet or the deposit wallet: a transaction sent from either never confirms. With submissionOwner: "client" (for integrators that have arranged submission access with Kairos), POST submission.body plus "signature": <native signature> to submission.endpoint, then report the transaction hash.
Chaining. dependencies lists earlier intents on the same deposit wallet (for example a split, then a merge); an intent executes only after its dependencies are confirmed. A trade plan can also depend on a confirmed intent through ctfDependencies.
Idempotency. Idempotency-Key is required. The same key with the same body returns the original intent in its current state; with a different body it is 409.
Request
- Base URLhttps://execution.kairos.trade
- Auth
- API key in header X-Kairos-Partner-Id and API key in header Authorization
- or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret and API key in header Authorization
- or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
- or API key in header X-Kairos-Partner-Id and API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
- or API key in header X-Kairos-Partner-Id and HTTP bearer
Headers
1–128 printable ASCII characters, no spaces. Scoped to the wallet's account and the partner, and never expires. The same key with the same body returns the original object in its current state; the same key with a different body is refused with 409. Not honoured on /v3/actions — use clientOrderId there.
Request body
Example request
{
"wallet": "0x8ba1f109551bd432803012645ac136ddd64dba72",
"account": "0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b",
"market": "polymarket:0x5f3a8e1c2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6a",
"amountRaw": "1000000",
"executeBefore": "2026-10-28T12:04:00Z"
}Response
The prepared intent (needs_signatures) and the two requests to sign.
Changes
No recorded changes to this operation across all 1 revision of this API.