コンテンツにスキップ
取引する

Bitnxs API リファレンス

Nexus チェーンの HTTP および WebSocket インターフェースです。セッションはメインウォレットで直接署名する方式、またはプログラム取引向けの API キー(メインウォレットからの一度きりの署名で導出される委任署名クレデンシャル)で署名する方式に対応します。Bearer トークンや共有シークレット、HMAC スキームは使用しません。Web UI、プログラム取引ボット、インデクサー、管理ツールはすべて同じインターフェースを利用しています。

Base URL: https://api.bitnxs.com · WebSocket: wss://api.bitnxs.com/ws

  1. Web UI でウォレット(MetaMask または任意の EIP-1193 プロバイダ)を接続し、オンチェーンアドレス(0xABC)を取得します。
  2. 「More → API Keys」ページで API キーを発行し、モーダルに一度だけ表示される値をコピーします。
  3. セッションを開始します:POST /session/start → 返却された challenge に署名 → POST /session/complete → sessionId を取得。
  4. sessionId を用いて注文、キャンセル、レバレッジ変更、TP/SL トリガーなどを送信します。
import requests
from eth_account import Account
from eth_utils import keccak
USER = "0xABC..." # MAIN wallet address — the session is bound to this
API_KEY = "0x..." # API key from "More → API Keys" (shown once)
BASE = "https://api.bitnxs.com"
# 1. Open session
chal = requests.post(f"{BASE}/session/start", json={"user": USER}).json()
# 2. Sign challenge with the API key (raw keccak, NOT EIP-191 / personal_sign)
sig = Account.unsafe_sign_hash(
keccak(chal["challenge"].encode()),
private_key=API_KEY,
)
ses = requests.post(f"{BASE}/session/complete", json={
"challengeId": chal["challengeId"],
"signature": {"r": hex(sig.r), "s": hex(sig.s), "v": sig.v - 27},
}).json()
SESSION_ID = ses["sessionId"]
# 3. Submit a limit order
print(requests.post(f"{BASE}/session/order", json={
"sessionId": SESSION_ID,
"asset": 1,
"isBuy": True,
"limitPx": "65000.00",
"sz": "0.01",
"reduceOnly": False,
"orderType": {"type": "limit", "tif": "Gtc"},
}).json())