> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kairos.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# Venue rules

> Polymarket, Predict.fun and Hyperliquid through the wallet API: chains, collateral, setup, order rules and limits side by side.

One setup, order, cancel and read cover every venue. What differs is the chain, the collateral, and a few order rules.

## At a glance

| | Polymarket | Predict.fun | Hyperliquid |
| - | - | - | - |
| Market id | `polymarket:0x<64 hex>` (or a bare condition id) | `predictfun:<digits>` | `hyperliquid:<digits>` |
| Signing chain | Polygon `0x89` | BNB Chain `0x38` | Arbitrum `0xa4b1` (signature only) |
| Collateral | pUSD on Polygon | USDT on BNB Chain | USDC in the Hyperliquid spot account |
| Where funds sit (`tradingWallet`) | A trading wallet owned by the user's address | The wallet itself | The wallet's own Hyperliquid account |
| Setup asks for | 1–2 signatures | One approvals batch (pays BNB gas), then 1 signature | 1–2 signatures |
| Gas | None | BNB, once, for approvals | None |
| Order signature | ERC-7739 wrapped Polymarket order | Predict.fun's EIP-712 order | Kairos `PlaceOrder`, placed by an approved agent |
| Time to sign an order | About 60 s | About 60 s | 5 minutes |
| Time in force | `GTC`, `GTD`, `FOK`, `FAK`, `IOC` | `GTC`, `GTD`, `FOK`, `FAK`, `IOC` | `GTC`, `FAK`, `IOC` |
| `postOnly` | With `GTC` or `GTD` | With `GTC` or `GTD` | With `GTC` |
| Price | 0–1, on the market's tick | 0–1, on the market's tick | Above 0 and below 1, up to 5 decimals |
| Size | Shares, on the venue's lot | Shares, on the venue's lot | Whole shares; a buy must be worth at least 10 USDC (price × size) |
| `clientOrderId` | Up to 128 characters | Up to 128 characters | `0x` + 32 lowercase hex |
| Partner fees ([trade plans](https://docs.kairos.trade/wallets/fees.md)) | Yes | Yes | No |

Every cancel signs on Polygon (`0x89`), whatever the venue. See [what the wallet signs](https://docs.kairos.trade/wallets/signing.md).

## Polymarket

* **Setup:** connect to Polymarket (a `ClobAuth` signature), then approve the trading wallet (a `Batch` signature) if it isn't approved yet. No gas.
* **Funding:** send **pUSD on Polygon** to `venues.polymarket.tradingWallet`.
* **Delayed markets:** some markets hold taking orders for a short delay before matching: sports markets during games (usually 1–3 s), others 250 ms. The action stays `working` with `holdUntilMs`, then ends `done` with the final fill. Market data shows the delay as `match_delay_ms`. See [delayed markets](https://docs.kairos.trade/wallets/reference.md#delayed-markets).
* **Selling right after buying:** bought shares settle on-chain a few seconds after the fill. Selling them sooner can fail with `VENUE_REJECTED` (`not enough balance`): retry after a few seconds.
* **Fees:** Polymarket charges its taker fee on top, in pUSD, so it never reduces `filledSize`.
* **Split, merge and redeem:** see [on-chain intents](https://docs.kairos.trade/wallets/onchain.md) (preview).

## Predict.fun

* **Setup:** one `wallet_sendCalls` with the missing approvals (the user pays BNB gas once, about 70,000 gas each), then a `personal_sign` of Predict.fun's own login message. With too little BNB, setup asks for nothing and reports `next: "fund"` with `venueDetail.reason` and `venueDetail.gasWei`.
* **Funding:** send **USDT on BNB Chain** to the wallet itself, plus a little BNB for the approvals.
* **Sessions:** the Predict.fun sign-in lasts about a day. An order asks for it again when less than an hour is left. Status shows it as `venueDetail.sessionExpiresAt`.
* **Resting orders end with the session.** A `GTC` order is placed as `GTD` ending 10 minutes before the session expires. A `GTD` order's `expiresAt` is capped the same way. Place a new order after the next sign-in.
* **Fills:** Predict.fun reports no fills when an order is posted, so order results come back with `final: false`. Follow fills in [orders](https://docs.kairos.trade/wallets/portfolio.md).
* **Fees:** the market's venue fee rate (`feeRateBps`) is part of the order the wallet signs.

## Hyperliquid

Hyperliquid outcome markets (HIP-4).

* **Setup:** one `ApproveAgent` signature, plus `ApproveBuilderFee` where a builder fee is configured. No gas. The agent can place and cancel orders only: it can't withdraw or transfer, and the user can revoke it on Hyperliquid at any time.
* **Funding:** deposit **USDC** to the wallet's Hyperliquid account. Hyperliquid refuses every action from an account that has never been funded, the agent approval included, so fund first, then set up.
* **Perps balance:** when spot USDC is short and the wallet's perps account can cover the gap, the order asks for one extra signature that moves exactly the shortfall from perps to spot. Status shows how much can move as `venueDetail.transferFromPerps.available`.
* **Cost check:** a buy needs `price × size × (1 + taker fee + builder fee)`, rounded up to the cent, in spot USDC.
* **Order status:** a just-placed order can come back as `executing`, then show `live` in [orders](https://docs.kairos.trade/wallets/portfolio.md) once Hyperliquid confirms it.
* **Blocked accounts:** some Hyperliquid account modes, such as portfolio margin, can't be used here. Status shows `next: "blocked"` with `venueDetail.reason`.
* **Agent removed:** if Hyperliquid prunes the agent, status shows `venueDetail.code: "HYPERLIQUID_AGENT_MISSING"`, and the next order re-approves it inline.

## Availability

Each venue can be switched off on its own, without a deploy:

* **Not offered here.** An order or a `setup` that names the venue answers `503 <venue> is not available right now`. Setup without `venues` and status leave it out of `venues`.
* **Switched off by Kairos.** Setup answers `403 API-key access to <venue> is disabled`. An order fails with the same error, at the latest when its signature is submitted, so nothing is placed.
* **Briefly unreachable.** Status shows the venue with `available: false` and an `error`, and leaves it out of `ready` and `next`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.