Router

Find optimal cross-chain transfer route

Analyzes available bridges and returns the optimal route with best pricing

get/router/optimal-route

Query parameters

tokenInstring required
Example:0xA0b86a33E6411192B1F4ec3eB801B21EB56

Input token contract address

tokenOutstring required
Example:0xA0b86a33E6411192B1F4ec3eB801B21EB56

Output token contract address

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
Example:BASE_MAINNET

Source blockchain

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
Example:ARBITRUM_MAINNET

Destination blockchain

amountstring required
Example:1000000000000000000

Transfer amount in token units (wei for ETH)

recipientstring
Example:0x742d35cc6634c0532925a3b8d7389d8c5b7cf15b

Recipient address for the cross-chain transfer (required for some bridges like RhinoFi)

amountSymbolstring required
Example:USDC

Token symbol for amount denomination (e.g., USDC, USDT, ETH)

Response

Optimal route found successfully

sourceChainstring
destinationChainstring
tokenInstring
tokenOutstring
originalAmountstring

Original transfer amount

totalFeesstring

Total fees (bridge fee + ChainRails fee)

bridgeToUse'ACROSS' | 'CCTP' | 'GATEWAY' | 'RHINOFI' nullable
bridgeAddressstring
bridgeExtraDatastring
supportedBridgesstring[]
bridgeFeeDetailsobject

Bridge-specific fee details (structure varies by bridge)

Example response

{
  "sourceChain": "BASE_TESTNET",
  "destinationChain": "ARBITRUM_TESTNET",
  "tokenIn": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "tokenOut": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
  "originalAmount": "10000000",
  "totalFees": "18000",
  "bridgeToUse": "CCTP",
  "bridgeAddress": "0xa1c943058a631D5506eb7d96036eAbF6968e2338",
  "bridgeExtraData": "0x00000000000000000000000000000000000000000000000000000000000001f4",
  "supportedBridges": [
    "ACROSS",
    "CCTP"
  ],
  "bridgeFeeDetails": {
    "maxFee": "8000"
  }
}

Changes

Changed in 4 of the 9 revisions of this API.125

    • added the new enum value SOLANA_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value SOLANA_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value SOLANA_TESTNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value SOLANA_TESTNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value TRON_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value TRON_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    This revision also has 2 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

  • 2168c5f4fdd5114See the full diff
    • added the new required query request parameter amountSymbol

      new-required-request-parameter

    • added the new enum value HYPEREVM_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value HYPEREVM_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value LISK_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value LISK_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value MONAD_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value MONAD_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value MONAD_TESTNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value MONAD_TESTNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value OPTIMISM_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value OPTIMISM_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value OPTIMISM_TESTNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value OPTIMISM_TESTNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the new enum value POLYGON_MAINNET to the query request parameter destinationChain

      request-parameter-enum-value-added

    • added the new enum value POLYGON_MAINNET to the query request parameter sourceChain

      request-parameter-enum-value-added

    • added the media type application/json for the response with the status 200

      response-media-type-added

    • added the non-success response with the status 400

      response-non-success-status-added

    • added the non-success response with the status 401

      response-non-success-status-added

    • added the non-success response with the status 500

      response-non-success-status-added

    • endpoint added

      endpoint-added

    This revision also has 8 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog