When it fires
POST /v1/redemptions was called for an outcome your account holds none of. The API read the account’s on-chain balance of that outcome token and it was zero, so there is nothing to redeem.
POST /v1/trades does not return this code. A trade’s USDC balance is checked after the trade is accepted; a trade the account cannot fund ends as failed or rejected, visible on GET /v1/trades/{id} and in trade webhooks.
Why it happens
- The tokens were already redeemed or moved.
- The account never held that outcome (for example, the wrong
outcomeIndex). - The request was made with a key belonging to a different account from the one holding the position.
How to fix
- Check what the account holds with
GET /v1/portfolio/positions, and redeem an outcome that appears there. - Confirm the
marketIdandoutcomeIndex. - If you expected the position to have been redeemed already, check
GET /v1/portfolio.
Related codes
POSITION_NOT_CLAIMABLE— you hold the token, but it is not claimableSMART_ACCOUNT_NOT_PROVISIONED— the account has no self-custodial trading wallet yet