Order entry is performed over WebSocket.
  • Endpoint: wss://trade.qfex.com?api_key=YOUR_API_KEY
  • Authenticate within 1 minute of connecting.

1) Authenticate

Send this immediately after you connect:
{ "type": "auth", "params": { "api_key": "YOUR_API_KEY" } }

2) Add Order

{
  "type": "add_order",
  "params": {
    "symbol": "AAPL-USD",
    "side": "BUY",
    "order_type": "LIMIT",
    "order_time_in_force": "GFD",
    "quantity": 1,
    "price": 200,
    "take_profit": 0, // Optional
    "stop_loss": 0 // Optional
  }
}

Parameters

FieldTypeRequiredDescription
symbolstringThe market symbol (e.g. AAPL-USD).
sideenumOrder direction. See OrderDirection.
order_typeenumType of order. See OrderType.
order_time_in_forceenumTime in force policy. See OrderTimeInForce.
quantitynumberQuantity of the order. Must respect lot size and min/max limits (see reference data).
pricenumber⚠️ (Limit/ALO)Price for limit/ALO orders. Ignored for market orders. Must respect tick size and price bands.
take_profitnumberOptionalOptional take-profit price. Set 0 if unused.
stop_lossnumberOptionalOptional stop-loss price. Set 0 if unused.
client_order_idstringOptionalOptional client-assigned ID for tracking orders. If empty, one is generated.
⚠️ Notes:
  • price is required for LIMIT and ALO orders, but ignored for MARKET.
  • Tick size, lot size, and min/max order quantity are symbol-specific. See Reference Data API.
  • An order may be rejected with OrderStatus codes if parameters are invalid.

Sample Code

# Python (websocket-client)
# pip install websocket-client
import json
import websocket

API_KEY = "YOUR_API_KEY"

def send(ws, obj):
    ws.send(json.dumps(obj))

def on_open(ws):
    # 1) Authenticate
    send(ws, {"type": "auth", "params": {"api_key": API_KEY}})
    # 2) Add order
    send(ws, {
        "type": "add_order",
        "params": {
            "symbol": "AAPL-USD",
            "side": "BUY",
            "order_type": "LIMIT",
            "order_time_in_force": "GFD",
            "quantity": 1,
            "price": 200,
            "take_profit": 0,   # Optional
            "stop_loss": 0      # Optional
        }
    })

ws = websocket.WebSocketApp(
    "wss://trade.qfex.com?api_key=YOUR_API_KEY",
    on_open=on_open,
    on_message=lambda _, m: print(m),
    on_error=lambda _, e: print("Error:", e),
    on_close=lambda *_: print("Closed"),
)
ws.run_forever()

Example Response

When you place an order, you will receive an order_response with status ACK:
{
  "order_response": {
    "order_id": "5b309929-206f-40ec-804d-cbe46e81afc1",
    "symbol": "AAPL-USD",
    "status": "ACK",
    "quantity": 1.0,
    "price": 200.0,
    "take_profit": 0.0,
    "stop_loss": 0.0,
    "side": "BUY",
    "type": "LIMIT",
    "time_in_force": "GFD",
    "user_id": "0020ce8e-eaee-480e-8d7f-b9241d756ee5",
    "client_order_id": "",
    "quantity_remaining": 1.0
  }
}