Skip to main content
As of SDK v1.0.6, all three SDKs (TypeScript, Python, Go) include helper methods for this endpoint.
Redeems winning conditional-token positions for a resolved market from a server-wallet sub-account.
  • Route: POST /portfolio/redeem
  • Auth: apiToken, Privy, or session auth
  • Scope: trading when using apiToken

Request body

FieldTypeRequiredDescription
conditionIdstringYesCTF condition id (bytes32 hex string).
onBehalfOfnumberNoManaged sub-account profile id (partner flow). Must be a child of the authenticated partner profile.

Example (HMAC)

Notes

  • Market must be resolved and the position must have redeemable balance.
  • API-level resolved status can appear before CTF settlement; on-chain payout must be posted before redemption succeeds.
  • Legacy API keys are not supported on server-wallet operations.
Why this endpoint is server-wallet only. Redeeming a CTF position is an on-chain transaction that must be signed by the wallet holding the shares. This endpoint can only sign for wallets Limitless manages (Privy-backed server-wallet sub-accounts), so it does not accept EOA-owned or user-managed smart-wallet profiles. There is no “auto redeem” performed by Limitless on behalf of EOA users — self-custodial by design.EOA and user-owned smart-wallet users redeem their own positions on-chain instead:
  • Through the Limitless UI Portfolio → Positions → Redeem, which prompts the connected wallet to sign the redeemPositions call.
  • Or directly on-chain by calling redeemPositions(conditionId, indexSets) on the Conditional Tokens Framework contract (or NegRiskAdapter.redeemPositions(conditionId, amounts) for negrisk markets) from the wallet holding the shares. See Smart Contracts for the deployed addresses.