GET /quote and POST /advanced/routes; for the base URL, authentication and rate limits, see the API overview.
How toToken selects Composer
When toToken is a supported vault, staking or deposit token, the routing engine builds a Composer route (a swap and bridge to the underlying asset if needed, then the protocol deposit) and simulates it. It compares that route with other routes into the same token, such as a DEX that buys the vault token directly, and returns the best one with a ready-to-sign transactionRequest.
The Composer part of a route has at most two hops, and a swap can only be the first hop: for example, a swap from USDC to USDe followed by a deposit into sUSDe. A target that needs a longer path returns no Composer route.
Composer-relevant parameters
These parameters belong to the standardGET /quote and POST /advanced/routes endpoints.
Identifying Composer routes
The Composer tool name
Composer’s tool identifier is"composer". It appears as a step in includedSteps:
quote.tool is "composer" only when Composer is the route’s main step, as in a same-chain deposit that Composer won. In a cross-chain route it names the bridge (for example "across"), and in a route where a DEX buys the vault token it names the DEX. Always detect Composer through includedSteps.
Detecting Composer routes in your application
For aGET /quote response:
POST /advanced/routes, check every step: route.steps.some((step) => step.includedSteps.some((s) => s.tool === "composer")). In a two-transaction cross-chain route, Composer is the second step.
Filtering Composer routes
Composer is a protocol, not a bridge or an exchange, so it has its own filters.composer is the only value they accept; any other value returns HTTP 400.
- Require Composer: not possible. Composer always competes with DEX routes into the same token.
allowExchangesanddenyExchangesrejectcomposerwith HTTP 400 and error code1011, because Composer is not an exchange.

