Skip to main content
GET
Get user trades
Response JSON below is an illustrative testnet snapshot, not a live mainnet result. Use the selected server and its network-specific addresses for actual requests.
string
required
Unsigned decimal Kuru user ID.
integer
default:"100"
Page size from 1 through 500.
string
Opaque exclusive continuation cursor from pagination.nextCursor.
string
Optional lowercase 20-byte market filter for trade rows only. It does not filter data.positions.
integer
Inclusive Unix time in seconds.
integer
Inclusive Unix time in seconds. When both bounds are present, to must be greater than from.
integer | null
required
Feed epoch containing globalUserSeq.
string | null
required
Finalized user sequence covered by the materialized response.
object
required
Trade history and the complete position baseline.
string | null
required
The fee fields are makerFee, takerFee, builderFeeBase, and builderFeeQuote. Inapplicable amounts are zero. These are allocated fee amounts, not PPS rates. The PnL fields are grossRealizedPnl, realizedPnl, openSize, and openCost. Realized PnL fields remain x18; openCost uses native quote-token units and openSize uses native market size precision. This matches the units of data.positions[].openCost and data.positions[].openSize. openSize and openCost are null when the row does not publish an authoritative post-trade position cut. On the first page, data.positions and the replay cursor describe the same committed state, after complete trade matches. Historical data.trades[].pnl values still describe their individual trades, not this current baseline. Continuation pages retain the first page’s positions and replay cursor, even when newer trades arrive. When both cursor fields are non-null, install data.positions once as the accounting baseline and subscribe to userTrades@f, using feedEpoch and passing globalUserSeq as the subscription’s seq. Do not overwrite live positions when loading additional history pages. A fresh first-page request establishes a new baseline. If either cursor field is null, the response cannot establish a replay handoff; do not interpret a missing cursor as zero. The example below illustrates the response shape; cursor values are opaque.

Path Parameters

userId
integer
required

Query Parameters

marketAddress
string
limit
integer
cursor
string
from
integer
to
integer

Response

200

User trades