Get a single trade by ID
Returns one trade row. The market query parameter is required: trades_by_market is partitioned by market_id first, so without it the lookup would scan every market’s parts.
Path Parameters
Unique trade identifier.
"12345"
Query Parameters
Market identifier, e.g. "BTC-USD".
"BTC-USD"
Response
Trade.
One public-trades fill row — one row per maker/taker pairing. Returned by GET /v1/trades (newest-first array) and by the trades WebSocket channel (one frame per taker match, with one row per pairing inside).
Source-of-truth wire type lives in go-socks/sbe/handler.go TradeJSON and api-handlers/types/trade_types.go Trade — same shape on both surfaces so a client parser works for either.
On the WS trades channel the update payload is an array of these rows, all built from a single taker match; takerOrderId, takerAddress, timestamp, and sequenceNumber repeat on every row.
Perpetual market identifier (uint16). Map to display name via GET /markets.
0 <= x <= 655350
Market symbol (e.g. BTC-USD).
"BTC-USD"
Taker side.
BUY, SELL Fill price in human-readable USD (decimal string).
"94500.00"
Fill size in human-readable base-asset units (decimal string).
"0.25"
Unique trade identifier.
"12345"
Fill timestamp (epoch microseconds).
1712345678000000
Server-generated order ID of the taker order.
"abc-123..."
Checksummed Ethereum address of the taker account.
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
Server-generated order ID of the maker order.
"def-456..."
Checksummed Ethereum address of the maker account.
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
Monotonically increasing sequence number for ordering and gap detection.
9991234