When it fires
The market exists but does not accept trades right now. The reason is indetail.
POST /v1/tradesandPOST /v1/trades/{id}/confirmreturn it for every reason below, on both API versions.GET /v1/markets/{id}/quotereturns it for a market cancelled on-chain, and for a Solana market whose on-chain state is no longer active (for example resolved). A quote is a read, so a market past its freeze deadline can still be quoted, withmarket.tradeable: falsein the response.GET /v1/markets/{id}/quotealso returns it for a market that has no on-chain address yet and so cannot be quoted at all.- Pinning
2026-04-29hides Solana markets. On that pinned version, a Solana market’s detail and quote returnCHAIN_NOT_SUPPORTED(400) whatever its state, which says nothing about whether it is tradeable.
Why it happens
The reasons, in the order they are checked. On2026-08-19, each one is published on the market itself as notTradeableReason:
status alone does not show cancelled or frozen: it stays ACTIVE for both. The market may also have changed between your quote and your trade.
How to fix
- Read
tradeableon the market (GET /v1/markets/{id},GET /v1/markets, or themarketobject in a quote) before submitting. It is computed by the same rule that returns this error, sotradeable: falsemeans a trade would be refused. resolved,cancelledandfrozenare final, so retrying the same trade will not succeed. Choose another market, or redeem your position when the reason isresolvedorcancelled.