DEX API

获取兑换价格#

通过 DEX 聚合器获取最优报价。

请求地址#

GET https://www.okx.com/api/v5/dex/aggregator/quote

请求参数#

参数类型必传描述
chainIdString链 ID (如1: Ethereum,更多可查看链 ID 列表)
amountString币种询价数量 (数量需包含精度,如兑换 1.00 USDT 需输入 1000000,兑换 1.00 DAI 需输入 1000000000000000000),币种精度可通过币种列表取得。
fromTokenAddressString询价币种合约地址 (如0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee)
toTokenAddressString目标币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00)
dexIdsString限定询价的流动性池 dexId , 多个组合按 , 分隔 (如 1,50,180 ,更多可查看流动性列表)
priceImpactProtectionPercentageStringNo(可选,默认值为 90%) 允许的价格影响百分比 (介于 0 和 1.0 之间)。

当用户设置了 priceImpactProtectionPercentage 后,如果估算的价格影响超过了指定的百分比,将会返回一个错误。例如,如果 PriceImpactProtectionPercentage = .25 (25%),任何价格影响高于 25% 的报价都将返回错误。

这是一个可选开启的功能,默认值为 0.9。当百分比被设置为 1.0 (100%) 时,此功能将被禁用,也就是说,每一笔交易都会被允许通过。

注意:当我们无法计算价格影响时,我们会返回 null,并且价格影响保护也会被禁用。
feePercentString发送到分佣地址的询价币种数量百分比 最小百分比:0 最大百分比:3 ,默认精度 2 位小数,如果传入精度过长,系统自动向上取整至 2 位。

响应参数#

参数类型描述
chainIdString链 ID (如1: Ethereum,更多可查看链 ID 列表)
dexRouterListArray询价路径数据集合
fromTokenAmountString询价币种的兑换数量 (如500000000000000000000009)
toTokenAmountString目标币种的兑换数量 (如168611907733361)
estimateGasFeeString以 wei 为单位的预估消耗的 gas
routerString币种兑换的一条路径
routerPercentString当前兑换路径处理的资产占所有资产的百分比 (如5)
subRouterListArray子路径列表
dexProtocolArray兑换路径中执行的 DEX 协议 (如Verse)
percentString一条路径中单一 DEX 协议的兑换资产占所有 DEX 协议百分比 (如100)
dexNameStringDEX 协议名称
fromTokenObject询价币种信息
tokenContractAddressString币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00)
tokenSymbolString币种简称 (如WETH)
tokenUnitPriceString该接口返回的币种单价是一个结合了链上、交易所以及其他第三方来源数据的综合美元价格。注:此价格仅为推荐价格,在一些特殊情况中,币种单价可能为 null
decimalString币种精度定义了单个的该币种可以被分成多少份的最小单位。例如,如果一个币种的精度是 8,则表示单个的这种代币可以被分成 100,000,000 份的最小单位。注意:该参数仅供参考,币种精度会随着合约拥有者的设置改变等原因发生变化。
isHoneyPotBoolean代币是否为貔貅币。 是:true 否:false
taxRateString代币卖出税率,适用于可设定税费机制的代币(如SafeMoon、SPL2022代币)。普通代币无税费时返回 0。取值为 最小:0 最大:1,0.01表示1%。
toTokenObject路径中目标币种信息
tokenContractAddressString币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00)
tokenSymbolString币种简称 (如WETH)
tokenUnitPriceString该接口返回的币种单价是一个结合了链上、交易所以及其他第三方来源数据的综合美元价格。注:此价格仅为推荐价格,在一些特殊情况中,币种单价可能为 null
decimalString币种精度定义了单个的该币种可以被分成多少份的最小单位。例如,如果一个币种的精度是 8,则表示单个的这种代币可以被分成 100,000,000 份的最小单位。注意:该参数仅供参考,币种精度会随着合约拥有者的设置改变等原因发生变化。
isHoneyPotBoolean代币是否为貔貅币。 是:true 否:false
taxRateString代币买入税率,适用于可设定税费机制的代币(如SafeMoon、SPL2022代币)。普通代币无税费时返回 0。取值为 最小:0 最大:1,0.01表示1%。
quoteCompareListArray询价路径对比列表
dexNameString询价路径 DEX 名称
dexLogoStringDEX 协议名称
tradeFeeString询价路径预估消耗的网络费用 (USD 计价)
receiveAmountString询价路径的接收数量
priceImpactPercentageStringPercentage = (接收价值 – 支付价值) / 支付价值。因为当前兑换数量影响了流动性池深度,导致产生了价值差额。若接收价值大于支付价值,Percentage 有可能是正数。

请求示例#

shell
curl --location --request GET 'https://www.okx.com/api/v5/dex/aggregator/quote?amount=10000000000000000000&chainId=1&toTokenAddress=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&fromTokenAddress=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' \
--header 'OK-ACCESS-PROJECT: 86af********d1bc' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \de
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z'

响应示例#

200
{
    "code": "0",
    "data": [
  {
    "chainId": "1",
    "dexRouterList": [
  {
    "router": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee--0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "routerPercent": "100",
    "subRouterList": [
  {
    "dexProtocol": [
  {
    "dexName": "Uniswap V3",
    "percent": "100"
  }
    ],
    "fromToken": {
    "decimal": "18",
    "isHoneyPot": false,
    "taxRate": "0",
    "tokenContractAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
    "tokenSymbol": "WETH",
    "tokenUnitPrice": "3326.48"
  },
    "toToken": {
    "decimal": "6",
    "isHoneyPot": false,
    "taxRate": "0",
    "tokenContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "tokenSymbol": "USDC",
    "tokenUnitPrice": "0.9995"
  }
  }
    ]
  }
    ],
    "estimateGasFee": "135000",
    "fromToken": {
    "decimal": "18",
    "isHoneyPot": false,
    "taxRate": "0",
    "tokenContractAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
    "tokenSymbol": "ETH",
    "tokenUnitPrice": "3326.48"
  },
    "fromTokenAmount": "10000000000000000000",
    "priceImpactPct": "-0.001",
    "quoteCompareList": [
  {
    "amountOut": "33223326328",
    "dexLogo": "https://static.okx.com/cdn/wallet/logo/UNI.png",
    "dexName": "Uniswap V3",
    "tradeFee": "16.32024695544219648"
  },
  {
    "amountOut": "33223417884",
    "dexLogo": "https://static.okx.com/cdn/wallet/logo/dex_Integral.png",
    "dexName": "Integral",
    "tradeFee": "25.0222536328557114"
  },
  {
    "amountOut": "33222551977",
    "dexLogo": "https://static.okx.com/cdn/wallet/logo/Curve.png",
    "dexName": "Curve V2",
    "tradeFee": "42.00287558098973300736"
  },
  {
    "amountOut": "33164304655",
    "dexLogo": "https://static.okx.com/cdn/wallet/logo/pancake.png",
    "dexName": "PancakeSwap V3",
    "tradeFee": "16.32024695544219648"
  },
  {
    "amountOut": "33160022635",
    "dexLogo": "https://static.okx.com/cdn/wallet/logo/UNI.png",
    "dexName": "Uniswap V2",
    "tradeFee": "16.32024695544219648"
  }
    ],
    "toToken": {
    "decimal": "6","isHoneyPot": false,
                          "taxRate": "0",
    "isHoneyPot": false,
    "taxRate": "0",
    "tokenContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "tokenSymbol": "USDC",
    "tokenUnitPrice": "0.9995"
  },
    "toTokenAmount": "33232831201"
  }
    ],
    "msg": ""
  }