---
title: "Get Prediction Market PnL by Address"
method: POST
path: "/api/v1/prediction-market/pnl-by-address"
tags: ["Prediction Markets"]
---

# Get Prediction Market PnL by Address

`POST /api/v1/prediction-market/pnl-by-address`

Get profit and loss across all prediction markets for a specific wallet address.
Shows per-market PnL including buy costs, sell proceeds, and redemption values.

**What it helps to answer:**

1. **What is a trader's total PnL across all prediction markets?**
2. **Which markets has this address traded, and what were the results?**
3. **Does this trader have unrealized positions?**

## Request body

- PnlByAddressRequest — Request for PnL by address endpoint.
  - `address` string, required — Wallet address (hex, with or without 0x prefix)
  - `pagination` PaginationRequest — Pagination parameters for API requests.
    - `page` integer — Page number (1-based)
    - `per_page` integer — Number of records per page (max 1000)
  - `order_by` SortOrderPnlByAddressSortField[] — Sort order
    - `field` 'total_pnl_usd', required — Sortable fields for PnL by address endpoint.
    - `direction` 'ASC' | 'DESC', required — Enum for sort directions.

## Response `200`

PnL by address data

- PnlByAddressResponse — Response for PnL by address endpoint.
  - `pagination` PaginationInfo — Pagination information for API responses.
    - `page` integer — Current page number
    - `per_page` integer — Number of records per page
    - `is_last_page` boolean — Whether this is the last page
  - `data` PnlByAddressItem[], required — List of PnL by address records
    - `address` string — Trader address (hex)
    - `market_id` string — Market ID
    - `question` string — Market question
    - `event_id` string — Parent event ID
    - `event_title` string — Parent event title
    - `side_held` string — Side held (Yes/No)
    - `net_buy_cost_usd` number — Net buy cost in USD
    - `net_sell_proceeds_usd` number — Net sell proceeds in USD
    - `redemption_value_usd` number — Redemption value in USD
    - `unrealized_value_usd` number — Unrealized value in USD
    - `total_pnl_usd` number — Total PnL in USD
    - `market_resolved` boolean — Whether market is resolved

## Other responses

- `400` — Bad Request - Invalid request parameters or malformed request
- `401` — Authentication error - No API key found in request
- `402` — Payment Required - This endpoint supports pay-per-request via x402 and MPP. x402 responses advertise payment options in `Payment-Required`; MPP responses advertise a fresh `WWW-Authenticate: Payment ...` challenge. Successful MPP responses may include `Payment-Receipt`.
- `403` — Forbidden - User does not have required subscription tier or has exceeded credit limit
- `404` — Not Found - The requested resource was not found
- `422` — Validation error - Invalid request parameters
- `429` — Too Many Requests - Rate limit exceeded
- `500` — Internal Server Error - An unexpected error occurred

---

[API](https://skmtc.net/nansen/apis/nansen-api.md) · [All operations](https://skmtc.net/nansen/apis/nansen-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nansen/nansen-api/versions/02a4d2e7d827/schema)
