tradeprints

Get Tradeprints

Changed on

Return the most recent trades for one or more markets. Markets whose trade history River has fully captured are served from River's own data; the rest are fetched from the exchange (concurrently, under a small semaphore so a long input list never fans out into a thundering herd) while a backfill of their history is queued. The result list preserves the input order. A failure on any single market becomes a not_found row with a message — the call as a whole does not 500.

Exchange lookup paths:

  • Kalshi: GET /markets/trades?ticker=...&limit=...
  • Polymarket: GET https://data-api.polymarket.com/v2/trades?condition=<condition_id>&limit=... (the NO leg is flipped into YES-price terms)
  • Polymarket US: always River's own capture (no public API)
  • Novig: GET /v3/catalog/markets/{id}/trades (signed; the print names the maker's outcome, so a NO-outcome print is a YES purchase at 1 - price and a YES-outcome print a YES sale)

Trades are sorted newest-first within each market. Prices are normalised to 0-1.

Use this together with the /v1/ws/tradeprints WebSocket: hit this endpoint to backfill the tape on page load, then dedup live WS events by exchange_trade_id.

get/v1/tradeprints

Request

  • Base URL
    https://api.rivermarkets.com (the document declares no server; this is the origin it was published from)
  • URL
    https://api.rivermarkets.com/v1/tradeprints
  • Auth
    none declared

Query parameters

river_idsinteger[] required

River market IDs (repeat the param for each)

limitinteger

Max trades returned per market

Response

Successful Response

Changes

    • breaking

      the ///// response's property format changed from date-time to no format for status