{
"channel": "userFills",
"data": {
"isSnapshot": true,
"user": "0xabc...",
"fills": [
{
"coin": "BTC",
"px": "65000.5",
"sz": "0.1",
"side": "B",
"time": 1700000050000,
"startPosition": "0.0",
"dir": "Open Long",
"closedPnl": "0.0",
"hash": "0x...",
"oid": 12345,
"crossed": true,
"fee": "1.625",
"tid": 67890,
"feeToken": "USDC"
}
]
}
}Live Data WebSocket API
userFills
Per-user fills: snapshot then live updates over the same WebSocket
Subscribe with
{"method":"subscribe","subscription":{"type":"userFills","user":"0x..."}} (optional aggregateByTime). Initial payload matches UserFillsSnapshot; subsequent events use UserFillsUpdate in components/schemas of the same OpenAPI file.
Snapshot for an idle account
When the live cache holds no recent fill for the account, the snapshot is served from storage: the account’s most recent fills, up to 100, instead of an empty list. Fills from storage carrytwapId (null outside a TWAP); their crossed flag is reliable from 24 September 2026 15:53 UTC.