JTX MARKETS LIVE
Multi-asset trading on 300+ instruments · Two account types: Exchange (deposit-funded) and Prop Trading Programme (evaluated)
TRADING API

Programmatic access to every market.

REST + WebSocket across all 300+ instruments — crypto, forex, indices, commodities, equities. Same matching engine, same execution as the web platform. HMAC-signed private channels, typed event catalogue, full OpenAPI spec.

Available on both account types — Multi-Asset Perpetuals Exchange accounts and Prop Trading Programme accounts. Keys are generated inside the trading platform and scoped per account.

Endpoints at a glance

Base URL https://engine.jtxmarkets.com. Public market-data endpoints need no auth; private endpoints take X-API-Key + X-API-Signature headers (HMAC-SHA384 over method+path+body+nonce).

MethodPathSummary
GET/v1/market/:symbol/tickerBest bid / ask, mark price, index price, funding rate, next-funding timestamp.
GET/v1/market/:symbol/depthFull order book — bid + ask price levels, configurable depth.
GET/v1/market/:symbol/klinesHistorical candles (1m / 5m / 15m / 1h / 4h / 1d) for charting.
POST/v1/ordersSubmit market, limit, stop, TP/SL, TWAP, OCO, or bracket order.
DELETE/v1/ordersCancel all open orders for a client (optionally narrowed to one symbol).
PATCH/v1/orders/:symbol/:idIn-place modify (price or quantity) — preserves queue priority when reducing size.
GET/v1/positions/:client_idAll open positions across every market for a client.
POST/v1/positions/:client_id/close_allReduce-only market sweep to flatten every position.
GET/v1/accounts/:id/detailFull account snapshot — balance, available, equity, positions, open orders, recent fills.
GET/v1/funding/:symbolLive funding rate, premium index, settlement countdown.
GET/v1/risk/haltsCurrently halted markets and reason.

This is a subset. openapi.json catalogues every endpoint with request / response schemas.

WebSocket channels

Single connection at wss://engine.jtxmarkets.com/ws. Subscribe to any combination of public + private channels; events arrive sequence-numbered so you can gap-detect and replay.

ChannelEmits
orderbook.{symbol}Top-N book snapshots, sequence-numbered.
trades.{symbol}Public prints — price, size, side, timestamp.
ticker.{symbol}Bid / ask / mark / index ticks.
funding.{symbol}Funding rate updates and settlement ticks.
market_status.{symbol}Open / closed transitions.
circuit_breaker.{symbol}Halt activations.
private.{client_id}Order acks, fills, account updates, position updates, liquidations, funding payments, margin warnings — HMAC handshake required.

Sample code

Copy-paste ready.

REST · curl
# Submit a limit buy order
curl -X POST https://engine.jtxmarkets.com/v1/orders \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_KEY' \
  -d '{
    "client_id":   "your-uuid",
    "symbol":      "BTC-PERP",
    "side":        "buy",
    "order_type":  "limit",
    "price":       "69500.00",
    "quantity":    "0.5",
    "tif":         "gtc",
    "margin_mode": "cross",
    "leverage":    10
  }'
WebSocket · JavaScript
// Subscribe to BTC-PERP order book + your private channel
const ws = new WebSocket('wss://engine.jtxmarkets.com/ws')

ws.onopen = () => {
  ws.send(JSON.stringify({ action: 'subscribe', channel: 'orderbook.BTC-PERP' }))
  ws.send(JSON.stringify({ action: 'subscribe', channel: 'private.' + clientId }))
}

ws.onmessage = (evt) => {
  const msg = JSON.parse(evt.data)
  if (msg.channel === 'orderbook.BTC-PERP') updateBook(msg.data)
  if (msg.event === 'fill')                 handleFill(msg.data)
}
Python client
# pip install jtxmarkets[ws]
from jtxmarkets import Client

c = Client.engine(base_url="https://engine.jtxmarkets.com", api_key="YOUR_KEY", api_secret="YOUR_SECRET")

# Market data (no auth)
print(c.get_ticker("BTC-PERP"))

# Submit an order
ack = c.submit_order(
    client_id="your-uuid",
    symbol="BTC-PERP",
    side="buy",
    order_type="limit",
    price="69500.00",
    quantity="0.5",
    tif="gtc",
)
print(ack["order_id"])

Rate limits & auth

Sensible defaults; contact us if your strategy needs more.

Data centreAWS ap-northeast-1 (Tokyo) — lowest RTT from APAC clients
Private endpoints (per key)100 requests / second
Market-data endpoints (per IP)1,000 requests / second
WebSocket connections (per key)4 concurrent
WebSocket subscriptions (per connection)64
Auth method (REST private)HMAC-SHA384 signature header, timestamp-bound (30s window)
Auth method (WebSocket private)Ticket handshake — fetch from /api/auth/ws-ticket, send as first frame
Key permissionsRead · Trade · Withdraw (scoped independently — never grant Withdraw unless required)
IP allowlistOptional per-key CIDR list — recommended for production keys

Ready to build?

Log in, generate a key on the API page inside your account, and hit the endpoints. The OpenAPI spec loads into Postman, Insomnia and Swagger UI unchanged.