What you bring vs. what Kairos does
Every order Kairos submits on your behalf carries a signature that recovers to an address registered to your account. A signature over one order cannot be replayed onto another — the signed digest pins price, size, side, token, maker/signer, and venue (the verifying contract, which differs between standard and neg-risk markets). Expiration and
post_only sit on the outer payload rather than inside Polymarket’s signed Order struct; replay is instead foreclosed by the per-order salt and timestamp, and by single-use intents.
The account model
You trade as an EOA (signatureType = 0 on Polymarket) by default: the wallet that signs is the wallet that makes the order and holds the funds. There is no Safe, proxy, or managed sub-org — the simplest, fully non-custodial shape. It signs orders (EIP-712), holds the settlement asset (e.g. pUSD on Polygon), and pays its own gas for any on-chain operation; owner, signer, and maker are always the same address.
If your users hold smart-contract wallets instead — a MetaMask Smart Account, a Safe, or a Polymarket proxy — set signature_type = 3 (Poly1271) and the order is verified with EIP-1271 isValidSignature rather than ecrecover: Kairos binds the wallet to your account, and the Polymarket CLOB performs the ERC-1271 check. No bundler or userOp is involved. GET /v2/providers reports the accepted signature_schemes per venue.
Access
The lane is open to any authenticated account — there is no allow-list to join and no per-account approval step. You need a credential (a Kairos JWT, a SIWE wallet session, a scoped API key, or a delegation grant) and a signing wallet registered to your account, but you do not need to be pre-approved. An API key is optional. Wallet/JWT auth is enough to trade; an API key is only worth holding because it earns a higher rate limit — see rate limits.Signing is the real gate. Opening access widens who may try; it does not widen who may sign. Every order must be signed by a wallet registered to your account, and the venue still enforces your balance, approvals and tick. Kairos verifies the signature and forwards it — it never signs for you.
Rate limits
Heavy endpoints (onboarding, balances, credential provisioning, on-chain ops, SIWE, delegation) are rate-limited per client and per endpoint. API-key callers get a materially higher budget than wallet/JWT callers:
Exceeding it is a
429. The budgets are deployment-configured; treat them as a guide, not a contract.
Gotcha: the kill-switch is prompt, not atomic. A deployment can restore the per-account allow-list (FASTLANE_OPEN_ACCESS=false); when it does, the per-user flag is served from a short-lived cache, so a change takes effect within a couple of seconds — longer if the central database is degraded. Do not build anything that assumes an instant cutoff.
Getting started
- Authenticate. Use a Kairos JWT, a SIWE wallet session, a scoped API key, or a delegation grant. No allow-list approval is required.
- Register your signing EOA(s). Kairos only accepts signatures that recover to an address registered to your account. Self-serve:
POST /v2/wallets/challenge→ sign the returned message →POST /v2/wallets/register. You may register several (e.g. a primary and a backup HSM key); any of them can sign. Revoke one withPOST /v2/wallets/revoke. - Fund your wallet. Deposit the venue’s settlement asset into your EOA on the venue’s chain (for Polymarket: pUSD on Polygon). You control the deposit entirely; there is no custody step.
- Set on-chain approvals. Before the venue can move your collateral on a fill, your EOA needs one-time approvals (for Polymarket:
pUSD.approveandConditionalTokens.setApprovalForAllagainst the CTF Exchange, plus the NegRisk variants). Self-serve: callPOST /v2/onchain/intentwithop: "approvals", sign each returnedsigning_digest_hexwith your EOA, and post the signatures toPOST /v2/onchain/submit. You supply thenonceandgas_price_weiand you pay the gas. Your account manager can also walk through this during onboarding. - Keep a small gas balance. Order placement and cancellation on Polymarket are off-chain and gasless; gas is only needed for the on-chain operations above (a few cents of POL for approvals, more only if you later redeem resolved positions).
- Get your credentials & node assignment. Obtain your Kairos JWT (or a scoped API key) and confirm which regional execution node you connect to for lowest latency. Self-serve credential paths: log in with your wallet via SIWE (
POST /v2/auth/siwe/challenge→/verify) to mint a scoped API key, and self-provision your Polymarket L2 credentials viaPOST /v2/credentials/polymarket/intent→/submit. A partner integrating on behalf of others can delegate authority with an off-chain EIP-712 grant. - Check readiness, then place your first order.
GET /v2/onboarding/statusreports, per provider, your registered wallets, credential/approval state and the next step;GET /v2/wallets/balancesshows gas and settlement balances. Then follow the Signing & Order Lifecycle walkthrough. See Partner auth & self-serve onboarding for the full surface.
Onboarding checklist
- Account authenticated (JWT, SIWE, API key, or delegation) — no allow-list approval needed
- Signing EOA(s) registered to your account (self-serve via
/v2/wallets/*) - Wallet funded with the venue settlement asset (e.g. pUSD on Polygon)
- On-chain approvals set (self-serve via
/v2/onchain/*, or with your account manager) - Small native-gas balance (POL) on hand for approvals and any future redemptions
- Kairos JWT / API key in hand (JWT, or one minted via SIWE or self-provisioned for Polymarket)
- Regional node / colocation confirmed with Kairos
GET /v2/onboarding/statusreportsnext_action: nullfor your venue
What’s live today
This page — and the rest of this section — documents only what you can integrate against today. See Signing & Order Lifecycle for the full request/response flow and runnable code.
Security model in one paragraph
You authenticate to your regional node with a Kairos JWT (or scoped API key). Every order Kairos submits is reconstructed server-side from stored inputs, and its signature isecrecover’d to an address that must be registered to your account. Intents are single-use, short-TTL, and bound to the account that created them. A leaked intent id is useless without the matching signature, and a signature over one payload cannot be replayed onto another. You never supply a contract address or calldata — the only thing Kairos submits is bytes you signed.
See also
- Signing & Order Lifecycle — EIP-712 signing rules, the intent → sign → submit flow, the WebSocket one-round-trip path, order types, fills, and cancels, with runnable code.
- Partner Auth & Self-Serve Onboarding — SIWE wallet login, self-serve wallet registration, Polymarket credential self-provisioning, partner delegation, and the readiness/balance introspection endpoints.
- Regional Execution Nodes — where to connect for the lowest latency, what’s served regionally vs. centrally, and the live-position source-of-truth caveat.
- API Reference — full request/response schemas for every endpoint referenced in this section.
- REST › Orders and WebSocket › Order Execution — the general execution API surface (custodial signing).

