{ "success": true, "data": { "transaction": "AQAAAAAAA...base64...", "message": "Sign this transaction and submit to redeem your winnings." }}
Returns an unsigned Solana transaction that the caller must sign locally and submit to the network. The API never holds private keys.After a market resolves, holders of the winning outcome token can redeem them for USDC.
AMM markets: Each winning token is worth exactly $1 USDC.
Pool markets: Payout is proportional — all USDC in the pool is split among winning token holders.
This endpoint is idempotent. If the wallet has already redeemed (token balance is 0), or never held tokens on this side, the endpoint returns a success response with alreadyRedeemed: true instead of an error. This means you can safely call it multiple times without worrying about errors.
{ "success": true, "data": { "transaction": "AQAAAAAAA...base64...", "message": "Sign this transaction and submit to redeem your winnings." }}
This endpoint only works on resolved or cancelled markets. Calling it on an active market will return a 409 Conflict error with the marketStatus field.
The side parameter accepts the market’s custom ticker names. For example, if a market uses UP/DOWN tickers, pass "side": "UP" or "side": "DOWN". You can also always use the canonical YES/NO.
Markets with uninitialized mints (broken markets) will return alreadyRedeemed: true since there are no tokens to redeem.