バイナンス(Binance)のAPI申請の主な流れは、KYC(本人確認)L2の完了 → バイナンス公式サイト のAPI管理ページでキーを作成 → IPホワイトリストを設定 → コード内でHMAC-SHA256署名を使用して呼び出す、というステップです。全工程は約 15分 で完了し、キー作成後すぐに利用可能です。APIは無料で、月額費用もかかりません。2段階認証(2FA)の管理に便利なスマホ版をまだお持ちでない方は、バイナンス公式アプリ からAndroid版をインストールできます。iPhoneユーザーの方は iOSインストールガイド を参照してください。この記事では、申請、署名、エラー対処、レート制限の4つのパートに分けて詳しく解説し、PythonとNode.jsの完全なコードサンプルも提供します。
一、APIキー申請の前提条件
1. KYC L2(本人確認)の完了
バイナンスAPIを利用するには、少なくとも L2(中級)の身分証明(身分証の提出 + 顔認証)を完了している必要があります。L1(初級)のアカウントではAPIキーを作成できません。通常、L2の審査は24時間以内に完了します。
2. 2FA(2段階認証)の有効化(必須)
APIキーの作成プロセスでは、2段階認証コードによる確認が必要です。まだ設定していない場合は、セキュリティセンター → 2段階認証 → Google Authenticator で設定を完了させてください。
3. 残高・保有資産の制限なし
残高がゼロの状態でもAPIキーを作成できます。あらかじめキーを準備してから入金することが可能です。
二、APIキーの作成(5つのステップ)
ステップ1:API管理ページへアクセス
バイナンス公式サイト にログイン → 右上のアイコンをクリック → 「API管理」 を選択します。
ステップ2:キーのタイプを選択
バイナンスでは2種類のAPIキータイプを提供しています:
| タイプ | 用途 | 推奨されるケース |
|---|---|---|
| システム生成 | システムが自動でキーペアを生成 | 90%のユーザーに推奨。シンプルで安定 |
| 自己生成 | 自身でEd25519公開鍵を提供 | 上級ユーザー。秘密鍵をローカルから一切出さない |
初心者の方は 「システム生成」 を選択してください。
ステップ3:ラベル(名前)を入力
管理しやすいように、キーに名前(ラベル)を付けます。例:
python-grid-bot— グリッド取引ボット用nodejs-monitor— 価格監視スクリプト用quantitative-strategy-v2— 量化戦略 v2
このラベルは自分だけに表示され、バイナンス側での機能差はありません。
ステップ4:2FA認証を完了
以下のコードを入力します:
- メール送信の6桁認証コード
- SMS送信の6桁認証コード
- Google Authenticator の6桁動的コード
すべて正しく入力されると、キーが生成されます。
ステップ5:シークレットキー(Secret Key)の保存(最重要)
キーの生成後、以下の情報が表示されます:
- API Key:常に表示され、いつでも確認可能です。
- Secret Key:作成時に一度だけ表示されます。ページを閉じると二度と表示されません。
必ずすぐにシークレットキーを安全な場所(パスワードマネージャーや暗号化されたメモなど)にコピーしてください。紛失した場合は、キーを削除して再作成するしかありません。
三、キー権限とIPホワイトリストの設定
キー作成直後は、すべての操作権限がオフになっています。手動で有効化する必要があります:
権限のオプション
| 権限 | 用途 | リスクレベル |
|---|---|---|
| 読み取りを有効にする | 残高、注文、相場の照会 | 低 |
| 現物・マージン取引を有効にする | 現物 / レバレッジ取引の発注 | 中 |
| 先物を有効にする | 先物取引の発注 | 高 |
| 出金を有効にする | 資産の出金(IPホワイトリストの設定が必須) | 極高 |
| ユニバーサル転送を許可する | 資金アカウント間の振替 | 中 |
セキュリティ上のアドバイス:必要な権限のみを有効にしてください。相場データの取得だけなら 「読み取りを有効にする」 のみ、現物取引なら 「読み取り + 現物・マージン取引」 を選びます。「出金を有効にする」 は、特別な理由がない限り決して有効にしないでください。
IPホワイトリスト(強く推奨)
このキーの使用を許可するサーバーのIPアドレスを登録します(最大30個まで)。設定すると、登録されたIP以外からのリクエストは拒否されます。
自宅の回線など動的IPの場合は、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=<計算された署名>
ヘッダー: X-MBX-APIKEY: <あなたのAPIキー>
Python による実装例
import hmac, hashlib, time, requests
API_KEY = "あなたのAPIキー"
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キー';
const 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);
五、レート制限(Weight)と重み
バイナンスAPIは、重み(Weight) という仕組みで呼び出し頻度を制限しています:
| 制限項目 | デフォルト値 |
|---|---|
| 1分間あたりの重み上限 | 6000 |
| 10秒間あたりの注文上限 | 100注文 |
| 1日あたりの注文上限 | 200,000注文 |
| WebSocket 1接続あたりの購読数上限 | 1024 |
主なエンドポイントの重み:
GET /api/v3/ticker/price— 重み 1GET /api/v3/account— 重み 10POST /api/v3/order— 重み 1(ただし注文回数制限を消費)
レスポンスヘッダーに現在の使用状況が返されます:
X-MBX-USED-WEIGHT-1m:直近1分間に使用された重み
制限を超えると 429 Too Many Requests エラーが返され、さらに違反が続くと 418 エラーとなり一時的にIPがブロックされます。
六、よくあるエラーと対処法
エラー: -1022 Signature for this request is not valid
原因:署名の誤り。パラメータの順序が署名時と異なっているか、URLエンコードが不適切です。 対処:署名に使用した文字列と、実際に送信するクエリ文字列が 完全に一致 しているか確認してください。
エラー: -1021 Timestamp for this request was 1000ms ahead of the server's time
原因:ローカルの時刻とサーバーの時刻が1秒以上ずれています。
対処:サーバーの時刻同期(NTP)を行うか、リクエストに recvWindow=10000 パラメータを追加して許容誤差を広げてください。
エラー: -2014 API-key format invalid
原因:APIキーの文字列が正しくありません。 対処:コピー時に余計な空白や改行が入っていないか確認してください。キーは64文字の英数字です。
七、APIセキュリティのベストプラクティス
- フロントエンドにシークレットキーを露出させない — 自身のバックエンドサーバー経由でバイナンスAPIを呼び出すようにしてください。
- .gitignore でキーファイルを管理外にする — GitHub等に誤ってアップロードしないよう注意してください。
- 本番環境ではIPホワイトリストを使用する — 特定のサーバーIPからのみのアクセスに制限してください。
- 定期的にキーを更新する — セキュリティのため、半年程度を目安に新しいキーを作成し直すことをお勧めします。
よくある質問 FAQ
Q1: APIキーの作成に費用はかかりますか?
A: 完全に無料です。呼び出し自体に費用はかかりませんが、実際の取引時には通常の手数料が発生します。1アカウントにつき最大30個までキーを作成できます。
Q2: APIで注文すると手数料が安くなりますか?
A: 自動的に安くなることはありません。手数料はユーザーのVIPレベルとBNBの保有状況に基づきますが、APIは高頻度な取引を可能にするため、実質的に有利な価格で約定させやすくなります。
Q3: テスト環境でシミュレーションできますか?
A: はい。バイナンスは現物・先物それぞれの テストネット(Testnet) を提供しており、リスクなしでAPI呼び出しを練習できます。
Q4: APIキーが盗まれた可能性がある場合は?
A: ただちに バイナンス公式サイトのAPI管理から該当するキーを削除してください。削除は即座に反映されます。
アカウントのリスク管理についてさらに詳しく知りたい場合は、カテゴリナビ から「リスク管理」カテゴリのガイドを参照してください。