API接入

幣安API怎麼申請?金鑰簽名一般要怎麼生成

幣安 API 金鑰申請的完整流程:從 KYC 透過到金鑰建立、IP 白名單設定、HMAC-SHA256 簽名生成,附 Python 和 Node.js 程式碼示例。

幣安 API 申請的核心流程是:完成 KYC L2 實名 → 進入 幣安官網 後臺 API 管理頁 → 建立金鑰 → 設定 IP 白名單 → 在程式碼中用 HMAC-SHA256 對引數簽名呼叫。整個過程約 15 分鐘,金鑰建立後立即可用,免費且無每月費用。如果你還沒安裝幣安手機端方便管理 2FA 驗證,可以用 幣安官方APP 安裝安卓版;iPhone 使用者參考 iOS安裝教程。本文按 4 個部分把申請、簽名、報錯處理、限頻策略講清,附 Python 和 Node.js 完整程式碼。

一、申請 API 金鑰的前置條件

1. 完成 KYC L2 實名認證

幣安 API 要求賬號至少完成 L2 中級身份認證(提交身份證 + 人臉識別)。L1 基礎認證的賬號無法建立 API 金鑰。L2 通常 24 小時內稽核完成。

2. 啟用 2FA(必須)

API 金鑰建立過程中需要 2FA 驗證碼確認。如果還沒繫結,先到 安全中心 → 雙重身份驗證 → Google Authenticator 完成繫結。

3. 充值 / 持倉不強制要求

賬戶為零餘額也可以建立 API 金鑰,方便提前準備好金鑰再充值。

二、建立 API 金鑰(5 個步驟)

第一步:進入 API 管理頁

登入 幣安官網 → 右上角頭像 → API 管理。直接 URL 是 binance.com/zh-CN/my/settings/api-management

第二步:選擇金鑰型別

幣安提供兩種 API 金鑰型別:

型別 用途 推薦場景
System generated 系統自動生成金鑰對 90% 使用者首選,簡單穩定
Self-generated 你提供 Ed25519 公鑰 高階使用者,金鑰永不離開本地

新手選 System generated 即可。

第三步:填寫金鑰標籤

給金鑰取個名字(標籤),便於以後管理。例如:

  • python-grid-bot — 網格交易機器人
  • nodejs-monitor — 價格監控指令碼
  • quantitative-strategy-v2 — 量化策略 v2

標籤只對你自己可見,幣安不會基於標籤做任何區分。

第四步:透過 2FA 驗證

輸入:

  • 郵箱 6 位驗證碼
  • 手機簡訊 6 位驗證碼
  • Google Authenticator 6 位動態碼

三個碼都正確後,金鑰生成完成。

第五步:儲存 Secret Key(關鍵)

金鑰頁面會顯示:

  • API Key:永久可見,可以隨時回來查
  • Secret Key只顯示這一次,關閉頁面後再也看不到

必須立即把 Secret Key 複製到本地安全位置(密碼管理器或加密筆記),否則只能刪除重建。

三、配置金鑰許可權和 IP 白名單

金鑰建立後,預設所有許可權關閉,必須手動啟用:

許可權選項

許可權 用途 風險等級
Enable Reading 查詢餘額、訂單、行情
Enable Spot & Margin Trading 現貨 / 槓桿下單
Enable Futures 合約下單
Enable Withdrawals 提幣(必須配合 IP 白名單) 極高
Permits Universal Transfer 資金賬戶互轉

安全建議:只開啟你需要的許可權。讀取行情資料只勾 Enable Reading;做現貨量化只勾 Enable Reading + Enable Spot & Margin Trading永遠不要 在不必要的情況下開啟 Enable Withdrawals。

IP 白名單(強烈推薦)

在金鑰設定頁面填寫允許使用此金鑰的伺服器 IP 地址(最多 5 個)。配置後,只有來自這些 IP 的請求 才能用此金鑰操作賬戶。

如果伺服器是動態 IP(家用寬頻),可以選擇 Unrestricted (Less Secure) 不限制 IP,但許可權會自動降級——Enable Withdrawals 在不限制 IP 的金鑰上無法啟用,這是幣安強制的安全規則。

四、生成簽名呼叫 API

幣安 REST API 中,所有涉及賬戶操作的請求都需要簽名。簽名演算法是 HMAC-SHA256。

簽名規則

簽名內容 = 所有請求引數按 URL 編碼後用 & 拼接的字串

例如查詢賬戶餘額的介面:

GET /api/v3/account
引數: timestamp=1712876400000

簽名內容: timestamp=1712876400000
簽名: HMAC_SHA256(secret_key, "timestamp=1712876400000")

最終請求:

GET /api/v3/account?timestamp=1712876400000&signature=<計算出的簽名>
Header: X-MBX-APIKEY: <你的API Key>

Python 完整示例

import hmac, hashlib, time, requests

API_KEY = "你的API Key"
SECRET_KEY = "你的Secret Key"
BASE_URL = "https://api.binance.com"

def sign(params: dict) -> str:
    query = "&".join([f"{k}={v}" for k, v in params.items()])
    return hmac.new(SECRET_KEY.encode(), query.encode(), hashlib.sha256).hexdigest()

def get_account():
    params = {"timestamp": int(time.time() * 1000)}
    params["signature"] = sign(params)
    headers = {"X-MBX-APIKEY": API_KEY}
    r = requests.get(f"{BASE_URL}/api/v3/account", params=params, headers=headers)
    return r.json()

print(get_account())

Node.js 完整示例

const crypto = require('crypto');
const axios = require('axios');

const API_KEY = '你的API Key';
const SECRET_KEY = '你的Secret Key';
const BASE_URL = 'https://api.binance.com';

function sign(params) {
  const query = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');
  return crypto.createHmac('sha256', SECRET_KEY).update(query).digest('hex');
}

async function getAccount() {
  const params = { timestamp: Date.now() };
  params.signature = sign(params);
  const r = await axios.get(`${BASE_URL}/api/v3/account`, {
    params,
    headers: { 'X-MBX-APIKEY': API_KEY }
  });
  return r.data;
}

getAccount().then(console.log);

五、限頻與權重

幣安 API 用 權重(Weight) 控制呼叫頻率:

限制項 預設值
每分鐘權重上限 6000
每 10 秒下單上限 100 單
每天下單上限 200,000 單
WebSocket 單連線訂閱數上限 1024
單 IP WebSocket 連線數上限 300

常見介面的權重

  • GET /api/v3/ticker/price — 權重 1
  • GET /api/v3/depth — 權重 1-50(取決於 limit 引數)
  • GET /api/v3/account — 權重 10
  • POST /api/v3/order — 權重 1(但佔用下單頻次)

響應頭會返回當前權重

  • X-MBX-USED-WEIGHT-1m:當前 1 分鐘內已用權重
  • X-MBX-ORDER-COUNT-10s:當前 10 秒內已下單次數

超出權重會返回 429 Too Many Requests,嚴重違規會返回 418 並臨時封 IP(2 分鐘到 3 天不等)。

六、常見報錯及處理

報錯: -1022 Signature for this request is not valid

原因:簽名錯誤。最常見的是引數順序不一致,或 URL 編碼方式不對。 處理

  • 確保簽名時用的字串與請求時的查詢字串 完全一致
  • 數字型別的引數不要加引號(如 timestamp=1712876400000 而不是 timestamp="1712876400000"
  • 對特殊字元做正確的 URL 編碼

報錯: -1021 Timestamp for this request was 1000ms ahead of the server's time

原因:本地時間與幣安伺服器時間差超過 1 秒。 處理

  • 同步本地系統時間(NTP)
  • 或在請求中加 recvWindow=10000 引數把容差調到 10 秒
  • 伺服器在中國大陸推薦使用 time.windows.comntp.aliyun.com

報錯: -2014 API-key format invalid

原因:金鑰字串錯誤。 處理:檢查是否複製時多了空格、換行;金鑰應為 64 位字母數字。

報錯: -1003 Too many requests; current limit is X requests per minute

原因:超出權重上限。 處理

  • 減少呼叫頻率或合併請求(例如用 /api/v3/ticker/24hr 一次拿所有交易對而不是逐個查詢)
  • 改用 WebSocket 接收實時資料,減少 REST 呼叫
  • 等待 1 分鐘後重試

七、API 安全最佳實踐

  1. 永遠不要在前端程式碼中暴露 Secret Key — 前端可以呼叫你自己的後端,後端再調幣安 API
  2. 程式碼倉庫 .gitignore 排除金鑰檔案 — 避免推送到 GitHub 後被自動掃描機器人竊取
  3. 生產環境使用 IP 白名單 — 只允許你的伺服器 IP
  4. 定期輪換金鑰 — 每 6 個月手動刪除舊金鑰重建一次
  5. 監控異常呼叫 — 在 API 管理頁檢視每日呼叫統計,發現異常立即停用

常見問題 FAQ

Q1: API 金鑰是免費的嗎?

A: 完全免費。幣安不對 API 呼叫收費(只在實際下單成交時收手續費),建立金鑰也不需要任何押金。但每個賬號最多建立 30 個 API 金鑰,到達上限需要先刪除舊的。

Q2: 用 API 下單的手續費比手動低嗎?

A: 不會自動更低。手續費只與你的 VIP 等級和持有的 BNB 數量相關,無論是手動下單還是 API 下單都按同一個費率表。但 API 適合做高頻交易,能享受更精準的成交價。

Q3: 測試環境可以模擬交易嗎?

A: 可以。幣安提供 Spot Testnet(現貨測試網)和 Futures Testnet(合約測試網),免費拿測試幣練習 API 呼叫,不會影響真實賬戶。

Q4: 用 ccxt 這類第三方庫簡單還是直接調 API 簡單?

A: 看場景。ccxt 適合需要支援多個交易所的專案,封裝好了簽名和引數轉換;直接調 API 適合只用幣安、效能敏感的場景(少了一層抽象,除錯也更直接)。新手推薦先用 ccxt 跑通流程,再決定是否切換到原生呼叫。

Q5: 我的 API 金鑰被盜了怎麼辦?

A: 立即幣安官網 → API 管理 中刪除該金鑰(刪除操作秒級生效)。然後檢查最近的交易和提幣記錄,發現異常透過客服申訴。如果沒開啟 Enable Withdrawals 許可權,盜號者只能下單不能提幣,資產損失通常可控。詳細的應對流程見 風控防護 分類。

需要檢視怎麼應對賬號風控?回到 分類導航 選擇「風控防護」分類檢視完整流程。

繼續瀏覽

對幣安使用還有疑問?回到分類頁查詢同主題的其它教程。

分類導航

相關教程

幣安Spot API怎麼用?從零到第一單的可執行程式碼 2026-04-14 幣安Futures和Spot API有什麼區別?端點引數權重對比 2026-04-14 幣安API會被封IP嗎?限頻策略與權重計算詳解 2026-04-14 幣安WebSocket怎麼訂閱行情?單流多流生產級程式碼 2026-04-14