binance-spot-openapi-skill
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBinance Spot API Skill
Binance Spot API 技能
Use this skill to run Binance Spot REST operations through + OpenAPI.
uxcReuse the skill for shared execution, auth, and error-handling guidance.
uxc使用此技能通过 + OpenAPI执行Binance现货REST操作。
uxc复用技能以获取共享的执行、认证和错误处理指引。
uxcPrerequisites
前置条件
- is installed and available in
uxc.PATH - Network access to:
https://api.binance.comhttps://testnet.binance.vision
- Access to the curated OpenAPI schema URL:
https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json
- 已安装且可在
uxc中访问。PATH - 可访问以下网络地址:
https://api.binance.comhttps://testnet.binance.vision
- 可访问精选OpenAPI schema的URL:
https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json
Scope
适用范围
This skill covers curated Binance Spot REST endpoints for:
- public market reads
- signed account reads
- signed order queries
- test orders
- order placement and cancellation
This skill does not cover:
- OCO, OTO, OTOCO, OPO, OPOCO, or other endpoints
orderList/* order/cancelReplaceorder/amend/*historicalTradesuiKlinesticker/tradingDay- SOR endpoints
- Wallet, Margin, Earn, or endpoints
/sapi/* - RSA request signing
https://demo-api.binance.com
此技能涵盖精选的Binance现货REST端点,用于:
- 公开市场数据读取
- 签名账户数据读取
- 签名订单查询
- 测试订单
- 订单下单与取消
此技能不涵盖:
- OCO、OTO、OTOCO、OPO、OPOCO或其他端点
orderList/* order/cancelReplaceorder/amend/*historicalTradesuiKlinesticker/tradingDay- SOR端点
- 钱包、杠杆、理财或端点
/sapi/* - RSA请求签名
https://demo-api.binance.com
Authentication
认证
Public market endpoints do not require credentials.
Signed Spot endpoints require:
- field for
api_keyX-MBX-APIKEY - field for Ed25519 PKCS#8 PEM signing, or
private_keyfor deprecated HMAC SHA256 signingsecret_key
公开市场端点无需凭证。
签名现货端点需要:
- 字段,用于
api_keyX-MBX-APIKEY - 字段,用于Ed25519 PKCS#8 PEM签名,或
private_key用于已弃用的HMAC SHA256签名secret_key
Testnet API Key Setup
测试网API密钥设置
Binance Spot testnet uses a separate host and separate API key records from mainnet:
- base URL:
https://testnet.binance.vision - testnet API keys do not work on mainnet
- mainnet API keys do not work on testnet
There are two practical testnet flows:
-
(recommended by Binance)
Ed25519- Generate an Ed25519 keypair locally.
- Register the public key in the Spot testnet API management UI.
- After registration, Binance shows a distinct for that Ed25519 key record.
API key - Use that displayed in
API key, and use the matching private key PEM for signing.X-MBX-APIKEY
-
(legacy compatibility)
HMAC- Create an HMAC key in the Spot testnet API management UI.
- Binance shows both and
API key.Secret key - Use in
API key, and useX-MBX-APIKEYfor HMAC SHA256 signing.Secret key
Important:
- The Ed25519 public key you upload is not the .
API key - Each Binance key record has its own .
API key - Do not mix an HMAC with an Ed25519 private key, or an Ed25519
API keywith an HMAC secret.API key - If you do, Binance returns
-1022 Signature for this request is not valid.
Binance现货测试网使用独立的主机和API密钥记录,与主网不互通:
- 基础URL:
https://testnet.binance.vision - 测试网API密钥无法在主网使用
- 主网API密钥无法在测试网使用
有两种实用的测试网流程:
-
(Binance推荐)
Ed25519- 本地生成Ed25519密钥对。
- 在现货测试网API管理UI中注册公钥。
- 注册后,Binance会为该Ed25519密钥记录显示一个唯一的。
API key - 在中使用该显示的
X-MBX-APIKEY,并使用匹配的私钥PEM进行签名。API key
-
(遗留兼容性)
HMAC- 在现货测试网API管理UI中创建HMAC密钥。
- Binance会显示和
API key。Secret key - 在中使用
X-MBX-APIKEY,并使用API key进行HMAC SHA256签名。Secret key
重要提示:
- 你上传的Ed25519公钥不是。
API key - 每个Binance密钥记录都有自己的。
API key - 不要将HMAC的与Ed25519私钥混用,也不要将Ed25519的
API key与HMAC密钥混用。API key - 如果混用,Binance会返回
-1022 Signature for this request is not valid.
Recommended Credential Setup
推荐凭证设置
Binance recommends . Store the private key PEM text in an environment variable, or source it from 1Password.
Ed25519bash
export BINANCE_TESTNET_ED25519_PRIVATE_KEY="$(cat /absolute/path/to/binance_testnet_ed25519_private.pem)"
export BINANCE_MAINNET_ED25519_PRIVATE_KEY="$(cat /absolute/path/to/binance_mainnet_ed25519_private.pem)"Create one credential per environment so mainnet and testnet keys are never mixed:
bash
uxc auth credential set binance-spot-mainnet \
--auth-type api_key \
--field api_key=env:BINANCE_MAINNET_API_KEY \
--field private_key=env:BINANCE_MAINNET_ED25519_PRIVATE_KEY
uxc auth credential set binance-spot-testnet \
--auth-type api_key \
--field api_key=env:BINANCE_TESTNET_API_KEY \
--field private_key=env:BINANCE_TESTNET_ED25519_PRIVATE_KEYAdd one signer binding per environment:
bash
uxc auth binding add \
--id binance-spot-mainnet \
--host api.binance.com \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-mainnet \
--signer-json '{"kind":"ed25519_query_v1","algorithm":"ed25519","signing_field":"private_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"base64","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100
uxc auth binding add \
--id binance-spot-testnet \
--host testnet.binance.vision \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-testnet \
--signer-json '{"kind":"ed25519_query_v1","algorithm":"ed25519","signing_field":"private_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"base64","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100Binance推荐使用。将私钥PEM文本存储在环境变量中,或从1Password获取。
Ed25519bash
export BINANCE_TESTNET_ED25519_PRIVATE_KEY="$(cat /absolute/path/to/binance_testnet_ed25519_private.pem)"
export BINANCE_MAINNET_ED25519_PRIVATE_KEY="$(cat /absolute/path/to/binance_mainnet_ed25519_private.pem)"为每个环境创建一个凭证,确保主网和测试网密钥不会混用:
bash
uxc auth credential set binance-spot-mainnet \
--auth-type api_key \
--field api_key=env:BINANCE_MAINNET_API_KEY \
--field private_key=env:BINANCE_MAINNET_ED25519_PRIVATE_KEY
uxc auth credential set binance-spot-testnet \
--auth-type api_key \
--field api_key=env:BINANCE_TESTNET_API_KEY \
--field private_key=env:BINANCE_TESTNET_ED25519_PRIVATE_KEY为每个环境添加一个签名绑定:
bash
uxc auth binding add \
--id binance-spot-mainnet \
--host api.binance.com \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-mainnet \
--signer-json '{"kind":"ed25519_query_v1","algorithm":"ed25519","signing_field":"private_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"base64","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100
uxc auth binding add \
--id binance-spot-testnet \
--host testnet.binance.vision \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-testnet \
--signer-json '{"kind":"ed25519_query_v1","algorithm":"ed25519","signing_field":"private_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"base64","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100HMAC Fallback
HMAC兼容方案
If you already have legacy HMAC keys, still supports them:
uxcbash
uxc auth credential set binance-spot-mainnet-hmac \
--auth-type api_key \
--field api_key=env:BINANCE_MAINNET_API_KEY \
--field secret_key=env:BINANCE_MAINNET_SECRET_KEY
uxc auth credential set binance-spot-testnet-hmac \
--auth-type api_key \
--field api_key=env:BINANCE_TESTNET_API_KEY \
--field secret_key=env:BINANCE_TESTNET_SECRET_KEY
uxc auth binding add \
--id binance-spot-mainnet-hmac \
--host api.binance.com \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-mainnet-hmac \
--signer-json '{"kind":"hmac_query_v1","algorithm":"hmac_sha256","signing_field":"secret_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"hex","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100
uxc auth binding add \
--id binance-spot-testnet-hmac \
--host testnet.binance.vision \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-testnet-hmac \
--signer-json '{"kind":"hmac_query_v1","algorithm":"hmac_sha256","signing_field":"secret_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"hex","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100如果你已有遗留的HMAC密钥,仍然支持:
uxcbash
uxc auth credential set binance-spot-mainnet-hmac \
--auth-type api_key \
--field api_key=env:BINANCE_MAINNET_API_KEY \
--field secret_key=env:BINANCE_MAINNET_SECRET_KEY
uxc auth credential set binance-spot-testnet-hmac \
--auth-type api_key \
--field api_key=env:BINANCE_TESTNET_API_KEY \
--field secret_key=env:BINANCE_TESTNET_SECRET_KEY
uxc auth binding add \
--id binance-spot-mainnet-hmac \
--host api.binance.com \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-mainnet-hmac \
--signer-json '{"kind":"hmac_query_v1","algorithm":"hmac_sha256","signing_field":"secret_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"hex","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100
uxc auth binding add \
--id binance-spot-testnet-hmac \
--host testnet.binance.vision \
--path-prefix /api/v3 \
--scheme https \
--credential binance-spot-testnet-hmac \
--signer-json '{"kind":"hmac_query_v1","algorithm":"hmac_sha256","signing_field":"secret_key","key_field":"api_key","key_placement":"header","key_name":"X-MBX-APIKEY","signature_param":"signature","signature_encoding":"hex","timestamp_param":"timestamp","timestamp_unit":"milliseconds","canonicalization":{"mode":"preserve_order"}}' \
--priority 100Core Workflow
核心工作流程
-
Use fixed link commands by default:
command -v binance-spot-mainnet-openapi-cli- If missing, create it:
uxc link binance-spot-mainnet-openapi-cli https://api.binance.com --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json command -v binance-spot-testnet-openapi-cli- If missing, create it:
uxc link binance-spot-testnet-openapi-cli https://testnet.binance.vision --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json
-
Discover operations with help-first flow:
binance-spot-mainnet-openapi-cli -hbinance-spot-testnet-openapi-cli -hbinance-spot-testnet-openapi-cli post:/api/v3/order/test -hbinance-spot-testnet-openapi-cli get:/api/v3/account -h
-
Execute reads first:
- public read:
binance-spot-mainnet-openapi-cli get:/api/v3/ticker/price symbol=BTCUSDT - signed read:
binance-spot-testnet-openapi-cli get:/api/v3/account omitZeroBalances=true recvWindow=5000
- public read:
-
Usebefore real writes:
order/testbinance-spot-testnet-openapi-cli post:/api/v3/order/test symbol=BTCUSDT side=BUY type=MARKET quoteOrderQty=100 recvWindow=5000
-
默认使用固定链接命令:
command -v binance-spot-mainnet-openapi-cli- 如果不存在,创建它:
uxc link binance-spot-mainnet-openapi-cli https://api.binance.com --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json command -v binance-spot-testnet-openapi-cli- 如果不存在,创建它:
uxc link binance-spot-testnet-openapi-cli https://testnet.binance.vision --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/binance-spot-openapi-skill/references/binance-spot.openapi.json
-
通过帮助优先流程发现操作:
binance-spot-mainnet-openapi-cli -hbinance-spot-testnet-openapi-cli -hbinance-spot-testnet-openapi-cli post:/api/v3/order/test -hbinance-spot-testnet-openapi-cli get:/api/v3/account -h
-
优先执行读取操作:
- 公开读取:
binance-spot-mainnet-openapi-cli get:/api/v3/ticker/price symbol=BTCUSDT - 签名读取:
binance-spot-testnet-openapi-cli get:/api/v3/account omitZeroBalances=true recvWindow=5000
- 公开读取:
-
在实际写入前使用:
order/testbinance-spot-testnet-openapi-cli post:/api/v3/order/test symbol=BTCUSDT side=BUY type=MARKET quoteOrderQty=100 recvWindow=5000
Operation Groups
操作分组
Public Market
公开市场
get:/api/v3/pingget:/api/v3/timeget:/api/v3/exchangeInfoget:/api/v3/avgPriceget:/api/v3/depthget:/api/v3/klinesget:/api/v3/ticker/24hrget:/api/v3/ticker/priceget:/api/v3/trades
get:/api/v3/pingget:/api/v3/timeget:/api/v3/exchangeInfoget:/api/v3/avgPriceget:/api/v3/depthget:/api/v3/klinesget:/api/v3/ticker/24hrget:/api/v3/ticker/priceget:/api/v3/trades
Signed Reads
签名读取
get:/api/v3/accountget:/api/v3/openOrdersget:/api/v3/orderget:/api/v3/allOrdersget:/api/v3/myTradesget:/api/v3/rateLimit/order
get:/api/v3/accountget:/api/v3/openOrdersget:/api/v3/orderget:/api/v3/allOrdersget:/api/v3/myTradesget:/api/v3/rateLimit/order
Signed Writes
签名写入
post:/api/v3/order/testpost:/api/v3/orderdelete:/api/v3/orderdelete:/api/v3/openOrders
post:/api/v3/order/testpost:/api/v3/orderdelete:/api/v3/orderdelete:/api/v3/openOrders
Guardrails
防护措施
- Keep automation on the JSON output envelope; do not use .
--text - Parse stable fields first: ,
ok,kind,protocol,data.error - Treat as the default validation path before any real order placement.
order/test - Treat all mainnet write operations as high-risk and require explicit user confirmation before execution.
- Prefer testnet for all signed examples unless the user explicitly asks for mainnet.
- Before placing orders, query for symbol filters and
exchangeInfoorticker/pricefor current market context.depth - If Binance returns , call
-1021, then retry with a fresh timestamp and, if needed, a largerget:/api/v3/time.recvWindow - If Binance returns , first verify you are using the
-1022from the same Binance key record as the signing material:API key- Ed25519: displayed + matching private key PEM
API key - HMAC: displayed + matching
API keySecret key
- Ed25519: displayed
- Use on auth bindings.
--path-prefix /api/v3now resolves OpenAPI auth against the final operation URL, so this narrower binding works for signed Spot requests and avoids over-broad host-level matching.uxc - and
timestampare injected by the signer binding; users normally provide business parameters plus optionalsignature.recvWindow - is equivalent to
binance-spot-*-openapi-cli <operation> ....uxc <host> --schema-url <binance_spot_openapi_schema> <operation> ...
- 仅对JSON输出包进行自动化处理;不要使用参数。
--text - 优先解析稳定字段:、
ok、kind、protocol、data。error - 在实际下单前,将作为默认验证流程。
order/test - 将所有主网写入操作视为高风险操作,执行前需用户明确确认。
- 除非用户明确要求主网,否则所有签名示例优先使用测试网。
- 下单前,查询获取交易对限制,查询
exchangeInfo或ticker/price获取当前市场信息。depth - 如果Binance返回,调用
-1021,然后使用新的时间戳重试,必要时增大get:/api/v3/time。recvWindow - 如果Binance返回,首先验证你使用的
-1022与签名材料来自同一Binance密钥记录:API key- Ed25519:显示的+ 匹配的私钥PEM
API key - HMAC:显示的+ 匹配的
API keySecret key
- Ed25519:显示的
- 在认证绑定上使用。
--path-prefix /api/v3现在会针对最终操作URL解析OpenAPI认证,因此这个更窄的绑定适用于签名现货请求,避免过度宽泛的主机级匹配。uxc - 和
timestamp由签名绑定自动注入;用户通常只需提供业务参数以及可选的signature。recvWindow - 等价于
binance-spot-*-openapi-cli <operation> ...。uxc <host> --schema-url <binance_spot_openapi_schema> <operation> ...
References
参考资料
- Usage patterns:
references/usage-patterns.md - Curated OpenAPI schema:
references/binance-spot.openapi.json - Binance Spot skill source material: https://github.com/binance/binance-skills-hub/tree/main/skills/binance/spot
- Official Binance Spot API docs: https://github.com/binance/binance-spot-api-docs
- 使用模式:
references/usage-patterns.md - 精选OpenAPI schema:
references/binance-spot.openapi.json - Binance现货技能源材料:https://github.com/binance/binance-skills-hub/tree/main/skills/binance/spot
- 官方Binance现货API文档:https://github.com/binance/binance-spot-api-docs