Skip to main content
An Asset such as USDC carries no chain. Left open, a search asks every venue for every place the Asset can be: on any chain it is deployed on, and on your connected venue accounts. You narrow that in two ways:
  • pin a side to one chain with sell.chain or buy.chain;
  • choose where quotes execute with filters.locations.
Take chain ids from the deployments that GET /api/v1/assets lists for each Asset, never from a fixed list.

Where a quote executes

mixed describes a quote, not a place you can ask for: it is not a filters.locations value, and sending it is refused with 400 INVALID_REQUEST.

Single-chain

Pin both sides to the same chain and keep singleChain:

Cross-chain

Pin the two sides to different chains. To move one Asset between chains, the same Asset goes on both sides, and at least one side must be pinned:
A cross-chain quote’s eta tells you how long delivery is expected to take, as an ISO 8601 duration such as PT10S.

Off-chain

Keep offChain and pin no chain. Only your connected venue accounts can answer:

What happens to the venues you exclude

A venue whose quotes cannot match your pins or locations is not asked. It stays in sources with status: "filteredOut":
So a single-chain search lists your venue accounts and bridges as filteredOut, and an off-chain search lists on-chain protocols, bridges and solvers the same way. When nothing is left to answer, quotes is empty and sources shows why.

Refusals

In the app

On the Trade page, open Advanced filters and choose a Route: Any, Single-chain (pick one chain), Cross-chain (pick a from chain and a to chain) or Off-chain.