币安预测市场 API 的接入门槛不在写代码,而在两件事:你是否在支持的地区持有币安钱包,以及你是否知道这个 API 属于 Web3 钱包产品线而非币安交易所的现货/合约 API。它的授权链路比普通币安 API Key 多一层:除了 API Key 的 Prediction Trading 权限,下单和资金划转还需要在币安 App 里开启 SAS(安全自动签名),否则接口会返回 -31003。
下面按授权、下单、结算核验三个阶段说清楚。如果你无法在币安 App 里找到"预测市场"入口,说明该功能在当前地区或账户状态下不可用,后续步骤不需要继续尝试。
授权:三层缺一不可
第一层是预测账户和 SAS。 在币安 App 中进入预测市场,完成预测账户创建。然后到【资产】→【预测】→【设置】,开启安全自动签名(Secure Auto-Signing)。SAS 的作用是让 API 发起的下单请求在链上层面获得授权,没有它,place order 和 transfer/inbound 这类端点会直接拒绝。
第二层是 API Key 权限。 在币安网页端【账户】→【API 管理】创建 Key,在 API Restrictions 中勾选 Prediction Trading。这一步是常规操作,但容易漏掉的是:预测市场 API 走的是 /sapi/v1/w3w/wallet/prediction/ 路径,和现货 API 的 /api/v3/ 是两套体系,不要用现货的签名示例去套预测市场的端点。
第三层是 SAS 授权的实际触发时机。 查行情、查持仓这类只读接口只需要 API Key 签名;但 place order、batch-cancel、transfer/inbound 需要 SAS 授权。如果你在测试时发现只读接口通了、下单报错,优先检查 SAS 是否开启,而不是去翻签名算法。
下单与结算:quoteId 是核心,别跳过
预测市场的下单流程是先报价、再下单,不能直接提交订单。GET /sapi/v1/w3w/wallet/prediction/trade/get-quote 返回一个 quoteId,然后 POST .../trade/place 时把这个 quoteId 带上。市价单的 timeInForce 必须用 FOK,限价单用 GTC,不要自己拼 LIMIT_GTC 这种组合值,会报参数错误。
报价阶段有一个容易踩的坑:amountIn 的单位是 wei(18 位小数)。1 USDT 要写成 1000000000000000000。市价单的最小金额大约是 1.5 USDT,但这个值随市场深度浮动,文档说的是"约",不是固定门槛。限价单不受这个最小额约束。
资金扣款看 fundingSource,不是 accountType。 两个字段容易混淆:accountType 决定的是结算/参考账户(SPOT 或 FUNDING),而 fundingSource 决定实际扣哪个余额(MPC 或 CEX,默认 MPC)。如果你发现扣款账户和预期不一致,检查 fundingSource 而不是 accountType。
结算核验走两条路:轮询或 WebSocket。 订单成交后,GET /sapi/v1/w3w/wallet/prediction/position 返回的 positionStatus 和 canClaim 可以判断持仓是否可领取收益。更及时的方式是订阅 WebSocket 推送,topic 包括 web3_prediction_pm_claim_success、pm_claim_fail、pm_market_close 等。注意推送的 data 字段是字符串化的 JSON,需要二次 JSON.parse,外层信封解析完不能直接当对象用。另外,amount 字段只保留两位小数(向下截断),小于 0.01 显示为 <0.01,不要用这个字段做精确计算,精确数值要回查 REST 接口。
一个已经公开的签名坑
批量撤单端点 batch-cancel 使用带索引的括号参数(如 cancelInfoList[0].orderId)。币安服务端按原始未编码字符串验签,但 Python requests、Java HttpURLConnection、Go net/url、Node url 等主流 HTTP 库会自动把 [ 编码成 %5B、] 编码成 %5D,导致签名不匹配,报 -1022 Signature for this request is not valid。Postman 不受影响是因为它不对 key 做编码。官方给出的绕过方式是使用低层 HTTP API 手工构造请求体:Python 用 http.client,Java 直接写 raw body bytes,Go 用 strings.NewReader 而非 url.Values.Encode()。如果你只是接行情和单笔下单,暂时碰不到这个问题;但做批量撤单或网格类策略时,这是必须处理的。
地区限制是硬门槛
预测市场 API 仅对符合资格的用户开放,实际可用性取决于所在地区的监管和合规要求。币安钱包服务由 Binance Barbados Limited 提供,不受 ADGM 实体或 FSRA 监管。公告明确写了"不适用于香港居民"。如果你无法在 App 中看到预测市场入口,或者在 API 管理里找不到 Prediction Trading 权限选项,说明当前账户不具备资格,翻文档和调签名都不会改变这个结果。
参考资料
- Binance·Frequently Asked Questions on Binance Wallet Prediction Markets API,核查日期:2026-10-22
- Binance·Prediction Market Wallet Events WebSocket API,核查日期:2026-10-22
- Binance·Trade (Prediction Trading REST API),核查日期:2026-10-22
- Binance·Position (Prediction Trading REST API),核查日期:2026-10-22
- Binance·预测市场 API 更新日志,核查日期:2026-10-22
- Binance·Binance Wallet Launches Prediction Markets API,核查日期:2026-10-22



