# Polymarket User Positions

> Polymarket User Positions is a paid API for AI agents from AIsa MPP Data APIs at api.aisa.one, paid per call via MPP, $0.012/call, status unknown (last checked 2026-10-18).

Returns current prediction market positions held by a specific Ethereum wallet address on Polymarket, including P&L, prices, and redeemability.

## Facts

- Endpoint: GET https://api.aisa.one/apis/v1/polymarket/positions?utm_source=zero.xyz
- Price: $0.012/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-18
- Activations on Zero: 0
- Provider: AIsa MPP Data APIs
- Website: https://aisa.one
- Tags: web-search, financial-data, prediction-markets, weather, travel, data, search
- Canonical page: https://www.zero.xyz/c/aisa-mpp-data-apis-polymarket-user-positions-4b78e970
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__DWVBTZx6u3_ZvMzVjkJV

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability aisa-mpp-data-apis-polymarket-user-positions-4b78e970
```

Example prompt: Show me all the current Polymarket positions for wallet 0x56687bf447db6ffa42ffe2204a05edaa20f55839, sorted by current value descending, and flag any that are redeemable.

## When to prefer this

Use this endpoint when you need to inspect the current open positions of a specific Ethereum wallet on Polymarket, including P&L metrics, redeemability status, and position sizing. Prefer this over Polymarket's leaderboard endpoint when you need per-position detail for a single address rather than aggregate rankings.

## Known failure modes

- Invalid Ethereum address format (not 0x + 40 hex chars) returns validation error
- No positions found returns empty array
- Mutually exclusive market and eventId both provided causes error
- Offset exceeds 10000 maximum returns error
- Network or upstream Polymarket API unavailability causes timeout or 5xx error

## How this service works

Returns current positions for a user.

<!-- aisa-pricing:start -->
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Output

An array of position objects for the specified wallet, each containing the market title, outcome bet on, position size in tokens, average entry price, current price, initial and current USDC values, cash and percent P&L, realized P&L, gross initial value with entry fees, whether the position is redeemable or mergeable, the condition ID, end date, and negative risk flag.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "user"
 ],
 "properties": {
  "user": {
   "type": "string",
   "example": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
   "pattern": "^0x[a-fA-F0-9]{40}$",
   "description": "User address (required)"
  },
  "limit": {
   "type": "integer",
   "default": 100,
   "maximum": 500,
   "minimum": 0
  },
  "title": {
   "type": "string",
   "maxLength": 100
  },
  "market": {
   "type": "array",
   "items": {
    "type": "string",
    "example": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
    "pattern": "^0x[a-fA-F0-9]{64}$",
    "description": "0x-prefixed 64-hex string"
   },
   "description": "Comma-separated list of condition IDs. Mutually exclusive with eventId."
  },
  "offset": {
   "type": "integer",
   "default": 0,
   "maximum": 10000,
   "minimum": 0
  },
  "sortBy": {
   "enum": [
    "CURRENT",
    "INITIAL",
    "TOKENS",
    "CASHPNL",
    "PERCENTPNL",
    "TITLE",
    "RESOLVING",
    "PRICE",
    "AVGPRICE"
   ],
   "type": "string",
   "default": "TOKENS"
  },
  "eventId": {
   "type": "array",
   "items": {
    "type": "integer",
    "minimum": 1
   },
   "description": "Comma-separated list of event IDs. Mutually exclusive with market."
  },
  "mergeable": {
   "type": "boolean",
   "default": false
  },
  "redeemable": {
   "type": "boolean",
   "default": false
  },
  "sizeThreshold": {
   "type": "number",
   "default": 1,
   "minimum": 0
  },
  "sortDirection": {
   "enum": [
    "ASC",
    "DESC"
   ],
   "type": "string",
   "default": "DESC"
  },
  "includeArchived": {
   "type": "boolean",
   "default": false,
   "description": "Include positions in archived markets that are still active. Archived positions are excluded by default."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "array",
 "items": {
  "type": "object",
  "properties": {
   "icon": {
    "type": "string"
   },
   "size": {
    "type": "number"
   },
   "slug": {
    "type": "string"
   },
   "asset": {
    "type": "string"
   },
   "title": {
    "type": "string"
   },
   "cashPnl": {
    "type": "number"
   },
   "endDate": {
    "type": "string"
   },
   "outcome": {
    "type": "string"
   },
   "avgPrice": {
    "type": "number"
   },
   "curPrice": {
    "type": "number"
   },
   "eventSlug": {
    "type": "string"
   },
   "mergeable": {
    "type": "boolean"
   },
   "percentPnl": {
    "type": "number"
   },
   "redeemable": {
    "type": "boolean"
   },
   "conditionId": {
    "type": "string",
    "example": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
    "pattern": "^0x[a-fA-F0-9]{64}$",
    "description": "0x-prefixed 64-hex string"
   },
   "proxyWallet": {
    "type": "string",
    "example": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
    "pattern": "^0x[a-fA-F0-9]{40}$",
    "description": "User Profile Address (0x-prefixed, 40 hex chars)"
   },
   "realizedPnl": {
    "type": "number"
   },
   "totalBought": {
    "type": "number"
   },
   "currentValue": {
    "type": "number"
   },
   "initialValue": {
    "type": "number"
   },
   "negativeRisk": {
    "type": "boolean"
   },
   "outcomeIndex": {
    "type": "integer"
   },
   "entryFeesUsdc": {
    "type": "number",
    "description": "Attributed BUY-fee component of `grossInitialValue`, at six-decimal source precision. SELL fees are exit costs and are never included. Returned as an explicit `0` when the fee component is zero. Optional: treat an omitted field as unavailable rather than as zero."
   },
   "oppositeAsset": {
    "type": "string"
   },
   "oppositeOutcome": {
    "type": "string"
   },
   "grossInitialValue": {
    "type": "number",
    "description": "Remaining entry basis including attributed BUY fees, at six-decimal source precision. `initialValue` and `avgPrice` keep their fee-exclusive semantics, so the fee-exclusive basis is `grossInitialValue - entryFeesUsdc`. Optional: treat an omitted field as unavailable rather than as zero."
   },
   "percentRealizedPnl": {
    "type": "number"
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/aisa-mpp-data-apis-polymarket-user-positions-4b78e970/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.aisa.one](https://www.zero.xyz/host/api.aisa.one/llms.txt)
