WebSocket API

Account Trade Channel

Authenticated per-fill (execution) stream for your account

Channel name: account_trade

Streams individual fills for your account as they execute. Unlike the order channel (which reports order-level aggregates: filled_sz, avg_px, tot_fees), this channel gives per-fill detail: execution price, fill id, fee amount and asset, and maker/taker role. Includes both order-book and OTC fills.

Authentication

You must send a successful auth message before subscribing.

{ "op": "sub", "channel": "account_trade" }

The stream is account-scoped. You may optionally pass { "market": "BTC-PERP" } to receive fills for a single market only.

Message Types

There is no snapshot for this channel - only live fills are pushed after subscribing. To backfill historical fills, use REST GET getAccountTradeHistory.

Update

Each message contains an array of fills produced by a single execution event. A single order that fills against multiple resting orders produces multiple entries.

{
  "channel": "account_trade",
  "type": "update",
  "filter": "BTC-PERP",
  "data": [
    {
      "id": "0xabc...",
      "mkt_id": "BTC-PERP",
      "oid": "550e8400-e29b-41d4-a716-446655440000",
      "sd": "ORDER_SIDE_BUY",
      "px": "64519.00",
      "sz": "0.01",
      "quote_sz": "645.19",
      "fee_rt": "0.0005",
      "fee_asset": "USDC",
      "fee_amt": "0.322595",
      "liq": "LIQUIDITY_TAKER",
      "seq_fee_amt": "0",
      "liq_fee_amt": "0",
      "ts": "1784170121595176777"
    }
  ],
  "gsn": 646233901,
  "ts": "1784170121595176777"
}

Fields

Fills use the same v1AccountTrade schema as REST GET getAccountTradeHistory.

FieldTypeDescription
idstringFill (match) ID
mkt_idstringMarket ID
oidstringOrder ID this fill belongs to (join to the order channel)
sdstringYour side for this fill: ORDER_SIDE_BUY or ORDER_SIDE_SELL
pxstringExecution price
szstringFill size (base asset)
quote_szstringFill size (quote asset)
fee_rtstringFee rate applied to this fill
fee_assetstringAsset the fee was charged in
fee_amtstringFee amount charged for this fill
liqstringLIQUIDITY_MAKER or LIQUIDITY_TAKER
seq_fee_amtstringSequencer fee amount (taker only, 0 for maker)
liq_fee_amtstringLiquidation fee amount (taker liquidation only, 0 otherwise)
tsstringFill timestamp in nanoseconds

Notes

  • Both sides are notified. Each fill is delivered to the maker account and the taker account, each from its own perspective (liq, sd, and fee fields reflect your role).
  • Self-trades are prevented. Your own maker and taker orders never match each other (self-trade prevention defaults to cancelling the taker), so you will not receive both-side fills for a match against yourself.

On this page