Get a route

Before you can send tokens or messages, you'll need to set your parameters.

Our /route endpoint finds a route to match your params and returns the necessary data required to execute it on chain.

Example: Swap 1 WETH from Goerli and receive axlUSDC on the Moonbeam network


const getRoute = async (params) => {
    const result = await axios.get('https://testnet.api.squidrouter.com/v1/route', {
        params: params,
        headers: {
          "x-integrator-id": "your-integrator-id",
        }
    });
    return result.data;
}

const params = {
  fromChain: 5, // Goerli
  fromToken: '0xc778417E063141139Fce010982780140Aa0cD5Ab', // WETH on Ropsten
  fromAmount: '100000000000000000', // 0.1 WETH
  toChain: 1287, // Moonbase Alpha
  toToken: '0xd1633f7fb3d716643125d6415d4177bc36b7186b', // axlUSDC on Moonmbeam
  fromAddress: '0x...', // ethers.signer.address; transaction sender address
  toAddress: '0x...', // the recipient's address
  slippage: 3, // 3 --> 3.00% slippage. SDK supports 2 decimals
  enableForecall: true // optional, defaults to true
}

const route = await getRoute(params);

Params are structured as a https://docs.0xsquid.com/appendix/types#getroute-1 object. A GetRoute object describes a desired any-to-any transfer. It is defined by the following interface:

Request Params:

Property
Description

fromChain

Source Chain ID

fromToken

Address of the sending tokens

fromAmount

Amount of tokens to be sent in WEI

toChain

Destination Chain ID

toToken

Address of the receiving tokens

fromAddress

Transaction sender address. Will be also used as a fallback address for the source chain

toAddress

The expected output address that will received the destination tokens

slippage

Route total slippage limit (0-1) (unsupported, default to 1)

enableForecall

Instant execution on the destination chain when set to true

collectFees

Integrators can pass in the the collectFees object to collect a fee on transactions

Request Headers:

Property
Description

x-integrator-id

Integrator Id for squid to keep track of partners, complete the form to acquire it

Example response

{
  "route": {
    "estimate": {
      "fromAmount": "100000000000000000",
      "sendAmount": "120750911",
      "toAmount": "9372288569234398583",
      "toAmountMin": "9372288569234398583",
      "route": {
        "fromChain": [
          {
            "type": "SWAP",
            "dex": {
              "chainName": "Ethereum",
              "dexName": "UniswapV2",
              "swapRouter": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
              "factory": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
              "isStable": false
            },
            "path": [
              "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
              "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
            ],
            "squidCallType": 2,
            "fromToken": {
              "chainId": 1,
              "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
              "name": "Wrapped ETH",
              "symbol": "WETH",
              "decimals": 18,
              "logoURI": "https://assets.coingecko.com/coins/images/2518/small/weth.png?1628852295",
              "coingeckoId": "weth"
            },
            "toToken": {
              "name": "USDCoin",
              "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
              "symbol": "USDC",
              "decimals": 6,
              "chainId": 1,
              "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
              "coingeckoId": "usd-coin"
            },
            "fromAmount": "100000000000000000",
            "toAmount": "120750911",
            "toAmountMin": "120205757",
            "exchangeRate": "1211.145994980039994222",
            "priceImpact": "0.3",
            "dynamicSlippage": 0.45146957433319646
          }
        ],
        "toChain": [
          {
            "type": "SWAP",
            "dex": {
              "chainName": "Avalanche",
              "dexName": "Curve_v2",
              "swapRouter": "0x890f4e345B1dAED0367A877a1612f86A1f86985f",
              "isStable": true
            },
            "path": [
              "0xfaB550568C688d5D8A52C7d794cb93Edc26eC0eC",
              "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
            ],
            "squidCallType": 1,
            "fromToken": {
              "chainId": 43114,
              "address": "0xfaB550568C688d5D8A52C7d794cb93Edc26eC0eC",
              "name": "Axelar USDC",
              "symbol": "axlUSDC",
              "decimals": 6,
              "logoURI": "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png?1547042389",
              "coingeckoId": "axlusdc"
            },
            "toToken": {
              "chainId": 43114,
              "address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
              "decimals": 6,
              "name": "USD Coin",
              "symbol": "USDC",
              "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E/logo_24.png",
              "coingeckoId": "usd-coin"
            },
            "fromAmount": "120750911",
            "toAmount": "120858815",
            "toAmountMin": "120737956",
            "exchangeRate": "1",
            "priceImpact": "-0.09",
            "dynamicSlippage": 0.1
          },
          {
            "type": "SWAP",
            "dex": {
              "chainName": "Avalanche",
              "dexName": "Pangolin",
              "swapRouter": "0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106",
              "factory": "0xefa94DE7a4656D787667C749f7E1223D71E9FD88",
              "isStable": false
            },
            "path": [
              "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
              "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"
            ],
            "squidCallType": 1,
            "fromToken": {
              "chainId": 43114,
              "address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
              "decimals": 6,
              "name": "USD Coin",
              "symbol": "USDC",
              "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E/logo_24.png",
              "coingeckoId": "usd-coin"
            },
            "toToken": {
              "chainId": 43114,
              "address": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
              "name": "Wrapped AVAX",
              "symbol": "WAVAX",
              "decimals": 18,
              "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo_24.png",
              "coingeckoId": "wrapped-avax"
            },
            "fromAmount": "120858815",
            "toAmount": "9372288569234398583",
            "toAmountMin": "9329975537925597215",
            "exchangeRate": "0.077784587532707266",
            "priceImpact": "0.3",
            "dynamicSlippage": 0.45146957433319646
          }
        ]
      },
      "feeCosts": [
        {
          "name": "Gas Receiver Fee",
          "description": "Estimated Gas Receiver fee",
          "percentage": "0",
          "token": {
            "chainId": 1,
            "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
            "name": "Ethereum",
            "symbol": "ETH",
            "decimals": 18,
            "logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880",
            "coingeckoId": "ethereum"
          },
          "amount": "503509582401222",
          "amountUSD": "0.3048"
        }
      ],
      "gasCosts": [
        {
          "type": "executeCall",
          "token": {
            "chainId": 1,
            "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
            "name": "Ethereum",
            "symbol": "ETH",
            "decimals": 18,
            "logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880",
            "coingeckoId": "ethereum"
          },
          "amount": "12439757116840000",
          "amountUSD": "15.0604",
          "gasPrice": "10117084325",
          "maxFeePerGas": "21447857098",
          "maxPriorityFeePerGas": "1500000000",
          "estimate": "580000",
          "limit": "667000"
        }
      ],
      "estimatedRouteDuration": 900,
      "exchangeRate": "93.72288569234398583",
      "aggregatePriceImpact": "0.51"
    },
    "params": {
      "slippage": 1,
      "toAddress": "0xC182aA0ecb24A674C00C76cE8F1761cC5a10611c",
      "fromAmount": "100000000000000000",
      "toToken": {
        "chainId": 43114,
        "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
        "name": "Avalanche",
        "symbol": "AVAX",
        "decimals": 18,
        "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo_24.png",
        "coingeckoId": "avalanche-2"
      },
      "fromToken": {
        "chainId": 1,
        "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
        "name": "Ethereum",
        "symbol": "ETH",
        "decimals": 18,
        "logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880",
        "coingeckoId": "ethereum"
      },
      "toChain": "43114",
      "fromChain": "1"
    },
    "transactionRequest": {
      "routeType": "CALL_BRIDGE_CALL",
      "targetAddress": "0xce16F69375520ab01377ce7B88f5BA8C48F8D666",
      "data": "0x8ca3bf680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000c182aa0ecb24a674c00c76ce8f1761cc5a10611c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000094176616c616e6368650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455534443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000e47ff36ab500000000000000000000000000000000000000000000000000000000072a31bd0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d66600000000000000000000000000000000000000000000000000000184b55583850000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000fab550568c688d5d8a52c7d794cb93edc26ec0ec0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000fab550568c688d5d8a52c7d794cb93edc26ec0ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000890f4e345b1daed0367a877a1612f86a1f86985f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000fab550568c688d5d8a52c7d794cb93edc26ec0ec00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000890f4e345b1daed0367a877a1612f86a1f86985f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000c41a4c1ca3000000000000000000000000d7bb79aee866672419999a0496d99c54741d67b5000000000000000000000000fab550568c688d5d8a52c7d794cb93edc26ec0ec000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e000000000000000000000000000000000000000000000000000000000732833f00000000000000000000000000000000000000000000000000000000073250a400000000000000000000000028d04fd16b2d7b8c0fdadb821e381b72fe3cc11e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000fab550568c688d5d8a52c7d794cb93edc26ec0ec00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000e54ca86531e17ef3616d22ca28b0d458b6c891060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000e54ca86531e17ef3616d22ca28b0d458b6c89106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000104676528d100000000000000000000000000000000000000000000000000000000073428bf000000000000000000000000000000000000000000000000817abb51c523a81f00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c182aa0ecb24a674c00c76ce8f1761cc5a10611c00000000000000000000000000000000000000000000000000000184b555838a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e0000000000000000000000000000000000000000000000000000000000000000",
      "value": "100503509582401222",
      "gasLimit": "667000",
      "gasPrice": "10117084325",
      "maxFeePerGas": "21447857098",
      "maxPriorityFeePerGas": "1500000000"
    }
  }
}

Note that the same token type (i.e. USDC) often has a different address on each chain. Make sure you've checked the address is right for the chain you are sending from/to.

Sending/receiving native tokens

If you want to send or receive native tokens (i.e ETH), the sourceTokenAddress or destinationTokenAddress arguments must be set to 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

Executing your route

route.transactionRequest.targetAddress is the address of the smart contract to be called to execute the route

route.transactionRequest.data is the calldata to be executed at that address.

Please sign and submit the transaction in your preferred method. We recommend using our SDK for beginners in web3 EVM.

Last updated