Skip to main content
An Asset can exist in more than one form, called variants. ETH, for example, is native ETH on some chains and WETH, a wrapped token, on others. A search accepts every variant of each side unless you ask for the native one only. Set one side or both. A side you leave out stays any.

Variants

GET /api/v1/assets lists each Asset’s variants, each with a kind and the chains it is deployed on: New kinds can appear. Treat a kind you do not recognise as “other”, and as not native. Each quote states the variant on each side in sell.variant and buy.variant, for example {"kind": "native", "name": "ETH"}.

What you see when a variant is left out

The filter acts on the routes each venue could take, not on whole venues. A venue that can still trade the native variant quotes as usual. A venue whose only route for this pair uses another variant is not asked, and reads unavailable with reason onchainAssetVariantFiltered:
For example, an on-chain pool that pays out WETH for USDC drops out of a search for ETH with buy: "nativeOnly", while your venue accounts, which hold native ETH, still quote. On GET /api/v1/prices, variants.sell and variants.buy filter the same way, and a row for a variant you left out is not returned.

Refusals

In the app

The trade page has no control for this. A shared link can carry it in its native parameter (pay, receive or both), and it then shows as a Native only chip you can remove.