---
title: "Get wallet activity feed"
method: GET
path: "/v4/data/prediction/wallets/{address}/activity"
tags: ["Prediction API"]
---

# Get wallet activity feed

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

/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.

## Path parameters

- `address` string, 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.

## Query parameters

- `market` string
- `eventId` string
- `type` string
- `side` 'BUY' | 'SELL' — Order direction (buy / sell). Distinct from the outcome-side enum.
- `start` integer
- `end` integer
- `sortBy` 'TIMESTAMP' | 'TOKENS' | 'CASH' — Sort key for `/wallets/{address}/activity`.
- `sortDirection` 'ASC' | 'DESC' — Sort direction.
- `limit` integer
- `offset` integer

## Response `200`

OK

- PredictionWalletActivityResponse — Paginated wallet activity-feed response.
  - `data` PredictionWalletActivity[], required
    - `proxyWallet` string, required — Wallet address (0x + 40 hex, lowercased).
    - `timestamp` integer, required — Event time (unix-seconds).
    - `conditionId` string, nullable, required — Market condition id (0x + 64 hex). `null` on rows that aren't market-scoped (e.g. some reward / referral rows).
    - `type` 'TRADE' | 'SPLIT' | 'MERGE' | 'REDEEM' | 'REWARD' | 'CONVERSION' | 'MAKER_REBATE' | 'REFERRAL_REWARD', required — Event type emitted in the wallet activity feed. Covers every category the upstream surfaces — not just trades.
    - `size` number, required — Token-count delta — outcome tokens moved by this event.
    - `usdcSize` number, required — USDC notional delta — USDC moved by this event.
    - `transactionHash` string, nullable, required — On-chain transaction hash, when one exists.
    - `price` number, required — Price associated with the event. `0` on non-trade events (e.g. `REWARD`, `REDEEM`) where price is undefined.
    - `asset` string, nullable, required — Outcome-token asset id. `null` on rows that aren't market-scoped.
    - `side` 'BUY' | 'SELL', required — Order direction (buy / sell). Distinct from the outcome-side enum.
    - `outcomeIndex` integer, nullable, required — Outcome index (0 / 1 on binary markets). `null` when the upstream omits it; the upstream occasionally emits a sentinel value of `999` for rows that don't map to a position side.
    - `title` string, nullable, required
    - `slug` string, nullable, required
    - `icon` string, nullable, required
    - `eventSlug` string, nullable, required
    - `outcome` string, nullable, required
    - `name` string, nullable, required
    - `pseudonym` string, nullable, required
    - `bio` string, nullable, required
    - `profileImage` string, nullable, required
    - `profileImageOptimized` string, nullable, required
  - `pagination` PredictionOffsetPagination, required — Offset-based pagination metadata, returned by every wallet endpoint and by `/markets/{id}/positions`. `pageNumber` is the zero-indexed page derived from `offset / limit` on the request.
    - `pageSize` integer, required — Page size of the call that produced this response.
    - `pageNumber` integer, required — Zero-indexed page number (`offset / limit`).

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/versions/8622ee4b8fae/schema)
