---
title: "Fetch Positions"
method: GET
path: "/v0/user/{address}/positions"
tags: ["Orders & Positions"]
---

# Fetch Positions

`GET /v0/user/{address}/positions`

List the open positions held by `address` across Polymarket, Opinion, and Limitless. Each position carries the market, outcome, share count, and average entry price.

Mark-to-market fields (`current_price`, `current_value`, `unrealized_pnl`) are reserved for a future release and currently return `null`.

## Path parameters

- `address` string, required

## Response `200`

Positions list.

- PositionV0[]
  - `venue` 'polymarket' | 'opinion' | 'limitless', required — Venue the position is held on. Defaults to `polymarket` for tokens whose source venue could not be inferred.
  - `shares` number, required — Outcome shares held -- the ERC-1155, Opinion-native, or Limitless token balance held by the PMXT PreFundedEscrow on behalf of the wallet.
  - `current_price` number, nullable — Current mark price in probability units [0, 1]. Always `null` in this release -- server-side orderbook mark-to-market is not yet batched (even with `with_mtm=true`).
  - `current_value` number, nullable — Current mark-to-market value in USDC dollars (`shares * current_price`). Always `null` in this release for the same reason as `current_price`.
  - `outcome_label` string, nullable — Human-readable outcome name (e.g. `Yes`), enriched from the user's recorded buy fills. `null` when the user has no fill history for this token in the operator DB.
  - `entry_price` number, nullable — Cost-basis approximation: sum(buy USDC) / sum(buy shares) across all of the user's buy fills for this token, in USDC-per-share. Ignores sells -- lot-level matching is not yet implemented. `null` when there are no recorded buy fills.
  - `realized_pnl` number, nullable — Always `null` in this release. Derivation requires lot-level matching of sell fills, which is not yet implemented.

## Other responses

- `401` — Invalid or missing PMXT API key.
- `503` — Catalog or indexer temporarily unavailable.

## Changes

- **2026-06-24** `6784cc7c8376` — 1 warning
  - added the new `limitless` enum value to the `items/venue` response property for the response status `200`
- **2026-06-09** `6c1e54fea3a3` — 2 info
  - api tag `Orders & Positions` added
  - api tag `Orders & Positions (Hosted)` removed
- **2026-06-09** `d2fae1223132` — 2 warning
  - removed the optional property `items/market_id` from the response with the `200` status
  - removed the optional property `items/outcome_id` from the response with the `200` status

[Change history](https://skmtc.dev/pmxt-dev/apis/pmxt-hosted-router-api/changes/v0/user/:address/positions/get.md)

---

[API](https://skmtc.dev/pmxt-dev/apis/pmxt-hosted-router-api.md) · [All operations](https://skmtc.dev/pmxt-dev/apis/pmxt-hosted-router-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pmxt-dev/pmxt-hosted-router-api/revisions/9ee3cbe2dc87/schema)
