---
title: "Get best quote across all bridges"
method: GET
path: "/quotes/best"
tags: ["Quotes"]
---

# Get best quote across all bridges

`GET /quotes/best`

Retrieves the best quote (lowest total fee) from all supported bridge protocols

## Query parameters

- `tokenIn` string, required
- `tokenOut` string, required
- `sourceChain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET', required
- `destinationChain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET', required
- `amount` string, required
- `excludeBridges` string
- `recipient` string
- `amountSymbol` 'USDC' | 'USDT' | 'DAI' | 'BUSD' | 'EURC' | 'ETH' | 'WETH' | 'STRK' | 'BNB' | 'LORDS' | 'USDS' | 'USDG' | 'USDT0' | 'WBTC' | 'LINK' | 'SOL' | 'EKUBO' | 'AAVE' | 'UNI' | 'CURVE' | 'cbBTC' | 'VIRTUAL' | 'stETH' | 'wstETH' | 'SKY' | 'AUSD' | 'WMON' | 'LVMON' | 'OP' | 'WLD' | 'ARB' | 'sAVAX' | 'WAVAX' | 'anyBTC' | 'WBNB' | 'TRON' | 'AVAX' | 'POL' | 'MON'

## Response `200`

Best quote retrieved successfully

- object
  - `bridgeFeeDetails` object — Bridge-specific fee details from the cheapest option
  - `totalFee` string — Lowest total fee among all bridges
  - `totalFeeFormatted` string — Human-readable formatted total fee
  - `route` object
    - `tokenIn` string
    - `tokenOut` string
    - `sourceChain` string
    - `destinationChain` string
    - `amount` string
    - `bridge` 'ACROSS' | 'CCTP' | 'GATEWAY' | 'RHINOFI'
    - `recipient` string, nullable

## Other responses

- `400` — Bad Request - Invalid parameters
- `401` — Unauthorized - Invalid or missing API key
- `404` — No quotes available for the route
- `500` — Internal Server Error

## Changes

- **2026-07-22** `76a4e00b118d` — 35 info
  - added the new enum value `AAVE` to the `query` request parameter `amountSymbol`
  - added the new enum value `ARB` to the `query` request parameter `amountSymbol`
  - added the new enum value `AUSD` to the `query` request parameter `amountSymbol`
  - added the new enum value `AVAX` to the `query` request parameter `amountSymbol`
  - …31 more
- **2026-02-17** `2168c5f4fdd5` — 15 info
  - added the new optional `query` request parameter `amountSymbol`
  - added the new enum value `HYPEREVM_MAINNET` to the `query` request parameter `destinationChain`
  - added the new enum value `HYPEREVM_MAINNET` to the `query` request parameter `sourceChain`
  - added the new enum value `LISK_MAINNET` to the `query` request parameter `destinationChain`
  - …11 more
- **2025-12-13** `0172b83f90c7` — 5 info
  - added the media type `application/json` for the response with the status `200`
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `404`
  - …1 more
- **2025-11-11** `fce39ccb3e9d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/horuslabsio/apis/chainrails-api/changes/quotes/best/get.md)

---

[API](https://skmtc.dev/horuslabsio/apis/chainrails-api.md) · [All operations](https://skmtc.dev/horuslabsio/apis/chainrails-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/horuslabsio/chainrails-api/revisions/dcf19c1bab20/schema)
