Skip to main content
POST
Redeem winning outcome tokens after resolution

Authorizations

X-Client-Id
string
header
required

Credential client id (kairos_ck_...). Must be sent together with X-Api-Key and X-Api-Secret.

X-Api-Key
string
header
required

64-char hex API key.

X-Api-Secret
string
header
required

64-char hex API secret.

Path Parameters

exchange_id
enum<string>
required

Venue. Split/merge require an on-chain CTF (polymarket, predictfun). Kalshi settles off-exchange — redeem only.

Available options:
polymarket,
predictfun,
kalshi,
opinion

Body

application/json
condition_id
string
required

CTF conditionId of the RESOLVED market.

Example:

"0x1234abcd"

position_id
string | null

Position row to mark redeemed after success.

market_id
string | null

Locates the position when position_id is omitted.

token_id
string | null

Locates the position when position_id is omitted.

user_id
string | null

Optional. Must match the authenticated caller when present — identity is resolved server-side and these fields can never widen scope to another user.

turnkey_org_id
string | null

Optional. Must match the authenticated caller when present.

wallet_address
string | null

Optional wallet override; honored only if the wallet is owned by the caller. Omit to let the server resolve the signer wallet.

Response

Redeem executed on-chain.

amount_redeemed
string
required

Decimal string — rust_decimal always serializes as a string.

Example:

"100"

success
boolean
required
tx_hash
string | null

On-chain transaction hash. null when no transaction was produced — always check success.

Example:

"0xabc123"

db_update_failed
boolean

OMITTED entirely when false (skip_serializing_if). Present and true only when the on-chain redeem succeeded but the bookkeeping write failed after retries — funds are safe, retry to fix bookkeeping.