XY Finance

Get Quote

This endpoint will return currently available routes with estimated target token amount for your quote. You can also designate specific bridges or aggregator to customize the route. If there is no available route, it will return an error_code, which you can reference here to get error detail.
Get Quote

Parameter/Response Details

  • If you would like to know more about commissionRate fields and fee collection function, please refer to Monetization / Take Fees
  • If you would like to know latest supported bridge provider and swap provider, please refer to Supported Blockchains/Bridges/DEXs
  • The estimatedGas field in the API response is an estimated value. For now, please use a method similar to RPC, such as eth_estimateGas, to re-estimate the actual gas limit. You can refer to the following sample code to do that:
from web3 import Web3
import requests
if __name__ == "__main__":
# 1st: get tx data from xy aggregator api
endpoint = 'https://aggregator-api.xy.finance/v1/buildTx?srcChainId=137&srcQuoteTokenAddress=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&srcQuoteTokenAmount=9000000000000000000&dstChainId=56&dstQuoteTokenAddress=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d&slippage=1&receiver=0x9cEEEbdF49cF5DEa891C9D74f8ea03af2aCf284F&bridgeProvider=yBridge&srcBridgeTokenAddress=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&dstBridgeTokenAddress=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d&srcSwapProvider=OneInch%20V4%20DexAggregator&affiliate=0x512E00f66217714BAee5F0736428b026e8c30AF5'
resp = requests.get(endpoint)
resp_json = resp.json()
# 2nd: get estimateGas by calling web3 rpc
rpc_endpoint = 'https://polygon.llamarpc.com'
w3 = Web3(Web3.HTTPProvider(rpc_endpoint))
estimate_gas = w3.eth.estimate_gas(resp_json["tx"])
# 3rd: Combine the estimateGas with the tx data
tx = resp_json["tx"]
tx["gas"] = estimate_gas
# 4th: sign the tx & send it
priv_key = "0x"
tx_signed = w3.eth.account.sign_transaction(tx, priv_key)
tx_hash = w3.eth.send_raw_transaction(tx_signed.rawTransaction)

Example Request

$ curl "https://aggregator-api.xy.finance/v1/quote?srcChainId=10&srcQuoteTokenAddress=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&srcQuoteTokenAmount=1000000000000000000&dstChainId=56&dstQuoteTokenAddress=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&slippage=1&srcSwapProviders=OneInch%20V4%20DexAggregator&bridgeProviders=yBridge
This request is asking a quote of 1 ETH on Optimism to ETH on Arbitrum Chain and designate OneInch V4 Aggregator as srcSwapProvider, yBridge as bridgeProvider.
IMPORTANT: Note that the amount parameter should be padded with zeroes. For example, pass 100000000 instead of 100 if the decimals of the token is 6.
Here you can find our full API reference