v1

latestOpenAPI 3.1.02026-07-243035381.4 MB
Prediction API

Get wallet activity feed

/v4/data/prediction/wallets/{address}/activity

100 credits per API call

Full wallet event feed — covers every event type the upstream emits: TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION, MAKER_REBATE and REFERRAL_REWARD. Unlike /wallets/{address}/trades, this endpoint includes non-trade events and supports a native time-range filter — useful for activity logs, audit trails and tax exports.

Platform support

  • Polymarket only. Kalshi wallets return 400.

Filtering, sorting and pagination

  • market / eventId scope the response (mutually exclusive, up to 50 entries each).
  • type is a comma-separated list of event types — up to 8 entries from the enum.
  • side filters to BUY or SELL (relevant for trade-type rows; null on non-trade rows).
  • start / end are unix-seconds (not milliseconds) — values that look like millisecond timestamps (~13 digits) are rejected with 400. end must be greater than or equal to start.
  • sortBy accepts TIMESTAMP, TOKENS, CASH. Defaults to TIMESTAMP. Combine with sortDirection (defaults to DESC).
  • Pagination is offset-based — limit (1..500, default 100) and offset (0..10000, default 0).

Other notes

  • side is null on non-trade rows (e.g. REWARD, SPLIT, MERGE, REDEEM) — direction is undefined there.
  • outcomeIndex can be null for rows that don't map to a position side. A sentinel value of 999 is occasionally emitted by the upstream for the same case.
  • conditionId and asset can be null on rows that aren't market-scoped (e.g. some reward / referral rows).
  • address is normalised to lowercase before being echoed in the response.
get/v4/data/prediction/wallets/{address}/activity

Path parameters

addressstring required

EVM wallet address — 0x-prefixed, 40 hex characters. Returned lowercased in response payloads. Non-EVM inputs (e.g. Kalshi user identifiers) return 400 from every wallets endpoint.

Example:0x56687bf447db6ffa42ffe2204a05edaa20f55839

Wallet address (0x + 40 hex). Kalshi addresses return 400.

Query parameters

marketstring
Example:0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917

Comma-separated list of condition ids (0x + 64 hex). Up to 50 entries. Mutually exclusive with eventId.

eventIdstring
Example:12345,67890

Comma-separated list of Polymarket numeric event ids. Up to 50 entries. Mutually exclusive with market.

typestring
Example:TRADE,REDEEM

Comma-separated list of event types to include. Up to 8 entries from the PredictionActivityType enum.

side'BUY' | 'SELL'

Order direction (buy / sell). Distinct from the outcome-side enum.

Example:BUY

Filter trade-type rows by direction. Non-trade rows always have side = null and are unaffected.

startinteger
Example:1747569600

Inclusive lower bound on event timestamp, in unix-seconds. Values that look like milliseconds (~13 digits) are rejected with 400.

endinteger
Example:1748174400

Inclusive upper bound on event timestamp, in unix-seconds. Must be ≥ start when both are provided.

sortBy'TIMESTAMP' | 'TOKENS' | 'CASH'

Sort key for /wallets/{address}/activity.

Example:TIMESTAMP

Sort key. Defaults to TIMESTAMP.

sortDirection'ASC' | 'DESC'

Sort direction.

Example:DESC

Sort direction. Defaults to DESC.

limitinteger
Example:100

Page size. Defaults to 100.

offsetinteger

Page offset. Defaults to 0.

Response

OK

Example response

{
  "data": [
    {
      "proxyWallet": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
      "timestamp": 1747569600,
      "conditionId": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
      "type": "TRADE",
      "size": 250,
      "usdcSize": 105,
      "transactionHash": "0xabc123…",
      "price": 0.42,
      "asset": "71321045679252212594626385532706912750332728571942612009397583165281712267356",
      "side": "BUY"
    }
  ],
  "pagination": {
    "pageSize": 100
  }
}