> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TradesService

> Public recent trades and authenticated user trade history

Package: `monaco.api.trades`

Source: `protos/api/trades.proto`

Use `TradesService` for recent trade history, single-trade lookup, and authenticated user trade history.

```protobuf theme={null}
service TradesService {
  rpc GetTrades(GetTradesRequest) returns (GetTradesResponse);
  rpc GetTradesRPC(GetTradesRPCRequest) returns (GetTradesResponse);
  rpc GetTradeById(GetTradeByIdRequest) returns (GetTradeByIdResponse);
  rpc ListUserTrades(ListUserTradesRequest) returns (ListUserTradesResponse);
}
```

## Notes

* Recent public trades do not require authentication.
* `GetTrades` is cursor-paginated, newest first: send an empty `page_token` to start, then each response's `next_page_token` until it comes back empty; an empty token is definitive. `page_size` defaults to `25` and must be 1–1000. The walk seeks on `(executed_at, id)`, so a page never repeats or skips a trade when new fills land mid-walk. The token is pinned to its `trading_pair_id`, so a token reused for another pair, or one minted by `ListUserTrades`, is rejected. There is no `page` field: code that still sets it fails to compile against a regenerated stub, and a stub generated from an older proto has the unknown field discarded and reads the first page on every call. The walk covers the recent trades window, not a pair's full archived history.
* `ListUserTrades` is authenticated and gRPC-only.
* `ListUserTrades` returns `UserTrade.fee` as the total fee paid (`monaco_fee` + `builder_fee`); `builder_fee` is `"0"` for a maker. All three are integer strings in raw quote units, scaled by `10^quoteDecimals` (so `4178` is `0.004178` at six decimals); this message carries no separate normalized fee fields.
* `ListUserTrades` accepts an optional `order_id` UUID that returns only trades where that order placed the caller's own side of the fill, across hot and archived history. Adding or changing it invalidates an existing `page_token` — restart the cursor walk with an empty token.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.