Saltearse al contenido
Operar

Referencia de la API de Bitnxs

Interfaz HTTP y WebSocket para la cadena Nexus. Las sesiones se firman con la wallet PRINCIPAL directamente o — para trading programático — con una API key (una credencial de firma delegada derivada de su wallet mediante una firma única). Sin Bearer tokens, sin secretos compartidos, sin HMAC. La misma interfaz alimenta la UI web, los bots de trading programático, los indexadores y las herramientas de administración.

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

  1. Conecte su wallet (MetaMask o cualquier proveedor EIP-1193) en la UI web para obtener su dirección on-chain (0xABC).
  2. Abra la página “More → API Keys” y genere una API key; copie el valor que aparece una única vez en el modal.
  3. Abra una sesión: POST /session/start → firme el challenge devuelto → POST /session/complete → reciba un sessionId.
  4. Envíe órdenes, cancelaciones, actualizaciones de apalancamiento y disparadores TP/SL utilizando el sessionId.
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())