personal_sign and keeps the token it gets back. Run setup first: only a set-up wallet can sign in.
Every row has the same fields on every venue: venue, market (venue:market_id), outcome, prices 0–1 and sizes in shares. Drop open: true to include filled and cancelled orders. Orders are newest first; limit caps how many (default 50, up to 500). There is no cursor. Add venue to read one venue. resolved lists positions whose market resolved; redeemable is true for winners.
The token
- It can only read this wallet’s orders and positions. It can’t trade.
- It lasts 24 hours (
expiresAt). The SDK signs in again when it expires. - Kairos checks it by signature alone and stores nothing, so it can’t be revoked early. It just expires.
- To skip the prompt in a new session, keep the
{ token, expiresAt }fromonLoginand pass it back withuseCredentials:
Without the SDK
Sign-in is an action like any other:POST /v3/actionswith{ "wallet": "0x…", "action": { "type": "login" } }. The step asks forpersonal_sign.- Pass
requestto the wallet andPOST /v3/actions/{id}with{ "signature": "0x…" }. - The step is
donewithresult: { "token", "expiresAt" }. - Send
Authorization: SIWE <token>on the reads, along withX-Kairos-Partner-Id.
401: sign in again. Over HTTP, positions come nested as { "positions": { "positions", "resolved", "closed", "asOf" } }, and either read may add venueDetail naming a venue that couldn’t be read. Every field is in the reference.
