Skip to main content

Query Routes

In order to execute trades using socket, we must first establish the tokens being exchanged and the path.

Initialise the SDK

First initialise the SDK with an api key. By default the sdk will return both single and multi-transaction routes.

const socket = new Socket({ apiKey: API_KEY });

If you would like to only receive single transaction routes, set singleTxOnly: true

const socket = new Socket({
apiKey: API_KEY
defaultQuotePreferences: {
singleTxOnly: true,
}
});

Retreiving the available tokens

There are a defined set of tokens that can be traded using the socket protocol for a given from and to chain. You can retrieve a list of these tokens:

const tokenList = await socket.getTokenList({
fromChainId: ChainId.MAINNET_CHAIN_ID, // Ethereum Mainnet
toChainId: ChainId.POLYGON_CHAIN_ID, // Polygon Mainnet
});

The list of tokens for each chain can be accessed as such:

tokenList.from; // Tokens on the from chain
tokenList.to; // Tokens on the to chain

There are utilities for retrieving tokens:

const eth = tokenList.from.nativeToken;
const matic =
tokenList.to.tokenByAddress(0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);

Creating a path

Now we are ready to create a path which trades a fromToken to the destination toToken.

const path = new Path({ fromToken: eth, toToken: matic });

Querying the best route

Input the path, the amount to trade and the user's address in order to retrieve a quote.

const quote = await socket.getBestQuote({
path,
amount: "1000000000000000000", // 1 ETH
address: "<USER_ADDRESS_HERE",
});

You can also retrieve the full list of quotes from the api using socket.getAllRoutes.

If you would like to further customize the quotes that are returned, pass a QuotePreferences object to the quote call. For example:

const fastestQuote = await socket.getBestQuote(
{
path,
amount,
address,
},
{ sort: "time" }
);

You are now ready to execute the quote. You may do this by connecting a wallet with Web3Providers or manually.