sub-account について
認証が必要なAPIエンドポイントでBinanceのサブアカウントを管理するスキルです。マスターアカウント運用者向けに、口座管理、資産振替、口座・取引照会を行い、JSONで結果を返します。
主な機能
- 01仮想サブアカウントの作成
- 02Futures・Optionsの有効化
- 03サブアカウント資産・状態の照会
- 04口座間の資産振替
- 05APIキーの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) | サブアカウントの先物取引を有効化(マスターアカウント用)(USER_DATA) | recvWindow | はい | |
/sapi/v1/sub-account/eoptions/enable (POST) | サブアカウントのオプション取引を有効化(マスターアカウント用)(USER_DATA) | recvWindow | はい | |
/sapi/v2/sub-account/futures/positionRisk (GET) | サブアカウントの先物ポジションリスクを取得(V2)(マスターアカウント用)(USER_DATA) | email, futuresType | recvWindow | はい |
/sapi/v1/sub-account/futures/positionRisk (GET) | サブアカウントの先物ポジションリスクを取得(マスターアカウント用)(USER_DATA) | recvWindow | はい | |
/sapi/v1/sub-account/status (GET) | サブアカウントのマージンまたは先物のステータスを取得(マスターアカウント用)(USER_DATA) | なし | email, recvWindow | はい |
/sapi/v1/sub-account/list (GET) | サブアカウント一覧を照会(マスターアカウント用)(USER_DATA) | なし | email, isFreeze, page, limit, recvWindow | はい |
/sapi/v1/sub-account/transaction-statistics (GET) | サブアカウントの取引統計を照会(マスターアカウント用)(USER_DATA) | なし | 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) | サブアカウントの先物資産を振替(マスターアカウント用)(USER_DATA) | email, asset, amount, type | recvWindow | はい |
/sapi/v2/sub-account/futures/account (GET) | サブアカウントの先物アカウント詳細を取得(V2)(マスターアカウント用)(USER_DATA) | email, futuresType | recvWindow | はい |
/sapi/v1/sub-account/futures/account (GET) | サブアカウントの先物アカウント詳細を取得(マスターアカウント用)(USER_DATA) | recvWindow | はい | |
/sapi/v1/sub-account/margin/account (GET) | サブアカウントのマージンアカウント詳細を取得(マスターアカウント用)(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) | サブアカウントの先物アカウント概要を取得(V2)(マスターアカウント用)(USER_DATA) | futuresType | page, limit, recvWindow | はい |
/sapi/v1/sub-account/futures/accountSummary (GET) | サブアカウントの先物アカウント概要を取得(マスターアカウント用)(USER_DATA) | page, limit | recvWindow | はい |
/sapi/v1/sub-account/margin/accountSummary (GET) | サブアカウントのマージンアカウント概要を取得(マスターアカウント用)(USER_DATA) | なし | recvWindow | はい |
/sapi/v1/sub-account/margin/transfer (POST) | サブアカウントのマージン資産を振替(マスターアカウント用)(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) | サブアカウントの先物資産振替履歴を照会(マスターアカウント用)(USER_DATA) | email, futuresType | startTime, endTime, page, limit, recvWindow | はい |
/sapi/v1/sub-account/futures/internalTransfer (POST) | サブアカウントの先物資産を振替(マスターアカウント用)(USER_DATA) | fromEmail, toEmail, futuresType, asset, amount | recvWindow | はい |
/sapi/v1/sub-account/sub/transfer/history (GET) | サブアカウントの現物資産振替履歴を照会(マスターアカウント用)(USER_DATA) | なし | fromEmail, toEmail, startTime, endTime, page, limit, recvWindow | はい |
/sapi/v1/sub-account/spotSummary (GET) | サブアカウントの現物資産概要を照会(マスターアカウント用)(USER_DATA) | なし | email, page, size, recvWindow | はい |
/sapi/v1/sub-account/universalTransfer (GET) | ユニバーサル振替履歴を照会(マスターアカウント用)(USER_DATA) | なし | 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) | なし | 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) | 管理対象サブアカウントの先物資産詳細を照会(投資家マスターアカウント用)(USER_DATA) | accountType | はい | |
/sapi/v1/managed-subaccount/info (GET) | 管理対象サブアカウント一覧を照会(投資家用)(USER_DATA) | なし | email, page, limit, recvWindow | はい |
/sapi/v1/managed-subaccount/marginAsset (GET) | 管理対象サブアカウントのマージン資産詳細を照会(投資家マスターアカウント用)(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 をカンマ区切りで一括入力します。
- ipAddress:削除する 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:
- Mainnet:https://api.binance.com
セキュリティ
認証情報の共有
ユーザーは、さまざまな方法で Binance API の認証情報を提供できます。エージェントは最初の 2 つの方法を使って認証情報を自動的に取得しますが、認証情報を設定済み、または .env ファイルに保存済みであることをエージェントに明示的に伝えることもできます。その場合、エージェントはそのファイルを再読み込みする必要があります。また、エージェントは最初の 2 つの方法では、ユーザーの確認なしで HTTP リクエストを実行できます。
- 環境変数
次の特定の変数のみを検索してください(環境変数全体を出力してはいけません)。
使用を許可された環境変数
- Mainnet:
BINANCE_API_KEYとBINANCE_SECRET_KEY
生のキーがエージェントのコンテキストに入らないよう、単一の exec 呼び出しで読み取って使用してください。
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 で個々のキーを読み取り、ファイル全体を source してはいけません。
# 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を実行してはいけません grepで環境変数ファイルを検索する場合は、特定のキー(^VARNAME=)に必ず絞り込んでください- シークレットファイルをシェル環境に読み込んではいけません(
source .envまたは. .env) - 現在のタスクで明示的に必要な認証情報のみを読み取ってください
- 生の認証情報を出力や返信に表示または記録してはいけません
- 実際の認証情報が含まれている場合は、
TOOLS.mdをバージョン管理にコミットしてはいけません。.gitignoreに追加してください
API キーとシークレットを絶対に開示しない
API キーとシークレットのファイルの場所を絶対に開示してはいけません。
API キーとシークレットを、Mainnet と Testnet 以外のウェブサイトに絶対に送信してはいけません。
シークレット全体を絶対に表示しない
ユーザーに認証情報を表示する場合:
- API Key: 先頭 5 文字と末尾 4 文字を表示します:
su1Qc...8akf - Secret Key: 必ずマスクし、末尾 5 文字のみを表示します:
***...aws1
認証情報を尋ねられた場合の応答例: アカウント:main API Key:su1Qc...8akf Secret:***...aws1
アカウントの一覧表示
アカウントを一覧表示する場合は、名前と環境のみを表示し、キーは絶対に表示してはいけません。 Binance アカウント:
- main(Mainnet)
- futures-keys(Mainnet)
Mainnet でのトランザクション
Mainnet でトランザクションを実行する場合は、続行する前にユーザーに「CONFIRM」と入力するよう求め、必ず確認を取ってください。
Binance アカウント
main
- API Key:your_mainnet_api_key
- Secret: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
エージェントの動作
- 認証情報を求められた場合:シークレットをマスクします(末尾 5 文字のみ表示)
- アカウントの一覧表示:名前と環境を表示し、キーは絶対に表示しません
- アカウントの選択:曖昧な場合は確認し、デフォルトで main を使用します
- Mainnet でトランザクションを実行する場合:続行する前に「CONFIRM」と入力するようユーザーに求め、確認を取ります
- 新しい認証情報:名前、環境、署名モードを尋ねます
新しいアカウントの追加
ユーザーがインラインファイルまたはメッセージで新しい認証情報を提供した場合:
- アカウント名を尋ねます
- マスクした表示を確認として示し、
TOOLS.mdに保存します
リクエストの署名
署名が必要な取引エンドポイントの場合:
- まずキーの種類を検出します。 署名する前にシークレットキーの形式を確認してください。
- タイムスタンプ(Unix ミリ秒)を含むすべてのパラメーターを使用して、クエリ文字列を作成します。
- RFC 3986 に従って、パラメーターを UTF-8 でパーセントエンコードします。
- アカウントの設定に応じて、シークレットキーを使用し、HMAC SHA256、RSA、または Ed25519 でクエリ文字列に署名します。
- クエリ文字列に署名を追加します。
X-MBX-APIKEYヘッダーを含めます。
それ以外の場合は、手順 4~6 を実行しないでください。
ユーザーエージェントヘッダー
次の文字列を含む User-Agent ヘッダーを指定してください:binance-sub-account/1.1.0 (Skill)
実装の詳細については、references/authentication.mdを参照してください。