获取意图兑换价格#
通过 DEX 聚合器获取最优报价。
支持的链#
| 链名 | Chainid |
|---|---|
| Ethereum | 1 |
| BSC | 56 |
| Arbitrum | 42161 |
| Base | 8453 |
请求地址#
GET
https://web3.okx.com/api/v6/dex/aggregator/quote请求参数#
| 参数 | 类型 | 必传 | 描述 |
|---|---|---|---|
| chainIndex | String | 是 | 链的唯一标识。 如 1: Ethereum,更多可查看这里。 |
| amount | String | 是 | 交易数量。 如果 swapMode 为 exactIn,代表卖出币种数量如果 swapMode 为 exactOut,代表买入币种数量。(数量需包含精度,如兑换 1.00 USDT 需输入 1000000,兑换 1.00 DAI 需输入 1000000000000000000),币种精度可通过代币基础信息取得。 |
| swapMode | String | 是 | 交易模式。可选值为:exactIn 或 exactOut。默认值为: exactIn。当设为 exactOut 时,适用于需要获取确切输出金额的使用场景。注意: 1. ExactOut 功能目前仅支持 Ethereum、Base、BSC、Arbitrum 链。 2. ExactOut 功能目前仅支持 Uni v2 和 v3 协议。 3. 在此模式下,滑点设置作用于输入代币。 |
| fromTokenAddress | String | 是 | 卖出币种合约地址 (如0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) |
| toTokenAddress | String | 是 | 买入币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00) |
| dexIds | String | 否 | 限定询价的流动性池 dexId , 多个组合按 , 分隔 (如 1,50,180 ,更多可查看流动性列表) |
| excludeDexIds | String | 否 | 限定不会使用於询价的流动性池 dexId,多个组合按,分隔 (如 1,50,180 ,更多可查看流动性列表) |
| forJitoBundle | Boolean | 否 | 默认值为 false。若该 quote 将用于 Jito bundle,则设置为 true。启用后,路由器会排除与 Jito bundle 不兼容的 DEX,例如 HumidiFi 和 BisonFi。 |
| excludePoolAddresses | String | 否 | 传入具体池子地址,路由时将过滤相关池子。最多支持传入 20 个池子地址,传入时以逗号分隔 |
| directRoute | Boolean | 否 | 默认设置为 false。启用后,将限制路由仅使用单一流动性池。当前,该功能仅适用于 Solana 兑换。 |
| singleRouteOnly | Boolean | 否 | 默认设置为 false。当该参数启用时,路由将被限制为单一路径: 允许 多跳(multi-hop) 允许在不同跳中使用不同的池子(multi-pool) 不允许并行拆单路由,即不会构造多条并行路径进行拆分执行 |
| singlePoolPerHop | Boolean | 否 | 默认设置为 false。默认设置为 false。当该参数启用时:- 路径中的 每一跳(hop)仅允许使用一个池子 - 不允许在同一跳中对多个池子进行拆分 |
| assetAwareRouting | Boolean | 否 | 默认设置为 false。 当该参数启用时,路由逻辑将基于资产属性对可选路由进行约束: 路由过程中将优先并仅使用与币对资产属性匹配的资产类型 以 U-U(稳定币对)交易 为例,启用该参数后,路由将被限制仅使用 稳定类资产,避免引入非相关或波动性较高的资产路径。 当前该参数仅支持 U-U 和 U-Native 交易场景 |
| priceImpactProtectionPercent | String | 否 | (可选,默认值为 90%) 允许的价格影响百分比 (介于 0 和 100 之间)。 当用户设置了 priceImpactProtectionPercent 后,如果估算的价格影响超过了指定的百分比,将会返回一个错误。例如,如果 priceImpactProtectionPercent = 25,任何价格影响高于 25% 的报价都将返回错误。 这是一个可选开启的功能,默认值为 90。当百分比被设置为 100 时,此功能将被禁用,也就是说,每一笔交易都会被允许通过。 注意:当我们无法计算价格影响时,我们会返回 null,并且价格影响保护也会被禁用。 |
| feePercent | String | 否 | 发送到分佣地址的询价或者目标币种数量百分比。最小百分比 > 0, Solana 链 最大百分比:10。 其他链最大百分比:3最多支持小数点后 9 位,系统将自动忽略超出的部分。 |
| mode | String | 否 | 路由模式。可选值:dex、intent、auto,默认为 dex。- dex:标准 DEX 聚合路由。- intent:通过 intent 协议路由,由求解者竞价链下撮合订单。- auto:系统自动选择最优路由模式。 |
| userWalletAddress | String | 否 | 用户钱包地址。当 mode 为 intent 或 auto 时必须传入,用于 intent 询价及签名流程。 |
| expiration | String | 否 | intent 订单过期时长(秒),默认为 180,最大值300。仅在 mode 为 intent 或 auto 时有效。 |
| slippagePercent | String | 否 | 滑点容忍百分比(0~100)。如 0.5 表示允许 0.5% 的滑点。使用 mode = auto 或 intent 时必传入。 |
| swapReceiverAddress | String | 否 | 接收输出代币的钱包地址。若不传,默认使用 userWalletAddress。 |
| fromTokenReferrerWalletAddress | String | 否 | fromToken 分佣接收钱包地址,与 feePercent 配合使用。 |
| toTokenReferrerWalletAddress | String | 否 | toToken 分佣接收钱包地址。 |
| disableRFQ | Boolean | 否 | 默认为 false。设为 true 时,禁用 RFQ(询价)路由,仅使用链上 DEX 路由。 |
响应参数#
| 参数 | 类型 | 描述 |
|---|---|---|
| chainIndex | String | 链的唯一标识。 |
| swapMode | String | 本次报价的交易模式。 |
| mode | String | 本次报价使用的路由模式,与请求参数 mode 对应。可选值:dex、intent、auto。 |
| quoteId | String | 本次报价的唯一标识。 |
| contextSlot | Integer | 生成报价时的区块链 slot 编号,用于标记报价对应的链上状态(主要用于 Solana 等基于 slot 的链)。 |
| signData | Object | intent 订单所需的签名数据。标准 DEX 模式(mode=dex)下返回 null;当 mode 为 intent 或 auto 且传入了 userWalletAddress 时,返回结构化签名数据(如 EIP-712 格式),用户需对该数据签名后再提交订单。 |
| dexRouterList | Array | 询价路径数据集合 |
| fromTokenAmount | String | 询价币种的兑换数量 (如500000000000000000000009) |
| toTokenAmount | String | 目标币种的预计兑换数量,实际请以链上执行为准 (如168611907733361) |
| tradeFee | String | 询价路径预估消耗的网络费用 (USD 计价) |
| estimateGasFee | String | 预估消耗的 gas,各个链的最小单位返回,例如 wei |
| router | String | 币种兑换的一条路径 |
| dexProtocol | Object | 兑换路径中执行的 DEX 协议 (如Verse) |
| percent | String | 一条路径中单一 DEX 协议的兑换资产占所有 DEX 协议百分比 (如100) |
| dexName | String | DEX 协议名称 |
| fromToken | Object | 询价币种信息 |
| tokenContractAddress | String | 币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00) |
| tokenSymbol | String | 币种简称 (如WETH) |
| tokenUnitPrice | String | 该接口返回的币种单价是一个结合了链上、交易所以及其他第三方来源数据的综合美元价格。注:此价格仅为推荐价格,在一些特殊情况中,币种单价可能为 null |
| decimal | String | 币种精度定义了单个的该币种可以被分成多少份的最小单位。例如,如果一个币种的精度是 8,则表示单个的这种代币可以被分成 100,000,000 份的最小单位。注意:该参数仅供参考,币种精度会随着合约拥有者的设置改变等原因发生变化。 |
| isHoneyPot | Boolean | 代币是否为貔貅币。 是:true 否:false |
| taxRate | String | 代币卖出税率,适用于可设定税费机制的代币(如SafeMoon、SPL2022代币)。普通代币无税费时返回 0。取值为 最小:0 最大:1,0.01表示1%。 |
| toToken | Object | 路径中目标币种信息 |
| tokenContractAddress | String | 币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00) |
| tokenSymbol | String | 币种简称 (如WETH) |
| tokenUnitPrice | String | 该接口返回的币种单价是一个基于链上的实时美元价格。注:此价格仅为推荐价格,在一些特殊情况中,币种单价可能为 null |
| decimal | String | 币种精度定义了单个的该币种可以被分成多少份的最小单位。例如,如果一个币种的精度是 8,则表示单个的这种代币可以被分成 100,000,000 份的最小单位,注意:该参数仅供参考,币种精度会随着合约拥有者的设置改变等原因发生变化。 |
| isHoneyPot | Boolean | 代币是否为貔貅币。 是:true 否:false |
| taxRate | String | 代币买入税率,适用于可设定税费机制的代币(如SafeMoon、SPL2022代币)。普通代币无税费时返回 0。取值为 最小:0 最大:1,0.01表示1%。 |
| dexName | String | 询价路径 DEX 名称 |
| dexLogo | String | DEX 协议名称 |
| tradeFee | String | 询价路径预估消耗的网络费用 (USD 计价) |
| amountOut | String | 询价路径的接收数量 |
| priceImpactPercent | String | Percentage = (接收价值 – 支付价值) / 支付价值。因为当前兑换数量影响了流动性池深度,导致产生了价值差额。若接收价值大于支付价值,Percentage 有可能是正数。 |
请求示例#
shell
curl --location --request GET 'https://web3.okx.com/api/v6/dex/aggregator/quote?amount=10000000000000000000&chainIndex=1&toTokenAddress=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&fromTokenAddress=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' \
--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'
响应示例#
经典模式#
json
{
"code": "0",
"data": [
{
"chainIndex": "56",
"contextSlot": 102441472,
"dexRouterList": [
{
"dexProtocol": {
"dexName": "DODO V2",
"percent": "2"
},
"fromToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
"tokenSymbol": "WBNB",
"tokenUnitPrice": "612.3456789012345678901234567890123"
},
"fromTokenIndex": "0",
"toToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0x55d398326f99059ff775485246999027b3197955",
"tokenSymbol": "USDT",
"tokenUnitPrice": "0.99921"
},
"toTokenIndex": "2"
},
{
"dexProtocol": {
"dexName": "DODO V2",
"percent": "98"
},
"fromToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
"tokenSymbol": "WBNB",
"tokenUnitPrice": "612.3456789012345678901234567890123"
},
"fromTokenIndex": "0",
"toToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
"tokenSymbol": "USDC",
"tokenUnitPrice": "1"
},
"toTokenIndex": "1"
},
{
"dexProtocol": {
"dexName": "Wombat",
"percent": "100"
},
"fromToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
"tokenSymbol": "USDC",
"tokenUnitPrice": "1"
},
"fromTokenIndex": "1",
"toToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0x55d398326f99059ff775485246999027b3197955",
"tokenSymbol": "USDT",
"tokenUnitPrice": "0.99921"
},
"toTokenIndex": "2"
}
],
"estimateGasFee": "633000",
"fromToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"tokenSymbol": "BNB",
"tokenUnitPrice": "601.8"
},
"fromTokenAmount": "2000000000000",
"mode": "dex",
"priceImpactPercent": "0.38",
"quoteId": "10000000000000002",
"router": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee--0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d--0x55d398326f99059ff775485246999027b3197955",
"signData": null,
"swapMode": "exactIn",
"toToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0x55d398326f99059ff775485246999027b3197955",
"tokenSymbol": "USDT",
"tokenUnitPrice": "0.99921"
},
"toTokenAmount": "1199875432001234",
"tradeFee": "0.01355432100"
}
],
"msg": ""
}
意图模式#
json
{
"code": "0",
"data": [
{
"chainIndex": "1",
"contextSlot": 0,
"dexRouterList": [],
"estimateGasFee": "0",
"fromToken": {
"decimal": "18",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"tokenSymbol": "WETH",
"tokenUnitPrice": "2498.123456789012345678901234567890"
},
"fromTokenAmount": "10000000000000000000",
"mode": "INTENT",
"priceImpactPercent": "-0.35",
"quoteId": "10000000000000001",
"router": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2--0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"signData": {
"domain": {
"chainId": 1,
"name": "OKX Intent Swap",
"verifyingContract": "0x1111111254fb6c44bac0bed2854e76f90643097d",
"version": "v1.0.0"
},
"message": {
"appData": "0xa1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
"commissionInfos": [
{
"feePercent": "30000000",
"flag": "86412300000000000000000000000000000000000000000000000000000000000000",
"referrerWalletAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
},
{
"feePercent": "10000000",
"flag": "86567800000000000000000000000000000000000000000000000000000000000000",
"referrerWalletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
}
],
"fromTokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"fromTokenAmount": "10000000000000000000",
"owner": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
"partiallyFillable": false,
"receiver": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
"swapMode": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12",
"toTokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"toTokenAmount": "24900000000",
"validTo": 1893456000
},
"primaryType": "Order",
"types": {
"Order": [
{ "name": "fromTokenAddress", "type": "address" },
{ "name": "toTokenAddress", "type": "address" },
{ "name": "owner", "type": "address" },
{ "name": "receiver", "type": "address" },
{ "name": "fromTokenAmount", "type": "uint256" },
{ "name": "toTokenAmount", "type": "uint256" },
{ "name": "validTo", "type": "uint32" },
{ "name": "appData", "type": "bytes32" },
{ "name": "swapMode", "type": "bytes32" },
{ "name": "partiallyFillable", "type": "bool" },
{ "name": "commissionInfos", "type": "CommissionInfo[]" }
],
"CommissionInfo": [
{ "name": "feePercent", "type": "uint256" },
{ "name": "referrerWalletAddress", "type": "address" },
{ "name": "flag", "type": "uint256" }
],
"EIP712Domain": [
{ "name": "name", "type": "string" },
{ "name": "version", "type": "string" },
{ "name": "chainId", "type": "uint256" },
{ "name": "verifyingContract", "type": "address" }
]
}
},
"swapMode": "exactIn",
"toToken": {
"decimal": "6",
"isHoneyPot": false,
"taxRate": "0",
"tokenContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"tokenSymbol": "USDC",
"tokenUnitPrice": "1"
},
"toTokenAmount": "24950000000",
"tradeFee": "0"
}
],
"msg": ""
}
