---
title: "Get Activity"
method: GET
path: "/v2/polymarket/activity"
tags: ["polymarket"]
---

# Get Activity

`GET /v2/polymarket/activity`

Fetch activity data for a specific user.

Returns SPLIT, MERGE, REDEEM, and CONVERT events from the unified activity table.

Note on CONVERT rows: these are NegRisk position conversions (sell NO tokens on a
subset of conditions, buy YES tokens on the remainder). Their `condition_id` field
actually carries the NegRisk parent market_id, not a CTF condition_id, so the
Postgres market-metadata lookup will return empty market_slug/title for them.
Filtering by condition_id will not match conversions — conversions are a
market-level operation, not a per-outcome one.

## Query parameters

- `wallet` string, required — Wallet address
- `start_time` integer, nullable — Unix timestamp (seconds) for start
- `end_time` integer, nullable — Unix timestamp (seconds) for end
- `market_slug` string, nullable — Filter by market slug
- `condition_id` string, nullable — Filter by condition ID
- `sort_by` 'timestamp' | 'type' — Sort options for activity.
- `limit` integer — Number of activities to return (1-500)
- `order` 'asc' | 'desc' — Sort order direction enum.
- `pagination_key` string, nullable — Pagination key for cursor-based pagination

## Response `200`

Successful Response

- ActivityResponse — Activity endpoint response.
  - `activities` Activity[], required
    - `side` 'MERGE' | 'SPLIT' | 'REDEEM' | 'CONVERT', required — Activity side enum.
    - `market_slug` string, required
    - `market_id` string, nullable — Gamma market row id (numeric string). Populated for SPLIT/MERGE/REDEEM. Null for CONVERT — see `neg_risk_market_id` instead.
    - `neg_risk_market_id` string, nullable — NegRisk parent market identifier (32-byte hex). Matches Gamma's `Event.negRiskMarketID`. Populated only for CONVERT rows.
    - `condition_id` string, required — CTF condition ID for SPLIT/MERGE/REDEEM (per-outcome). Empty string for CONVERT — conversions are market-level, so use `neg_risk_market_id`.
    - `index_set` string, nullable — NegRisk indexSet bitmask (decimal string) — which outcomes were involved. Populated only for CONVERT rows; null for other sides.
    - `shares` integer, required — Raw number of shares from blockchain
    - `shares_normalized` number, required — Shares normalized (raw / 1000000)
    - `amount_usd` number, required — USD value of the activity
    - `price` number, required
    - `tx_hash` string, required
    - `title` string, required
    - `timestamp` integer, required — Unix timestamp in seconds
    - `user` string, required — User wallet address
  - `pagination` CursorPagination, required — Cursor-based pagination for endpoints that don't support offset.
    - `limit` integer, required — Requested limit
    - `count` integer, required — Number of items in current response
    - `pagination_key` string, nullable — Base64-encoded cursor for next page
    - `has_more` boolean, required — Whether there are more items available

## Other responses

- `400` — Bad Request
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/predexon/apis/predexon-api.md) · [All operations](https://skmtc.net/predexon/apis/predexon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/predexon/predexon-api/revisions/80a306fbdb39/schema)
