Build DeFi Deposit Transaction
Build the unsigned transaction calldata for a DeFi deposit / stake. Returns an ordered dataList (typically [APPROVE, DEPOSIT], or [DEPOSIT] when the allowance is already sufficient) for the caller to sign and broadcast.
The caller does NOT pass binanceChainId — the service resolves it from investmentId. Set simulate=true to also receive a preview (projected balance change, estimated gas, and lending health-factor change) without broadcasting.
Build DeFi Deposit Transaction › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Build DeFi Deposit Transaction › Request Body
addressUser wallet address (the signer / sender).
investmentIdInvestment product ID (chain-agnostic). The service resolves the chain from this ID.
A (tokenAddress, amount) pair. amount is a human-readable decimal string (NOT the token's smallest unit); the service converts it according to the token's decimals. For the native asset use the sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee (40 es).
tokenAddressToken contract address; the native-asset sentinel for the native coin.
amountHuman-readable amount as a decimal string, e.g. "1.5", "100".
simulateWhen true, the response also includes a preview object. Default false. If the simulated transaction reverts, the request returns 40485 for a specific classified revert reason or 40484 for any other revert (see Error Codes).
Build DeFi Deposit Transaction › Responses
Deposit transaction calldata returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Unified response of the five build endpoints (deposit / redeem / lp-add / lp-remove / claim). dataList is ordered: APPROVE items come first, the main action follows — sign and broadcast each item in order. preview is non-null only when the request set simulate=true. redeemDelayDays is populated only by /transaction/redeem.
Ordered unsigned transactions; APPROVE precedes the main action.
callDataTypeAction kind of this item:
APPROVE— ERC-20 approval (EVM only), must be signed/broadcast and confirmed before the main action. Never returned for Solana.DEPOSIT/REDEEM/LP_ADD/LP_REMOVE/CLAIM— the main action.LP_ADD/LP_REMOVEare the LP add / remove legs (the same build path as deposit / redeem for liquidity-pool investments; the kind reflects the on-chain action, not the entry endpoint).
fromUser wallet address (the signer / sender). EIP-55 checksummed on EVM chains — normalize with to_checksum_address before signing if your signer requires it. On Solana this is the base58 fee-payer public key.
toTarget contract address. EIP-55 checksummed on EVM chains, same format as from. Non-null on EVM; null on Solana (Solana expresses the target program inside the serialized transaction in data, not here).
valueNative-asset value as a 0x-prefixed hex string. Non-null on EVM; null on Solana.
dataSerialized transaction data. On EVM chains a 0x-prefixed hex calldata string. On Solana a base64-serialized wire transaction (compute-budget fee injected server-side for every action).
gasLimitSuggested gas limit on EVM (decimal string, gas units). On Solana it is the estimated compute-unit consumption; the transaction's actual compute-unit limit set on-chain is roughly 1.2× this value. null when estimation fails.
gasPriceLegacy gas price on EVM, decimal string. null on EIP-1559 chains such as BSC (use maxFeePerGas / maxPriorityFeePerGas instead). On Solana this is the per-compute-unit fee in micro-lamports (decimal string).
maxPriorityFeePerGasEIP-1559 priority fee in wei (decimal string). null on non-1559 EVM chains and on Solana.
maxFeePerGasEIP-1559 max fee per gas in wei (decimal string). null on non-1559 EVM chains and on Solana.
Simulation result returned by the build endpoints when simulate=true. Includes whether the action is expected to succeed, the projected balance change, the estimated network fee, and — for lending protocols — the health-factor change. balanceChange, feeAndContract, healthFactor, and warnings each have a fixed structure (see below); the number of entries and some inner values vary by protocol.
successWhether the simulated transaction is expected to succeed on-chain.
Signed token balance deltas from the simulation. Each entry has tokenType, tokenSymbol, tokenAddress, tokenDecimals, amount (positive = received, negative = spent), valueUsd, and an optional tokenId.
tokenTypeToken role / type tag from the simulation.
tokenSymbolToken symbol.
tokenAddressToken contract address.
tokenDecimalsToken decimals.
amountSigned delta (positive = received, negative = spent).
valueUsdUSD value of the delta.
tokenIdOptional NFT / position token ID when applicable.
Estimated network fee and the contract the action interacts with. Contains estimatedNetworkFee and interactWith.
Estimated gas cost for the action. Fields may be null when estimation is not available (e.g. a failed simulation).
amountEstimated gas fee in the fee-paying native coin (human-readable). On Solana this may be null even when fee estimation succeeded — use valueUsd as the reliable figure when amount is absent.
tokenSymbolSymbol of the fee-paying token (native coin, e.g. BNB).
valueUsdUSD value of the estimated fee.
rentFeeAmountSolana storage / rent fee portion (human-readable). null on EVM chains; only populated on Solana when the action creates an account (e.g. a first-time ATA).
rentFeeValueUsdUSD value of the Solana rent fee. null on EVM chains; Solana-only.
priorityFeeAmountSolana priority fee portion (human-readable). null on EVM chains; Solana-only.
The contract the action interacts with.
addressTarget contract address.
Lending health-factor change. Contains before / after values for lending protocols (e.g. Aave / Venus); null for non-lending protocols or when health factor is unavailable.
beforeHealth factor before this transaction. Null when unavailable.
afterHealth factor after this transaction. Null when unavailable.
Non-blocking risk warnings. Empty array when there are no warnings.
codeWarning code. Known values: HEALTH_FACTOR_WARNING, HEALTH_FACTOR_DANGER, HIGH_SLIPPAGE, DELAYED_REDEMPTION, LP_OUT_OF_RANGE. Branch on code for control flow; display message as-is.
levelSeverity level — INFO / WARN / DANGER.
messageHuman-readable warning text.
errorMessageError message when the simulated transaction is expected to fail.
redeemDelayDaysRedeem waiting period as a [min, max] day pair of decimal strings. Populated only by /transaction/redeem; null on the other build endpoints or when unavailable. Interpretation: [] (empty) = instant, no waiting period; ["7","7"] = fixed 7 days; ["7","10"] = 7–10 days. The wait starts after the redeem transaction is confirmed on-chain. Protocols with a waiting period include Lista (helio), Aster (astherus), and the Solana staking protocols (sol_staking, marinadefinance, renzo, solayer, jito, jupiter, fragmetric), which range from 2 to 30 days. Delays are configured in seconds server-side and rounded up to whole days.
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).
Build DeFi Redeem Transaction
Build the unsigned transaction calldata for a DeFi redeem / withdraw. Returns an ordered dataList (typically [REDEEM] or [APPROVE, REDEEM]).
Redeem amount is decided by exactly one of ratio or token (mutually exclusive): - ratio omitted / blank → exact-amount redeem: the amount comes from
token (tokenAddress + amount); the position is not queried. token is required
in this mode (omitting token, or leaving amount blank, is rejected with 40001,
Parameter error; both ratio and token absent is also rejected with 40001).
ratiopresent → proportional redeem: must parse as a decimal in(0, 1]. The service queries the user's on-chain position underinvestmentIdand scales each token's amount byratio(floored to the token's decimals).ratio="1"is a full (max) redeem. In this modetokenis ignored — the output tokens and amounts are derived from the position.
slippageBps is the slippage tolerance in basis points (e.g. 300 = 3%). The caller does NOT pass binanceChainId — resolved from investmentId. Set simulate=true to also receive preview.
The response also carries redeemDelayDays — the redeem waiting period as a [min, max] day pair (e.g. ["7","10"] = 7–10 days, [] = instant). The wait starts after the redeem tx is confirmed on-chain. See the redeemDelayDays field on DefiTxResponse.
Build DeFi Redeem Transaction › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Build DeFi Redeem Transaction › Request Body
addressUser wallet address (the signer / sender).
investmentIdInvestment product ID (chain-agnostic). The service resolves the chain from this ID.
A (tokenAddress, amount) pair. amount is a human-readable decimal string (NOT the token's smallest unit); the service converts it according to the token's decimals. For the native asset use the sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee (40 es).
tokenAddressToken contract address; the native-asset sentinel for the native coin.
amountHuman-readable amount as a decimal string, e.g. "1.5", "100".
ratioRedeem ratio, mutually exclusive with token. Omitted / blank → exact-amount redeem via token (tokenAddress + amount, position not queried). Present → must parse as a decimal in (0, 1]; the service queries the on-chain position under investmentId and scales each token amount by ratio (floored to decimals). "1" = full (max) redeem; in this mode token is ignored.
slippageBpsSlippage tolerance in basis points (e.g. 300 = 3%).
stakeAccountsBase58 stake account address(es) — the account(s) to deactivate. Required for Solana native staking (sol_staking) redeem only; the whole stake account is redeemed and token / ratio are ignored in this mode. Passing stakeAccounts for any other protocol (EVM chains, LP, or other Solana protocols) is a parameter error. This release supports exactly one element (length at most 1).
positionAddressBase58 position PDA for Jupiter Lend Borrow (jupiter, surface lend_borrow_supply) redeem — one vault may hold several positions for the same address, so the caller must name which to withdraw. Take it from position/list's positionDetail.positionIndex. Required for a Lend Borrow redeem; token / ratio still decide the amount to withdraw. Passing positionAddress for any other protocol is a parameter error.
simulateWhen true, the response also includes a preview object. Default false. If the simulated transaction reverts, the request returns an error code instead of a 200 with preview.success=false: 40485 when the redeem amount exceeds the current position, 40484 for any other revert (see Error Codes).
Build DeFi Redeem Transaction › Responses
Redeem transaction calldata returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Unified response of the five build endpoints (deposit / redeem / lp-add / lp-remove / claim). dataList is ordered: APPROVE items come first, the main action follows — sign and broadcast each item in order. preview is non-null only when the request set simulate=true. redeemDelayDays is populated only by /transaction/redeem.
Ordered unsigned transactions; APPROVE precedes the main action.
callDataTypeAction kind of this item:
APPROVE— ERC-20 approval (EVM only), must be signed/broadcast and confirmed before the main action. Never returned for Solana.DEPOSIT/REDEEM/LP_ADD/LP_REMOVE/CLAIM— the main action.LP_ADD/LP_REMOVEare the LP add / remove legs (the same build path as deposit / redeem for liquidity-pool investments; the kind reflects the on-chain action, not the entry endpoint).
fromUser wallet address (the signer / sender). EIP-55 checksummed on EVM chains — normalize with to_checksum_address before signing if your signer requires it. On Solana this is the base58 fee-payer public key.
toTarget contract address. EIP-55 checksummed on EVM chains, same format as from. Non-null on EVM; null on Solana (Solana expresses the target program inside the serialized transaction in data, not here).
valueNative-asset value as a 0x-prefixed hex string. Non-null on EVM; null on Solana.
dataSerialized transaction data. On EVM chains a 0x-prefixed hex calldata string. On Solana a base64-serialized wire transaction (compute-budget fee injected server-side for every action).
gasLimitSuggested gas limit on EVM (decimal string, gas units). On Solana it is the estimated compute-unit consumption; the transaction's actual compute-unit limit set on-chain is roughly 1.2× this value. null when estimation fails.
gasPriceLegacy gas price on EVM, decimal string. null on EIP-1559 chains such as BSC (use maxFeePerGas / maxPriorityFeePerGas instead). On Solana this is the per-compute-unit fee in micro-lamports (decimal string).
maxPriorityFeePerGasEIP-1559 priority fee in wei (decimal string). null on non-1559 EVM chains and on Solana.
maxFeePerGasEIP-1559 max fee per gas in wei (decimal string). null on non-1559 EVM chains and on Solana.
Simulation result returned by the build endpoints when simulate=true. Includes whether the action is expected to succeed, the projected balance change, the estimated network fee, and — for lending protocols — the health-factor change. balanceChange, feeAndContract, healthFactor, and warnings each have a fixed structure (see below); the number of entries and some inner values vary by protocol.
successWhether the simulated transaction is expected to succeed on-chain.
Signed token balance deltas from the simulation. Each entry has tokenType, tokenSymbol, tokenAddress, tokenDecimals, amount (positive = received, negative = spent), valueUsd, and an optional tokenId.
tokenTypeToken role / type tag from the simulation.
tokenSymbolToken symbol.
tokenAddressToken contract address.
tokenDecimalsToken decimals.
amountSigned delta (positive = received, negative = spent).
valueUsdUSD value of the delta.
tokenIdOptional NFT / position token ID when applicable.
Estimated network fee and the contract the action interacts with. Contains estimatedNetworkFee and interactWith.
Estimated gas cost for the action. Fields may be null when estimation is not available (e.g. a failed simulation).
amountEstimated gas fee in the fee-paying native coin (human-readable). On Solana this may be null even when fee estimation succeeded — use valueUsd as the reliable figure when amount is absent.
tokenSymbolSymbol of the fee-paying token (native coin, e.g. BNB).
valueUsdUSD value of the estimated fee.
rentFeeAmountSolana storage / rent fee portion (human-readable). null on EVM chains; only populated on Solana when the action creates an account (e.g. a first-time ATA).
rentFeeValueUsdUSD value of the Solana rent fee. null on EVM chains; Solana-only.
priorityFeeAmountSolana priority fee portion (human-readable). null on EVM chains; Solana-only.
The contract the action interacts with.
addressTarget contract address.
Lending health-factor change. Contains before / after values for lending protocols (e.g. Aave / Venus); null for non-lending protocols or when health factor is unavailable.
beforeHealth factor before this transaction. Null when unavailable.
afterHealth factor after this transaction. Null when unavailable.
Non-blocking risk warnings. Empty array when there are no warnings.
codeWarning code. Known values: HEALTH_FACTOR_WARNING, HEALTH_FACTOR_DANGER, HIGH_SLIPPAGE, DELAYED_REDEMPTION, LP_OUT_OF_RANGE. Branch on code for control flow; display message as-is.
levelSeverity level — INFO / WARN / DANGER.
messageHuman-readable warning text.
errorMessageError message when the simulated transaction is expected to fail.
redeemDelayDaysRedeem waiting period as a [min, max] day pair of decimal strings. Populated only by /transaction/redeem; null on the other build endpoints or when unavailable. Interpretation: [] (empty) = instant, no waiting period; ["7","7"] = fixed 7 days; ["7","10"] = 7–10 days. The wait starts after the redeem transaction is confirmed on-chain. Protocols with a waiting period include Lista (helio), Aster (astherus), and the Solana staking protocols (sol_staking, marinadefinance, renzo, solayer, jito, jupiter, fragmetric), which range from 2 to 30 days. Delays are configured in seconds server-side and rounded up to whole days.
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).
Build LP Add Transaction
Build the unsigned transaction calldata for adding liquidity. tokenList supports multiple tokens. Returns an ordered dataList (typically [APPROVE, LP_ADD]).
Tick range source (provide exactly one group):
nftId— append to an existing LP position (reuses its range).priceRange— percentage band (e.g."5"= ±5%) for a new position.tickLower+tickUpper— explicit rawint24pair for a new position. Rules:
-
If more than one group is supplied, only the highest-priority one above is used and the others are silently ignored (priority:
nftId>priceRange> explicit tick pair). -
If none is supplied, the request is rejected (
40453). -
tickLower/tickUpperare rawint24values and MUST be aligned to the pool'stickSpacing, otherwise the request is rejected (40453). -
The caller does NOT pass
binanceChainId— resolved frominvestmentId.
Build LP Add Transaction › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Build LP Add Transaction › Request Body
addressUser wallet address (the signer / sender).
investmentIdLP investment product ID (chain-agnostic).
Tokens to supply. Two tokens for a standard LP add.
tokenAddressToken contract address; the native-asset sentinel for the native coin.
amountHuman-readable amount as a decimal string, e.g. "1.5", "100".
tickLowerLower tick bound (raw int24) for a new position. MUST be aligned to the pool's tickSpacing. Pick exactly one tick-range source: tickLower+tickUpper, priceRange, or nftId (to append to an existing position). If several are supplied, the lowest-priority ones are ignored (priority: nftId > priceRange > explicit tick pair).
tickUpperUpper tick bound (raw int24) for a new position. MUST be aligned to the pool's tickSpacing. See tickLower for the pick-exactly-one rule.
priceRangePrice range as a percentage (e.g. "5" = ±5%) for a new position. Alternative to tickLower+tickUpper; see tickLower for the pick-exactly-one rule.
nftIdLP NFT token ID, decimal string (e.g. "7225901" or "#7225901"). Required when appending to an existing position (reuses its range); omit for a new position. Highest-priority tick-range source — see tickLower for the pick-exactly-one rule. The # prefix returned by the position list may be passed as-is — the service strips it automatically.
slippageBpsSlippage tolerance for the LP leg, in basis points (e.g. 300 = 3%).
simulateWhen true, the response also includes a preview object. Default false. If the simulated transaction reverts, the request returns 40485 for a specific classified revert reason or 40484 for any other revert (see Error Codes).
Build LP Add Transaction › Responses
LP add transaction calldata returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Unified response of the five build endpoints (deposit / redeem / lp-add / lp-remove / claim). dataList is ordered: APPROVE items come first, the main action follows — sign and broadcast each item in order. preview is non-null only when the request set simulate=true. redeemDelayDays is populated only by /transaction/redeem.
Ordered unsigned transactions; APPROVE precedes the main action.
callDataTypeAction kind of this item:
APPROVE— ERC-20 approval (EVM only), must be signed/broadcast and confirmed before the main action. Never returned for Solana.DEPOSIT/REDEEM/LP_ADD/LP_REMOVE/CLAIM— the main action.LP_ADD/LP_REMOVEare the LP add / remove legs (the same build path as deposit / redeem for liquidity-pool investments; the kind reflects the on-chain action, not the entry endpoint).
fromUser wallet address (the signer / sender). EIP-55 checksummed on EVM chains — normalize with to_checksum_address before signing if your signer requires it. On Solana this is the base58 fee-payer public key.
toTarget contract address. EIP-55 checksummed on EVM chains, same format as from. Non-null on EVM; null on Solana (Solana expresses the target program inside the serialized transaction in data, not here).
valueNative-asset value as a 0x-prefixed hex string. Non-null on EVM; null on Solana.
dataSerialized transaction data. On EVM chains a 0x-prefixed hex calldata string. On Solana a base64-serialized wire transaction (compute-budget fee injected server-side for every action).
gasLimitSuggested gas limit on EVM (decimal string, gas units). On Solana it is the estimated compute-unit consumption; the transaction's actual compute-unit limit set on-chain is roughly 1.2× this value. null when estimation fails.
gasPriceLegacy gas price on EVM, decimal string. null on EIP-1559 chains such as BSC (use maxFeePerGas / maxPriorityFeePerGas instead). On Solana this is the per-compute-unit fee in micro-lamports (decimal string).
maxPriorityFeePerGasEIP-1559 priority fee in wei (decimal string). null on non-1559 EVM chains and on Solana.
maxFeePerGasEIP-1559 max fee per gas in wei (decimal string). null on non-1559 EVM chains and on Solana.
Simulation result returned by the build endpoints when simulate=true. Includes whether the action is expected to succeed, the projected balance change, the estimated network fee, and — for lending protocols — the health-factor change. balanceChange, feeAndContract, healthFactor, and warnings each have a fixed structure (see below); the number of entries and some inner values vary by protocol.
successWhether the simulated transaction is expected to succeed on-chain.
Signed token balance deltas from the simulation. Each entry has tokenType, tokenSymbol, tokenAddress, tokenDecimals, amount (positive = received, negative = spent), valueUsd, and an optional tokenId.
tokenTypeToken role / type tag from the simulation.
tokenSymbolToken symbol.
tokenAddressToken contract address.
tokenDecimalsToken decimals.
amountSigned delta (positive = received, negative = spent).
valueUsdUSD value of the delta.
tokenIdOptional NFT / position token ID when applicable.
Estimated network fee and the contract the action interacts with. Contains estimatedNetworkFee and interactWith.
Estimated gas cost for the action. Fields may be null when estimation is not available (e.g. a failed simulation).
amountEstimated gas fee in the fee-paying native coin (human-readable). On Solana this may be null even when fee estimation succeeded — use valueUsd as the reliable figure when amount is absent.
tokenSymbolSymbol of the fee-paying token (native coin, e.g. BNB).
valueUsdUSD value of the estimated fee.
rentFeeAmountSolana storage / rent fee portion (human-readable). null on EVM chains; only populated on Solana when the action creates an account (e.g. a first-time ATA).
rentFeeValueUsdUSD value of the Solana rent fee. null on EVM chains; Solana-only.
priorityFeeAmountSolana priority fee portion (human-readable). null on EVM chains; Solana-only.
The contract the action interacts with.
addressTarget contract address.
Lending health-factor change. Contains before / after values for lending protocols (e.g. Aave / Venus); null for non-lending protocols or when health factor is unavailable.
beforeHealth factor before this transaction. Null when unavailable.
afterHealth factor after this transaction. Null when unavailable.
Non-blocking risk warnings. Empty array when there are no warnings.
codeWarning code. Known values: HEALTH_FACTOR_WARNING, HEALTH_FACTOR_DANGER, HIGH_SLIPPAGE, DELAYED_REDEMPTION, LP_OUT_OF_RANGE. Branch on code for control flow; display message as-is.
levelSeverity level — INFO / WARN / DANGER.
messageHuman-readable warning text.
errorMessageError message when the simulated transaction is expected to fail.
redeemDelayDaysRedeem waiting period as a [min, max] day pair of decimal strings. Populated only by /transaction/redeem; null on the other build endpoints or when unavailable. Interpretation: [] (empty) = instant, no waiting period; ["7","7"] = fixed 7 days; ["7","10"] = 7–10 days. The wait starts after the redeem transaction is confirmed on-chain. Protocols with a waiting period include Lista (helio), Aster (astherus), and the Solana staking protocols (sol_staking, marinadefinance, renzo, solayer, jito, jupiter, fragmetric), which range from 2 to 30 days. Delays are configured in seconds server-side and rounded up to whole days.
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).
Calculate LP Add Paired Amounts
Given a single input token, calculate the paired token amount needed for an LP add. This is a pure computation endpoint — it does not touch the chain and does not deduct any fee. Use it before /transaction/lp-add to size the paired token when only one side is supplied.
Tick range source rules are the same as /lp-add — provide exactly one group: nftId (existing position), priceRange, or tickLower+tickUpper.
-
If more than one group is supplied, only the highest-priority one is used and the others are silently ignored (priority:
nftId>priceRange> explicit tick pair). -
If none is supplied, the request is rejected.
-
The caller does NOT pass
binanceChainId— resolved frominvestmentId.
Calculate LP Add Paired Amounts › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Calculate LP Add Paired Amounts › Request Body
addressUser wallet address.
investmentIdLP investment product ID (chain-agnostic).
A (tokenAddress, amount) pair. amount is a human-readable decimal string (NOT the token's smallest unit); the service converts it according to the token's decimals. For the native asset use the sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee (40 es).
tokenAddressToken contract address; the native-asset sentinel for the native coin.
amountHuman-readable amount as a decimal string, e.g. "1.5", "100".
tickLowerLower tick bound (raw int24), aligned to the pool's tickSpacing.
tickUpperUpper tick bound (raw int24), aligned to the pool's tickSpacing.
priceRangePrice range as a percentage (e.g. "5" = ±5%).
nftIdRequired when calculating for an existing LP position.
Calculate LP Add Paired Amounts › Responses
Paired token amounts returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Result of /transaction/lp-add/calculate. Returns the paired token amounts derived from the single input token. This endpoint is pure computation — it does not touch the chain and does not deduct any fee.
inputTokenAmountEcho of the input token amount (human-readable).
pairedTokenAddressThe paired token contract address derived from the investment.
pairedTokenAmountCalculated paired token amount (human-readable).
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).
Build LP Remove Transaction
Build the unsigned transaction calldata for removing liquidity. Removal is by nftId + ratio (range (0, 1]) — no tokenList is needed; the per-token amounts are derived from the on-chain position. Returns an ordered dataList (typically [LP_REMOVE]).
slippageBps is the LP-leg slippage tolerance in basis points. The caller does NOT pass binanceChainId — resolved from investmentId.
Build LP Remove Transaction › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Build LP Remove Transaction › Request Body
addressUser wallet address (the signer / sender).
investmentIdLP investment product ID (chain-agnostic).
nftIdLP NFT token ID identifying the position to remove, decimal string (e.g. "7225901" or "#7225901"). The # prefix returned by the position list may be passed as-is — the service strips it automatically.
ratioRemoval ratio in the range (0, 1] as a decimal string (e.g. "0.04", "1").
slippageBpsSlippage tolerance for the LP leg, in basis points (e.g. 300 = 3%).
simulateWhen true, the response also includes a preview object. Default false. If the simulated transaction reverts, the request returns 40485 for a specific classified revert reason or 40484 for any other revert (see Error Codes).
Build LP Remove Transaction › Responses
LP remove transaction calldata returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Unified response of the five build endpoints (deposit / redeem / lp-add / lp-remove / claim). dataList is ordered: APPROVE items come first, the main action follows — sign and broadcast each item in order. preview is non-null only when the request set simulate=true. redeemDelayDays is populated only by /transaction/redeem.
Ordered unsigned transactions; APPROVE precedes the main action.
callDataTypeAction kind of this item:
APPROVE— ERC-20 approval (EVM only), must be signed/broadcast and confirmed before the main action. Never returned for Solana.DEPOSIT/REDEEM/LP_ADD/LP_REMOVE/CLAIM— the main action.LP_ADD/LP_REMOVEare the LP add / remove legs (the same build path as deposit / redeem for liquidity-pool investments; the kind reflects the on-chain action, not the entry endpoint).
fromUser wallet address (the signer / sender). EIP-55 checksummed on EVM chains — normalize with to_checksum_address before signing if your signer requires it. On Solana this is the base58 fee-payer public key.
toTarget contract address. EIP-55 checksummed on EVM chains, same format as from. Non-null on EVM; null on Solana (Solana expresses the target program inside the serialized transaction in data, not here).
valueNative-asset value as a 0x-prefixed hex string. Non-null on EVM; null on Solana.
dataSerialized transaction data. On EVM chains a 0x-prefixed hex calldata string. On Solana a base64-serialized wire transaction (compute-budget fee injected server-side for every action).
gasLimitSuggested gas limit on EVM (decimal string, gas units). On Solana it is the estimated compute-unit consumption; the transaction's actual compute-unit limit set on-chain is roughly 1.2× this value. null when estimation fails.
gasPriceLegacy gas price on EVM, decimal string. null on EIP-1559 chains such as BSC (use maxFeePerGas / maxPriorityFeePerGas instead). On Solana this is the per-compute-unit fee in micro-lamports (decimal string).
maxPriorityFeePerGasEIP-1559 priority fee in wei (decimal string). null on non-1559 EVM chains and on Solana.
maxFeePerGasEIP-1559 max fee per gas in wei (decimal string). null on non-1559 EVM chains and on Solana.
Simulation result returned by the build endpoints when simulate=true. Includes whether the action is expected to succeed, the projected balance change, the estimated network fee, and — for lending protocols — the health-factor change. balanceChange, feeAndContract, healthFactor, and warnings each have a fixed structure (see below); the number of entries and some inner values vary by protocol.
successWhether the simulated transaction is expected to succeed on-chain.
Signed token balance deltas from the simulation. Each entry has tokenType, tokenSymbol, tokenAddress, tokenDecimals, amount (positive = received, negative = spent), valueUsd, and an optional tokenId.
tokenTypeToken role / type tag from the simulation.
tokenSymbolToken symbol.
tokenAddressToken contract address.
tokenDecimalsToken decimals.
amountSigned delta (positive = received, negative = spent).
valueUsdUSD value of the delta.
tokenIdOptional NFT / position token ID when applicable.
Estimated network fee and the contract the action interacts with. Contains estimatedNetworkFee and interactWith.
Estimated gas cost for the action. Fields may be null when estimation is not available (e.g. a failed simulation).
amountEstimated gas fee in the fee-paying native coin (human-readable). On Solana this may be null even when fee estimation succeeded — use valueUsd as the reliable figure when amount is absent.
tokenSymbolSymbol of the fee-paying token (native coin, e.g. BNB).
valueUsdUSD value of the estimated fee.
rentFeeAmountSolana storage / rent fee portion (human-readable). null on EVM chains; only populated on Solana when the action creates an account (e.g. a first-time ATA).
rentFeeValueUsdUSD value of the Solana rent fee. null on EVM chains; Solana-only.
priorityFeeAmountSolana priority fee portion (human-readable). null on EVM chains; Solana-only.
The contract the action interacts with.
addressTarget contract address.
Lending health-factor change. Contains before / after values for lending protocols (e.g. Aave / Venus); null for non-lending protocols or when health factor is unavailable.
beforeHealth factor before this transaction. Null when unavailable.
afterHealth factor after this transaction. Null when unavailable.
Non-blocking risk warnings. Empty array when there are no warnings.
codeWarning code. Known values: HEALTH_FACTOR_WARNING, HEALTH_FACTOR_DANGER, HIGH_SLIPPAGE, DELAYED_REDEMPTION, LP_OUT_OF_RANGE. Branch on code for control flow; display message as-is.
levelSeverity level — INFO / WARN / DANGER.
messageHuman-readable warning text.
errorMessageError message when the simulated transaction is expected to fail.
redeemDelayDaysRedeem waiting period as a [min, max] day pair of decimal strings. Populated only by /transaction/redeem; null on the other build endpoints or when unavailable. Interpretation: [] (empty) = instant, no waiting period; ["7","7"] = fixed 7 days; ["7","10"] = 7–10 days. The wait starts after the redeem transaction is confirmed on-chain. Protocols with a waiting period include Lista (helio), Aster (astherus), and the Solana staking protocols (sol_staking, marinadefinance, renzo, solayer, jito, jupiter, fragmetric), which range from 2 to 30 days. Delays are configured in seconds server-side and rounded up to whole days.
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).
Build DeFi Claim Transaction
Build the unsigned claim calldata for one of four claim types — see DefiClaimType for which companion fields each type requires and which protocol constraints apply (e.g. REWARD_PROTOCOL is not supported for LP protocols; PancakeSwap V3 farming uses LP_FEE, not REWARD_INVESTMENT). Returns an ordered dataList (typically [CLAIM]).
binanceChainId resolution rules:
-
Normally resolved from
investmentId; the call always executes on that chain. -
For claim types other than
REWARD_PROTOCOL, any client-suppliedbinanceChainIdis silently ignored — passing a different chainId will not redirect the claim. -
Exception:
REWARD_PROTOCOLwith noinvestmentId— the client MUST passbinanceChainId(it is the only chain signal).
tokenAddressList optionally narrows the claim scope. Set simulate=true to also receive preview.
Build DeFi Claim Transaction › Authorization
Headers
X-OC-APIKEYAPI Key issued by Binance Web3 API for authentication.
X-OC-TIMESTAMPCurrent UTC time in ISO 8601 format with milliseconds, e.g. 2026-05-11T10:08:57.715Z.
X-OC-SIGNRequest signature (Base64-encoded).
X-OC-RECV-WINDOWAllowed time deviation in milliseconds (default: 5000, max: 60000).
X-OC-NONCEUnique request identifier for anti-replay; falls back to X-OC-SIGN if omitted.
Build DeFi Claim Transaction › Request Body
addressUser wallet address (the signer / sender).
claimTypeClaim routing type. Determines which companion fields are required:
REWARD_PROTOCOL: protocol-level rewards (e.g. Aave incentive, Radiant) — requiresdefiProtocolId+binanceChainIdREWARD_INVESTMENT: per-investment rewards — requiresinvestmentIdLP_FEE: Uniswap V3/V4 LP fees — requiresinvestmentId+nftIdREDEMPTION: redeem principal. RequiresinvestmentId+redemptionIdfor EVM protocols (Lista, Aster, Solv) and for Solana protocols whose redeem mints a withdrawal ticket (renzo,marinadefinanceliquid,jito,solayer,fragmetric,jupiterStake JUP) — theredemptionIdcomes from the position list and is populated once the cooldown ends (unlockTimeReached = true). For Solana native staking (sol_staking) and Jupiter jupSOL (whose claim handle surfaces undersol_staking), substitutestakeAccountsforredemptionId(no redemption record).
Protocol constraints — not every claimType is valid for every protocol; an invalid
combination is rejected (40453 or 40454):
REWARD_PROTOCOLis not supported for LP (liquidity-pool) protocols in this release.REWARD_INVESTMENTis not supported for PancakeSwap V3 farming positions; useLP_FEEto claim farming incentives there.LP_FEEapplies only to concentrated-liquidity (V3/V4) LP positions, including Solana CLMM (raydium3,orca3).REDEMPTIONapplies only to protocols with a redemption / lock-up flow: EVM Lista / Aster / Solv, and on Solanasol_staking,renzo,marinadefinance,jito,solayer,fragmetric, andjupiterstake surfaces.- Some Solana protocols auto-compound rewards into the position value (e.g.
sol_staking,marinadefinance,jito); theirclaimReward(REWARD_PROTOCOL/REWARD_INVESTMENT) is not supported and is rejected with40481.
For a given position, prefer the claimTypes / redemptionId / userStakeAccount fields
returned by the position list to decide the claim path — see Integration Flow.
binanceChainIdBinance chain ID. For REWARD_PROTOCOL (which does not use investmentId) this is the only chain signal and is required. For all other claim types the chain is resolved from investmentId and any client-supplied value is silently ignored — the call still executes on the investmentId chain, so a different chainId does not redirect the claim.
investmentIdRequired for REWARD_INVESTMENT, LP_FEE, and REDEMPTION. Not used for REWARD_PROTOCOL (which keys off defiProtocolId).
defiProtocolIdRequired for REWARD_PROTOCOL (e.g. pancakeswap3).
nftIdRequired for LP_FEE. The NFT token ID as a decimal string (e.g. "7225901" or "#7225901"). The # prefix returned by the position list may be passed as-is — the service strips it automatically.
redemptionIdRequired for REDEMPTION on EVM and on the Solana protocols whose redeem mints a withdrawal ticket / record (renzo, marinadefinance liquid, jito, solayer, fragmetric, jupiter Stake JUP). Maps to the redemptionId returned in the position list (the on-line position index), and is only populated once the cooldown ends (unlockTimeReached = true; null while cooling down). For Solana native staking (sol_staking) and Jupiter jupSOL (jupiter stake surfaces) under REDEMPTION, pass stakeAccounts instead — these have no redemption record, so redemptionId becomes optional when stakeAccounts is supplied.
stakeAccountsBase58 stake account address(es) — the account(s) to withdraw after the deactivation cooldown. Required for REDEMPTION on Solana native staking (sol_staking) and Jupiter jupSOL (claimed under sol_staking in the position list; pass the sol_staking or the jupSOL investmentId + this address). Makes redemptionId optional for these (no redemption record). Do not pass stakeAccounts for Stake JUP (jupiter stake_jup) — it uses redemptionId, and passing stakeAccounts builds a transaction that fails on-chain. Passing stakeAccounts for any other protocol (EVM, LP, or other Solana protocols whose redeem produces a ticket — those use redemptionId) is also a parameter error. This release supports exactly one element (length at most 1).
tokenAddressListOptional token address filter to narrow the claim scope.
simulateWhen true, the response also includes a preview object. Default false. If the simulated transaction reverts, the request returns 40485 for a specific classified revert reason or 40484 for any other revert (see Error Codes).
Build DeFi Claim Transaction › Responses
Claim transaction calldata returned successfully.
codeBusiness status code. 0 indicates success.
msgHuman-readable status message.
Unified response of the five build endpoints (deposit / redeem / lp-add / lp-remove / claim). dataList is ordered: APPROVE items come first, the main action follows — sign and broadcast each item in order. preview is non-null only when the request set simulate=true. redeemDelayDays is populated only by /transaction/redeem.
Ordered unsigned transactions; APPROVE precedes the main action.
callDataTypeAction kind of this item:
APPROVE— ERC-20 approval (EVM only), must be signed/broadcast and confirmed before the main action. Never returned for Solana.DEPOSIT/REDEEM/LP_ADD/LP_REMOVE/CLAIM— the main action.LP_ADD/LP_REMOVEare the LP add / remove legs (the same build path as deposit / redeem for liquidity-pool investments; the kind reflects the on-chain action, not the entry endpoint).
fromUser wallet address (the signer / sender). EIP-55 checksummed on EVM chains — normalize with to_checksum_address before signing if your signer requires it. On Solana this is the base58 fee-payer public key.
toTarget contract address. EIP-55 checksummed on EVM chains, same format as from. Non-null on EVM; null on Solana (Solana expresses the target program inside the serialized transaction in data, not here).
valueNative-asset value as a 0x-prefixed hex string. Non-null on EVM; null on Solana.
dataSerialized transaction data. On EVM chains a 0x-prefixed hex calldata string. On Solana a base64-serialized wire transaction (compute-budget fee injected server-side for every action).
gasLimitSuggested gas limit on EVM (decimal string, gas units). On Solana it is the estimated compute-unit consumption; the transaction's actual compute-unit limit set on-chain is roughly 1.2× this value. null when estimation fails.
gasPriceLegacy gas price on EVM, decimal string. null on EIP-1559 chains such as BSC (use maxFeePerGas / maxPriorityFeePerGas instead). On Solana this is the per-compute-unit fee in micro-lamports (decimal string).
maxPriorityFeePerGasEIP-1559 priority fee in wei (decimal string). null on non-1559 EVM chains and on Solana.
maxFeePerGasEIP-1559 max fee per gas in wei (decimal string). null on non-1559 EVM chains and on Solana.
Simulation result returned by the build endpoints when simulate=true. Includes whether the action is expected to succeed, the projected balance change, the estimated network fee, and — for lending protocols — the health-factor change. balanceChange, feeAndContract, healthFactor, and warnings each have a fixed structure (see below); the number of entries and some inner values vary by protocol.
successWhether the simulated transaction is expected to succeed on-chain.
Signed token balance deltas from the simulation. Each entry has tokenType, tokenSymbol, tokenAddress, tokenDecimals, amount (positive = received, negative = spent), valueUsd, and an optional tokenId.
tokenTypeToken role / type tag from the simulation.
tokenSymbolToken symbol.
tokenAddressToken contract address.
tokenDecimalsToken decimals.
amountSigned delta (positive = received, negative = spent).
valueUsdUSD value of the delta.
tokenIdOptional NFT / position token ID when applicable.
Estimated network fee and the contract the action interacts with. Contains estimatedNetworkFee and interactWith.
Estimated gas cost for the action. Fields may be null when estimation is not available (e.g. a failed simulation).
amountEstimated gas fee in the fee-paying native coin (human-readable). On Solana this may be null even when fee estimation succeeded — use valueUsd as the reliable figure when amount is absent.
tokenSymbolSymbol of the fee-paying token (native coin, e.g. BNB).
valueUsdUSD value of the estimated fee.
rentFeeAmountSolana storage / rent fee portion (human-readable). null on EVM chains; only populated on Solana when the action creates an account (e.g. a first-time ATA).
rentFeeValueUsdUSD value of the Solana rent fee. null on EVM chains; Solana-only.
priorityFeeAmountSolana priority fee portion (human-readable). null on EVM chains; Solana-only.
The contract the action interacts with.
addressTarget contract address.
Lending health-factor change. Contains before / after values for lending protocols (e.g. Aave / Venus); null for non-lending protocols or when health factor is unavailable.
beforeHealth factor before this transaction. Null when unavailable.
afterHealth factor after this transaction. Null when unavailable.
Non-blocking risk warnings. Empty array when there are no warnings.
codeWarning code. Known values: HEALTH_FACTOR_WARNING, HEALTH_FACTOR_DANGER, HIGH_SLIPPAGE, DELAYED_REDEMPTION, LP_OUT_OF_RANGE. Branch on code for control flow; display message as-is.
levelSeverity level — INFO / WARN / DANGER.
messageHuman-readable warning text.
errorMessageError message when the simulated transaction is expected to fail.
redeemDelayDaysRedeem waiting period as a [min, max] day pair of decimal strings. Populated only by /transaction/redeem; null on the other build endpoints or when unavailable. Interpretation: [] (empty) = instant, no waiting period; ["7","7"] = fixed 7 days; ["7","10"] = 7–10 days. The wait starts after the redeem transaction is confirmed on-chain. Protocols with a waiting period include Lista (helio), Aster (astherus), and the Solana staking protocols (sol_staking, marinadefinance, renzo, solayer, jito, jupiter, fragmetric), which range from 2 to 30 days. Delays are configured in seconds server-side and rounded up to whole days.
timestampServer timestamp in milliseconds.
successWhether the request succeeded (mirrors code == 0).