关于 sub-account
通过需认证的 API 接口管理 Binance 子账户的 Skill,面向主账户运营者,支持账户管理、资产转移及账户和交易查询,并以 JSON 返回结果。
主要功能
- 01创建虚拟子账户
- 02启用 Futures 和 Options
- 03查询子账户资产与状态
- 04在账户间转移资产
- 05管理 API 密钥 IP 限制
- 06查看持仓和转账历史
适用场景
- 01查看子账户余额与持仓
- 02在主账户和子账户间转移资产
- 03将子账户 API 密钥限制为受信任 IP
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ binance/ binance-skills-hub --skill sub-account安装后在 Claude Code 中输入/sub-account确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CHANGELOG.mdLICENSE.mdreferences/authentication.md详细介绍
Binance 子账户技能
使用经过身份验证的 API 端点在 Binance 上发起子账户请求。某些端点需要 API 密钥和密钥。以 JSON 格式返回结果。
快速参考
| 端点 | 描述 | 必填 | 可选 | 身份验证 |
|---|---|---|---|---|
/sapi/v1/sub-account/virtualSubAccount (POST) | 创建虚拟子账户(适用于主账户)(USER_DATA) | subAccountString | recvWindow | 是 |
/sapi/v1/sub-account/futures/enable (POST) | 为子账户启用 Futures(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/sub-account/eoptions/enable (POST) | 为子账户启用 Options(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v2/sub-account/futures/positionRisk (GET) | 获取子账户的 Futures 持仓风险 V2(适用于主账户)(USER_DATA) | email, futuresType | recvWindow | 是 |
/sapi/v1/sub-account/futures/positionRisk (GET) | 获取子账户的 Futures 持仓风险(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/sub-account/status (GET) | 获取子账户的 Margin 或 Futures 状态(适用于主账户)(USER_DATA) | None | email, recvWindow | 是 |
/sapi/v1/sub-account/list (GET) | 查询子账户列表(适用于主账户)(USER_DATA) | None | email, isFreeze, page, limit, recvWindow | 是 |
/sapi/v1/sub-account/transaction-statistics (GET) | 查询子账户交易统计信息(适用于主账户)(USER_DATA) | None | email, recvWindow | 是 |
/sapi/v2/sub-account/subAccountApi/ipRestriction (POST) | 为子账户 API 密钥添加 IP 限制(适用于主账户)(USER_DATA) | email, subAccountApiKey, status | ipAddress, recvWindow | 是 |
/sapi/v1/sub-account/subAccountApi/ipRestriction/ipList (DELETE) | 删除子账户 API 密钥的 IP 列表(适用于主账户)(USER_DATA) | email, subAccountApiKey, ipAddress | recvWindow | 是 |
/sapi/v1/sub-account/subAccountApi/ipRestriction (GET) | 获取子账户 API 密钥的 IP 限制(适用于主账户)(USER_DATA) | email, subAccountApiKey | recvWindow | 是 |
/sapi/v1/sub-account/futures/transfer (POST) | 子账户 Futures 划转(适用于主账户)(USER_DATA) | email, asset, amount, type | recvWindow | 是 |
/sapi/v2/sub-account/futures/account (GET) | 获取子账户 Futures 账户详情 V2(适用于主账户)(USER_DATA) | email, futuresType | recvWindow | 是 |
/sapi/v1/sub-account/futures/account (GET) | 获取子账户 Futures 账户详情(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/sub-account/margin/account (GET) | 获取子账户 Margin 账户详情(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/sub-account/futures/move-position (GET) | 获取子账户持仓划转历史记录(适用于主账户)(USER_DATA) | symbol, page, row | startTime, endTime, recvWindow | 是 |
/sapi/v1/sub-account/futures/move-position (POST) | 划转子账户持仓(适用于主账户)(USER_DATA) | fromUserEmail, toUserEmail, productType, orderArgs | recvWindow | 是 |
/sapi/v1/capital/deposit/subAddress (GET) | 获取子账户充值地址(适用于主账户)(USER_DATA) | email, coin | network, amount, recvWindow | 是 |
/sapi/v1/capital/deposit/subHisrec (GET) | 获取子账户充值历史记录(适用于主账户)(USER_DATA) | coin, status, startTime, endTime, limit, offset, recvWindow, txId | 是 | |
/sapi/v2/sub-account/futures/accountSummary (GET) | 获取子账户 Futures 账户概要 V2(适用于主账户)(USER_DATA) | futuresType | page, limit, recvWindow | 是 |
/sapi/v1/sub-account/futures/accountSummary (GET) | 获取子账户 Futures 账户概要(适用于主账户)(USER_DATA) | page, limit | recvWindow | 是 |
/sapi/v1/sub-account/margin/accountSummary (GET) | 获取子账户 Margin 账户概要(适用于主账户)(USER_DATA) | None | recvWindow | 是 |
/sapi/v1/sub-account/margin/transfer (POST) | 子账户 Margin 划转(适用于主账户)(USER_DATA) | email, asset, amount, type | recvWindow | 是 |
/sapi/v3/sub-account/assets (GET) | 查询子账户资产(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v4/sub-account/assets (GET) | 查询子账户资产(适用于主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/sub-account/futures/internalTransfer (GET) | 查询子账户 Futures 资产划转历史记录(适用于主账户)(USER_DATA) | email, futuresType | startTime, endTime, page, limit, recvWindow | 是 |
/sapi/v1/sub-account/futures/internalTransfer (POST) | 子账户 Futures 资产划转(适用于主账户)(USER_DATA) | fromEmail, toEmail, futuresType, asset, amount | recvWindow | 是 |
/sapi/v1/sub-account/sub/transfer/history (GET) | 查询子账户现货资产划转历史记录(适用于主账户)(USER_DATA) | None | fromEmail, toEmail, startTime, endTime, page, limit, recvWindow | 是 |
/sapi/v1/sub-account/spotSummary (GET) | 查询子账户现货资产概要(适用于主账户)(USER_DATA) | None | email, page, size, recvWindow | 是 |
/sapi/v1/sub-account/universalTransfer (GET) | 查询通用划转历史记录(适用于主账户)(USER_DATA) | None | fromEmail, toEmail, clientTranId, startTime, endTime, page, limit, recvWindow | 是 |
/sapi/v1/sub-account/universalTransfer (POST) | 通用划转(适用于主账户)(USER_DATA) | fromAccountType, toAccountType, asset, amount | fromEmail, toEmail, clientTranId, symbol, recvWindow | 是 |
/sapi/v1/sub-account/transfer/subUserHistory (GET) | 子账户划转历史记录(适用于子账户)(USER_DATA) | None | asset, type, startTime, endTime, limit, returnFailHistory, recvWindow | 是 |
/sapi/v1/sub-account/transfer/subToMaster (POST) | 划转至主账户(适用于子账户)(USER_DATA) | asset, amount | recvWindow | 是 |
/sapi/v1/sub-account/transfer/subToSub (POST) | 划转至同一主账户下的子账户(适用于子账户)(USER_DATA) | toEmail, asset, amount | recvWindow | 是 |
/sapi/v1/managed-subaccount/deposit (POST) | 向托管子账户充值资产(适用于投资者主账户)(USER_DATA) | toEmail, asset, amount | recvWindow | 是 |
/sapi/v1/managed-subaccount/deposit/address (GET) | 获取托管子账户充值地址(适用于投资者主账户)(USER_DATA) | email, coin | network, amount, recvWindow | 是 |
/sapi/v1/managed-subaccount/queryTransLogForInvestor (GET) | 查询托管子账户划转日志(适用于投资者主账户)(USER_DATA) | email, startTime, endTime, page, limit | transfers, transferFunctionAccountType | 是 |
/sapi/v1/managed-subaccount/queryTransLogForTradeParent (GET) | 查询托管子账户划转日志(适用于交易团队主账户)(USER_DATA) | email, startTime, endTime, page, limit | transfers, transferFunctionAccountType | 是 |
/sapi/v1/managed-subaccount/query-trans-log (GET) | 查询托管子账户划转日志(适用于交易团队子账户)(USER_DATA) | startTime, endTime, page, limit | transfers, transferFunctionAccountType, recvWindow | 是 |
/sapi/v1/managed-subaccount/asset (GET) | 查询托管子账户资产详情(适用于投资者主账户)(USER_DATA) | recvWindow | 是 | |
/sapi/v1/managed-subaccount/fetch-future-asset (GET) | 查询托管子账户 Futures 资产详情(适用于投资者主账户)(USER_DATA) | accountType | 是 | |
/sapi/v1/managed-subaccount/info (GET) | 查询托管子账户列表(适用于投资者)(USER_DATA) | None | email, page, limit, recvWindow | 是 |
/sapi/v1/managed-subaccount/marginAsset (GET) | 查询托管子账户 Margin 资产详情(适用于投资者主账户)(USER_DATA) | accountType | 是 | |
/sapi/v1/managed-subaccount/accountSnapshot (GET) | 查询托管子账户快照(适用于投资者主账户)(USER_DATA) | email, type | startTime, endTime, limit, recvWindow | 是 |
/sapi/v1/managed-subaccount/withdraw (POST) | 从托管子账户提取资产(适用于投资者主账户)(USER_DATA) | fromEmail, asset, amount | transferDate, recvWindow | 是 |
参数
通用参数
- subAccountString:请输入一个字符串。我们将使用该字符串为你创建一个虚拟邮箱,用于注册
- recvWindow:(例如,5000)
- email:子账户邮箱(例如,[email protected])
- futuresType:1:USDT 本位合约,2:币本位合约
- email:受管理的子账户邮箱
- isFreeze:true 或 false
- page:默认值:1(例如,1)
- limit:默认值:1,最大值:200(例如,1)
- subAccountApiKey:
- status:IP 限制状态。1 = 不限制 IP。2 = 仅允许受信任的 IP 访问。
- ipAddress:批量添加静态 IP,多个 IP 以逗号分隔。
- ipAddress:要删除的 IP。可批量添加,多个 IP 以逗号分隔
- asset:
- amount:(例如,1.0)
- type:1:从子账户的现货账户转入杠杆账户;2:从子账户的杠杆账户转入其现货账户
- symbol:
- startTime:(例如,1623319461670)
- endTime:(例如,1641782889000)
- page:页码
- row:
- coin:
- network:可在
GET /sapi/v1/capital/deposit/address中查看网络 - amount:(例如,1.0)
- coin:
- status:0(0:处理中,6:已入账但不可提现,7:错误的充值,8:等待用户确认,1:成功)
- offset:默认值:0
- txId:(例如,1)
- limit:数量限制(最大值:500)
- fromUserEmail:
- toUserEmail:
- productType:仅支持 UM
- orderArgs:最多支持 10 个仓位。输入请求参数时,orderArgs.symbol 应为 STRING,orderArgs.quantity 应为 BIGDECIMAL,orderArgs.positionSide 应为 STRING;positionSide 支持 BOTH、LONG 和 SHORT。每个条目的格式应为 orderArgs[0].symbol=BTCUSDT,orderArgs[0].quantity=0.001,orderArgs[0].positionSide=BOTH。请求参数数组示例:orderArgs[0].symbol=BTCUSDT orderArgs[0].quantity=0.001 orderArgs[0].positionSide=BOTH orderArgs[1].symbol=ETHUSDT orderArgs[1].quantity=0.01 orderArgs[1].positionSide=BOTH
- fromEmail:
- toEmail:
- size:默认值 10,最大值 20(例如,10)
- clientTranId:(例如,1)
- fromEmail:
- toEmail:
- asset:如果未发送,将返回所有资产的结果
- type:1:转入,2:转出
- returnFailHistory:默认值为
False,返回 PROCESS 和 SUCCESS 状态的历史记录;如果为True,则返回 PROCESS、SUCCESS 和 FAILURE 状态的历史记录 - fromAccountType:"SPOT"、"USDT_FUTURE"、"COIN_FUTURE"、"MARGIN"(全仓)、"ISOLATED_MARGIN"
- toAccountType:"SPOT"、"USDT_FUTURE"、"COIN_FUTURE"、"MARGIN"(全仓)、"ISOLATED_MARGIN"
- symbol:仅支持 ISOLATED_MARGIN 类型
- startTime:开始时间(例如,1623319461670)
- endTime:结束时间(开始时间与结束时间的间隔不得超过半年)(例如,1641782889000)
- transfers:转账方向(FROM/TO)
- transferFunctionAccountType:转账功能账户类型(SPOT/MARGIN/ISOLATED_MARGIN/USDT_FUTURE/COIN_FUTURE)
- accountType:不输入或输入 "MARGIN" 可获取全仓杠杆账户详情。输入 "ISOLATED_MARGIN" 可获取逐仓杠杆账户详情。
- type:"SPOT"、"MARGIN"(全仓)、"FUTURES"(UM)
- transferDate:提现会在转账日期(UTC0)自动进行。如果未选择日期,则会立即提现
身份验证
对于需要身份验证的端点,你需要提供 Binance API 凭据。 所需凭据:
- apiKey:你的 Binance API 密钥(用于请求头)
- secretKey:你的 Binance API 密钥(用于签名)
基础 URL:
安全
共享凭据
用户可以通过多种方式提供 Binance API 凭据。Agent 会尝试通过前两种方式自动获取凭据;用户也可以明确告知 Agent 凭据已设置或已存储在 .env 文件中,此时 Agent 应重新读取该文件。使用前两种方式时,Agent 也可以在无需用户确认的情况下发出 HTTP 请求。
- 环境变量
仅搜索以下特定变量(绝不转储完整环境):
已授权的环境变量
- 主网:
BINANCE_API_KEY和BINANCE_SECRET_KEY
在单次 exec 调用中读取并使用,以免原始密钥进入 Agent 的上下文:
KEY="$BINANCE_API_KEY"
SECRET="$BINANCE_SECRET_KEY"
response=$(curl -s -X GET "$URL" \
-H "X-MBX-APIKEY: $KEY" \
--data-urlencode "param1=value1")
echo "$response"
必须在 OpenClaw 启动前设置环境变量。它们会在进程启动时继承,无法注入正在运行的实例。如果需要在不重启的情况下添加或更新凭据,请使用密钥文件(见选项 2)。
- 密钥文件(.env)
检查 ~/.openclaw/secrets.env、~/.env 或工作区中的 .env 文件。使用 grep 读取单个密钥,绝不要加载整个文件:
# Try all credential locations in order
API_KEY=$(grep '^BINANCE_API_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)
SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)
# Fallback: search .env in known directories (KEY=VALUE then raw line format)
for dir in ~/.openclaw ~; do
[ -n "$API_KEY" ] && break
env_file="$dir/.env"
[ -f "$env_file" ] || continue
# Read first two lines
line1=$(sed -n '1p' "$env_file")
line2=$(sed -n '2p' "$env_file")
# Check if lines contain '=' indicating KEY=VALUE format
if [[ "$line1" == *=* && "$line2" == *=* ]]; then
API_KEY=$(grep '^BINANCE_API_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
else
# Treat lines as raw values
API_KEY="$line1"
SECRET_KEY="$line2"
fi
done
此文件可随时更新,无需重启 OpenClaw;每次调用时都会重新读取密钥。用户可以告知你变量现已设置或已存储在 .env 文件中,此时你应重新读取该文件。
- 内联文件
发送内容符合以下格式的文件:
abc123...xyz
secret123...key
- 绝不要运行
printenv、env、export或不带特定变量名的set - 绝不要在
env文件中运行grep,除非使用特定密钥锚定(^VARNAME=) - 绝不要将密钥文件加载到 shell 环境中(
source .env或. .env) - 仅读取当前任务明确需要的凭据
- 绝不要在输出或回复中回显或记录原始凭据
- 如果
TOOLS.md中包含真实凭据,绝不要将其提交到版本控制中——请将其添加到.gitignore
绝不泄露 API 密钥和密钥文件
绝不要泄露 API 密钥和密钥文件的位置。
绝不要将 API 密钥和密钥发送到主网和测试网以外的任何网站。
绝不显示完整密钥
向用户展示凭据时:
- API 密钥: 显示前 5 个字符和后 4 个字符:
su1Qc...8akf - 密钥: 始终遮蔽,仅显示最后 5 个字符:
***...aws1
用户询问凭据时的回复示例: 账户:main API 密钥:su1Qc...8akf 密钥:***...aws1
列出账户
列出账户时,仅显示名称和环境,绝不显示密钥: Binance 账户:
- main(主网)
- futures-keys(主网)
主网交易
执行主网交易时,务必先向用户确认,要求他们输入“CONFIRM”后再继续。
Binance 账户
main
- API 密钥:your_mainnet_api_key
- 密钥:your_mainnet_secret
TOOLS.md 结构
## Binance Accounts
### main
- API Key: abc123...xyz
- Secret: secret123...key
- Description: Primary trading account
### futures-keys
- API Key: futures789...def
- Secret: futuressecret...uvw
- Description: Futures trading account
Agent 行为
- 请求凭据:遮蔽密钥(仅显示最后 5 个字符)
- 列出账户:显示名称和环境,绝不显示密钥
- 选择账户:如有歧义则询问,默认使用 main
- 执行主网交易时,先向用户确认,要求他们输入“CONFIRM”后再继续
- 新凭据:提示用户提供名称、环境和签名模式
添加新账户
用户通过内联文件或消息提供新凭据时:
- 询问账户名称
- 将凭据存储在
TOOLS.md中,并确认时遮蔽密钥
签名请求
对于需要签名的交易端点:
- 先检测密钥类型,在签名之前检查密钥格式。
- 使用所有参数(包括时间戳,Unix 毫秒)构建查询字符串。
- 根据 RFC 3986 使用 UTF-8 对参数进行百分比编码。
- 根据账户配置,使用密钥通过 HMAC SHA256、RSA 或 Ed25519 对查询字符串签名。
- 将签名附加到查询字符串。
- 添加
X-MBX-APIKEY标头。
否则,不要执行步骤 4–6。
User Agent 请求头
添加 User-Agent 请求头,其值为:binance-sub-account/1.1.0 (Skill)
实现详情请参阅 references/authentication.md。