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:Property | Description |
---|---|
fromChain | |
fromToken | Address of the sending tokens |
fromAmount | Amount of tokens to be sent in WEI |
toChain | |
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 |
Property | Description |
---|---|
x-integrator-id |
{
"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.
If you want to send or receive native tokens (i.e ETH), the
sourceTokenAddress
or destinationTokenAddress
arguments must be set to 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
route.transactionRequest.targetAddress
is the address of the smart contract to be called to execute the routeroute.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 modified 2mo ago