1. Run setup
One setup covers every venue. It skips whatever is already done, so calling it again on a ready wallet asks for nothing.
Each venue asks for its own signature because each venue defines its own login, and approvals live on each venue’s chain. If the wallet has no BNB for the Predict.fun approvals, or has never deposited to Hyperliquid (which refuses every action from an unfunded account), setup asks for nothing there and that venue reports
next: "fund".
Pass { venues: ['predictfun'] } to set up only some venues.
2. Fund the wallet
Use your wallet’s normal send flow. Check readiness at any time:
next is "setup", "wait" (approvals the wallet already sent are still confirming; nothing to sign, check again shortly), "fund", "blocked" (that venue account cannot be used here, for example a Hyperliquid portfolio-margin account; venueDetail.reason says why), or null when the wallet can trade. ready: true with next: "fund" means setup is done everywhere but there are no funds yet. Balances are in whole units of each venue’s currency.
3. Read readiness
Wallet status is public and needs no signature. Poll it to drive your UI:
The top-level
next is the first thing to do across all venues. Each venue in venues has its own ready, next and balance, so you can show readiness per venue. See wallet status for every field, and venue rules for what each venue asks for.
Over HTTP, setup is an action like any other: POST /v3/actions with X-Kairos-Wallet-Api: 2 and { "wallet": "0x…", "action": { "type": "setup", "venues": ["polymarket"] } }. Leave out venues to set up every venue. See plain HTTP clients.
