Skip to main content
GET
/
v0
/
user
/
{address}
/
positions
# Hosted reads need: pmxt_api_key + wallet_address (private_key is only required for writes).
import pmxt

client = pmxt.Polymarket(
    pmxt_api_key="YOUR_PMXT_API_KEY",
    wallet_address="0xYourWallet",
)
for position in client.fetch_positions():
    print(position.market_id, position.shares, position.current_value)
[
  {
    "shares": 123,
    "current_price": 123,
    "current_value": 123,
    "outcome_label": "<string>",
    "entry_price": 123,
    "realized_pnl": 123
  }
]
Available on: Polymarket, Opinion, Limitless. Other venues raise NotSupported in hosted mode — for those, run a local PMXT service.
Use any EVM private key. Your USDC sits in a non-custodial PreFundedEscrow on Polygon — the single funding location for every hosted venue (including Opinion, which PMXT settles cross-chain for you). PMXT cannot move funds without your EIP-712 signature.

Authorizations

Authorization
string
header
required

Required when calling the hosted API directly (curl, requests, fetch). SDK users pass credentials via constructor params instead.

Path Parameters

address
string
required

EVM wallet address.

Response

Positions list.

venue
enum<string>
required

Venue the position is held on. Defaults to polymarket for tokens whose source venue could not be inferred.

Available options:
polymarket,
opinion
shares
number
required

Outcome shares held -- the ERC-1155 (or Opinion-native) token balance held by the PMXT PreFundedEscrow on behalf of the wallet.

current_price
number | null

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 | null

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 | null

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 | null

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 | null

Always null in this release. Derivation requires lot-level matching of sell fills, which is not yet implemented.