Skip to main content
GET
Get user trade history

Authorizations

X-Monaco-Signature
string
header
required

Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.

Query Parameters

page
integer<uint32>

Deprecated: page number for legacy offset pagination (1-indexed). Use pageToken cursor pagination instead.

Required range: 1 <= x <= 10000
pageSize
integer<uint32>
default:20

Items per page (max: 100 in page-number mode; up to 1000 when pageToken is present)

Required range: 1 <= x <= 1000
tradingPairId
string<uuid>

Trading pair identifier (UUID)

Minimum string length: 1
pageToken
string

Pagination cursor with three distinct states:

  • Omitted: legacy page-number pagination via page, limited to recent history once the archive window is enabled.
  • Empty string (""): start a cursor walk with no prior position, from the newest row (this endpoint always sorts newest-first).
  • Non-empty: an opaque cursor from a previous response's next_page_token; results resume immediately after that position.

In either cursor-walk state (empty or non-empty), page is ignored, the response omits exact totals (total/total_pages/page are 0), and results cover full trade history — hot and archived rows merged — unlike page-number mode, which only ever sees recent history. Clients that need complete trade history must use the cursor form (start with an empty string, then follow next_page_token) rather than page. Filters must match the request that produced the token.

Response

OK

trades
object[] | null
page
string | null
deprecated

Deprecated: current page number (legacy offset mode only; 0 in cursor mode)

Example:

"1"

pageSize
string | null

Items per page

Example:

"20"

total
string | null
deprecated

Deprecated: total matching trades (legacy page-number mode only; 0 in cursor mode). Exact up to pageSize x 10,000 rows and saturates there. Use pageToken cursor pagination instead.

Example:

"150"

totalPages
string | null
deprecated

Deprecated: total pages at this pageSize (legacy page-number mode only; 0 in cursor mode). Exact up to 10,000 and saturates there. Use pageToken cursor pagination instead.

Example:

"8"

nextPageToken
string | null

Cursor for the next page. Empty on every page-number (legacy) response — page-number mode never mints a token, full page or not, since resuming a client from a legacy-minted position could silently strand archived history newer than wherever that page happened to end. To walk full history, start a cursor-mode request with page_token present but empty (""); from then on the token is present whenever that page returned any rows (AIP-158 "maybe more" semantics), not only when the page is exactly full. Empty only when a cursor-mode page returned zero rows, which is the sole proof the walk is exhausted; a non-empty token does not guarantee further results, so keep following it until a response returns zero rows and an empty token. The two modes never bridge: a page-number response's empty token is not "done," it simply means page-number mode does not participate in cursor continuation.