When it fires
The request targets a chain this environment does not support for the operation. There are two cases.- A market on an unsupported chain.
GET /v1/markets/{id}/quoteandPOST /v1/redemptionsread the chain, and the market is on a chain this environment cannot read. - A Solana market when the client pins API version
2026-04-29. See below.
A Solana market on a pinned 2026-04-29
GET /v1/markets/{id} and GET /v1/markets/{id}/quote return this code for a Solana market only when the request sends X-Kash-Api-Version: 2026-04-29, because that legacy contract has no field that can describe a non-EVM chain. Requests without the header are served 2026-08-19 and never hit this case. It is returned whatever the market’s state, so it does not mean the market is cancelled or closed.
Drop the header or send X-Kash-Api-Version: 2026-08-19. The market then carries chainRef, tradeable and notTradeableReason, and an untradeable market’s quote or trade returns MARKET_NOT_TRADEABLE (409) instead. POST /v1/trades does not use this code for Solana markets on either version.
Why it happens
The market is on a chain this environment does not support for the operation. Your request is well formed; this is a chain-support condition, so it is a permanent400 and retrying will not help. (A supported chain with incomplete server configuration returns INTERNAL_ERROR instead.)
How to fix
- Solana markets: stop pinning
2026-04-29. Drop the header or sendX-Kash-Api-Version: 2026-08-19. Production trading runs on Solana. - Other market routes: the
detailfield lists the supported chains. - If you believe the chain should be supported, contact ZeroID support. It is a server configuration gap, not something you can correct.