First order in minutes
Place a signed Pro spot order with a known HMAC fixture.
Open Get API keys. Restrict by IP when you can.
Run the known-answer fixture before you hit production.
GET /v2/trading/market-configPublic. Use the returned symbol, min/max, and precision. Sample: get-markets.
GET /v2/trading/tickers and GET /v2/trading/order-book. Still public.
Spot orders debit Pro balances, not Simple Wallet pockets. Move funds first:
POST /v1/trading/wallet/depositRequired body: fromPocketId, amount, currency (strings). End-user funds: send X-SUBACCOUNT-ID. This operation documents 403 (invalid credentials) and 404 (wallet not found), not 412.
Reverse path: POST /v1/trading/wallet/withdraw (amount, currency, optional toPocketId) — next step after the fill.
POST /v1/trading/orderSign nonce:path: plus the exact compact JSON bytes on the wire (JSON.stringify with no spaces). Pro symbols use a slash (BTC/EUR), not MCP BTC-EUR. Compact body:
{"side":"buy","symbol":"BTC/EUR","price":"50000","amount":"0.01","orderType":"limit"}On this operation, HTTP 412 means price or amount is outside the market min/max from GET /v2/trading/market-config. The snapshot does not document 417 here. Wallet 412 (pocket funds) is a different API.
Sample: trading-spot-samples REST trading.
GET /v1/trading/order/{id} or subscribe to my-orders on the Pro WebSocket.
After the fill, move Pro balances back to a Wallet pocket:
POST /v1/trading/wallet/withdrawBody: amount, currency (required); toPocketId when you target a pocket. Same 403 / 404 as deposit. This is not an on-chain withdrawal.
Wallet → Pro → order → Pro → Wallet is the documented conversion path. Details also sit in the Pro REST Funding section (deposit, withdraw).
Amounts are strings. Use . for decimals.
Optional: stream fills on wss://ws.bit2me.com/v1/trading after WsAuth.