获取意图兑换价格#

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

支持的链#

链名Chainid
Ethereum1
BSC56
Arbitrum42161
Base8453

请求地址#

GET
https://web3.okx.com/api/v6/dex/aggregator/quote

请求参数#

参数类型必传描述
chainIndexString链的唯一标识。
1: Ethereum,更多可查看这里
amountString交易数量。 如果 swapModeexactIn,代表卖出币种数量
如果 swapModeexactOut,代表买入币种数量。(数量需包含精度,如兑换 1.00 USDT 需输入 1000000,兑换 1.00 DAI 需输入 1000000000000000000),币种精度可通过代币基础信息取得。
swapModeString交易模式。可选值为:exactInexactOut
默认值为:exactIn
当设为 exactOut 时,适用于需要获取确切输出金额的使用场景。

注意:
1. ExactOut 功能目前仅支持 Ethereum、Base、BSC、Arbitrum 链
2. ExactOut 功能目前仅支持 Uni v2 和 v3 协议
3. 在此模式下,滑点设置作用于输入代币。
fromTokenAddressString卖出币种合约地址 (如0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee)
toTokenAddressString买入币种合约地址 (如0xa892e1fef8b31acc44ce78e7db0a2dc610f92d00)
dexIdsString限定询价的流动性池 dexId , 多个组合按 , 分隔 (如 1,50,180 ,更多可查看流动性列表)
excludeDexIdsString限定不会使用於询价的流动性池 dexId,多个组合按,分隔 (如 1,50,180 ,更多可查看流动性列表)
forJitoBundleBoolean默认值为 false。若该 quote 将用于 Jito bundle,则设置为 true。启用后,路由器会排除与 Jito bundle 不兼容的 DEX,例如 HumidiFi 和 BisonFi。
excludePoolAddressesString传入具体池子地址,路由时将过滤相关池子。最多支持传入 20 个池子地址,传入时以逗号分隔
directRouteBoolean默认设置为 false。启用后,将限制路由仅使用单一流动性池。当前,该功能仅适用于 Solana 兑换。
singleRouteOnlyBoolean默认设置为 false。当该参数启用时,路由将被限制为单一路径: 允许 多跳(multi-hop) 允许在不同跳中使用不同的池子(multi-pool) 不允许并行拆单路由,即不会构造多条并行路径进行拆分执行
singlePoolPerHopBoolean默认设置为 false。默认设置为 false。当该参数启用时:- 路径中的 每一跳(hop)仅允许使用一个池子 - 不允许在同一跳中对多个池子进行拆分
assetAwareRoutingBoolean默认设置为 false。 当该参数启用时,路由逻辑将基于资产属性对可选路由进行约束: 路由过程中将优先并仅使用与币对资产属性匹配的资产类型 以 U-U(稳定币对)交易 为例,启用该参数后,路由将被限制仅使用 稳定类资产,避免引入非相关或波动性较高的资产路径。 当前该参数仅支持 U-U 和 U-Native 交易场景
priceImpactProtectionPercentString(可选,默认值为 90%) 允许的价格影响百分比 (介于 0 和 100 之间)。
当用户设置了 priceImpactProtectionPercent 后,如果估算的价格影响超过了指定的百分比,将会返回一个错误。例如,如果 priceImpactProtectionPercent = 25,任何价格影响高于 25% 的报价都将返回错误。
这是一个可选开启的功能,默认值为 90。当百分比被设置为 100 时,此功能将被禁用,也就是说,每一笔交易都会被允许通过。

注意:当我们无法计算价格影响时,我们会返回 null,并且价格影响保护也会被禁用。
feePercentString发送到分佣地址的询价或者目标币种数量百分比。
最小百分比 > 0
Solana 链最大百分比:10。 其他链最大百分比:3
最多支持小数点后 9 位,系统将自动忽略超出的部分。
modeString路由模式。可选值:dexintentauto,默认为 dex
- dex:标准 DEX 聚合路由。
- intent:通过 intent 协议路由,由求解者竞价链下撮合订单。
- auto:系统自动选择最优路由模式。
userWalletAddressString用户钱包地址。当 modeintentauto 时必须传入,用于 intent 询价及签名流程。
expirationStringintent 订单过期时长(秒),默认为 180,最大值300。仅在 modeintentauto 时有效。
slippagePercentString滑点容忍百分比(0~100)。如 0.5 表示允许 0.5% 的滑点。使用 mode = auto 或 intent 时必传入。
swapReceiverAddressString接收输出代币的钱包地址。若不传,默认使用 userWalletAddress
fromTokenReferrerWalletAddressStringfromToken 分佣接收钱包地址,与 feePercent 配合使用。
toTokenReferrerWalletAddressStringtoToken 分佣接收钱包地址。
disableRFQBoolean默认为 false。设为 true 时,禁用 RFQ(询价)路由,仅使用链上 DEX 路由。

响应参数#

参数类型描述
chainIndexString链的唯一标识。
swapModeString本次报价的交易模式。
modeString本次报价使用的路由模式,与请求参数 mode 对应。可选值:dexintentauto
quoteIdString本次报价的唯一标识。
contextSlotInteger生成报价时的区块链 slot 编号,用于标记报价对应的链上状态(主要用于 Solana 等基于 slot 的链)。
signDataObjectintent 订单所需的签名数据。标准 DEX 模式(mode=dex)下返回 null;当 modeintentauto 且传入了 userWalletAddress 时,返回结构化签名数据(如 EIP-712 格式),用户需对该数据签名后再提交订单。
dexRouterListArray询价路径数据集合
fromTokenAmountString询价币种的兑换数量 (如500000000000000000000009)
toTokenAmountString目标币种的预计兑换数量,实际请以链上执行为准 (如168611907733361)
tradeFeeString询价路径预估消耗的网络费用 (USD 计价)
estimateGasFeeString预估消耗的 gas,各个链的最小单位返回,例如 wei
routerString币种兑换的一条路径
dexProtocolObject兑换路径中执行的 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%。
dexNameString询价路径 DEX 名称
dexLogoStringDEX 协议名称
tradeFeeString询价路径预估消耗的网络费用 (USD 计价)
amountOutString询价路径的接收数量
priceImpactPercentStringPercentage = (接收价值 – 支付价值) / 支付价值。因为当前兑换数量影响了流动性池深度,导致产生了价值差额。若接收价值大于支付价值,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": ""
}