# Polymarket Wallet Open Positions

> Polymarket Wallet Open Positions is a paid API for AI agents from 2s.io, paid per call via x402, $0.012/call, status unknown (last checked 2026-09-15).

Returns all open prediction market positions for a given Polymarket wallet address, including P&L, share sizes, and redeemability status.

## Facts

- Endpoint: GET https://2s.io/api/predict/positions
- Price: $0.012/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/polymarket-wallet-open-positions-9aba80ae
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_wRsTJEZcKxbOh8eF1_c1Y

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 polymarket-wallet-open-positions-9aba80ae
```

Example prompt: Pull up all the open Polymarket positions for wallet address 0x1234abcd...wxyz — show me the market titles, share sizes, average vs current price, and unrealized P&L for each, up to 100 positions.

## When to prefer this

Use this endpoint when you need to inspect any Polymarket trader's current open book — e.g. analyzing a whale's positions from a leaderboard, auditing a specific wallet's exposure, or computing portfolio-level P&L across prediction markets. Prefer this over on-chain reads when you need enriched price and P&L metadata without building your own calculation layer.

## Known failure modes

- Invalid or malformed wallet address returns an error or empty result
- Wallet has no open positions — returns empty array
- Limit parameter out of range (must be 1–500) causes validation error
- Polymarket Data API downtime causes 5xx or timeout
- Address is a main wallet rather than proxy address — may return no results

## How this service works

A wallet's open Polymarket positions. Pass the wallet (proxy) address; cap with limit. Each position returns the market title + outcome, share size, average vs current price, initial vs current USD value, unrealized USD P&L and percent P&L, whether it's redeemable, and the conditionId/slug. For inspecting any trader's live book (e.g. a wallet from predict.leaderboard or predict.whales). Read-only from Polymarket's Data API.

## Output

A list of open positions for the specified wallet, each containing market title and outcome label, number of shares held, average purchase price vs current market price, initial and current USD value, unrealized dollar P&L and percentage P&L, whether the position is redeemable, and the conditionId and market slug for reference.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "queryParams"
   ],
   "properties": {
    "type": {
     "const": "http"
    },
    "method": {
     "const": "GET"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "limit": {
       "type": "integer",
       "maximum": 500,
       "minimum": 1,
       "description": "Max positions (default 50)."
      },
      "address": {
       "type": "string",
       "maxLength": 60,
       "minLength": 8,
       "description": "Wallet (proxy) address."
      }
     },
     "additionalProperties": false
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "schema": {
  "type": "object",
  "required": [
   "ok",
   "items",
   "total",
   "source"
  ],
  "properties": {
   "ok": {
    "enum": [
     true
    ],
    "type": "boolean"
   },
   "meta": {
    "type": "object",
    "required": [
     "address",
     "count"
    ],
    "properties": {
     "count": {
      "type": "integer"
     },
     "address": {
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "items": {
    "type": "array",
    "items": {
     "type": "object",
     "required": [
      "title",
      "outcome",
      "size",
      "avgPrice",
      "curPrice",
      "initialValueUsd",
      "valueUsd",
      "pnlUsd",
      "percentPnl",
      "redeemable",
      "conditionId",
      "slug"
     ],
     "properties": {
      "size": {
       "type": "number",
       "nullable": true
      },
      "slug": {
       "type": "string",
       "nullable": true
      },
      "title": {
       "type": "string",
       "nullable": true
      },
      "pnlUsd": {
       "type": "number",
       "nullable": true
      },
      "outcome": {
       "type": "string",
       "nullable": true
      },
      "avgPrice": {
       "type": "number",
       "nullable": true
      },
      "curPrice": {
       "type": "number",
       "nullable": true
      },
      "valueUsd": {
       "type": "number",
       "nullable": true
      },
      "percentPnl": {
       "type": "number",
       "nullable": true
      },
      "redeemable": {
       "type": "boolean"
      },
      "conditionId": {
       "type": "string",
       "nullable": true
      },
      "initialValueUsd": {
       "type": "number",
       "nullable": true
      }
     },
     "additionalProperties": false
    }
   },
   "total": {
    "type": "integer",
    "nullable": true,
    "description": "Total matching rows upstream; null when unknown."
   },
   "source": {
    "type": "object",
    "required": [
     "provider",
     "url",
     "license"
    ],
    "properties": {
     "url": {
      "type": "string"
     },
     "license": {
      "type": "string"
     },
     "provider": {
      "type": "string"
     }
    },
    "additionalProperties": false
   }
  },
  "additionalProperties": false
 },
 "example": {
  "ok": true,
  "meta": {
   "count": 1,
   "address": "example"
  },
  "items": [
   {
    "size": 1,
    "slug": "example",
    "title": "example",
    "pnlUsd": 1,
    "outcome": "example",
    "avgPrice": 1,
    "curPrice": 1,
    
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/polymarket-wallet-open-positions-9aba80ae/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 2s.io](https://www.zero.xyz/host/2s.io/llms.txt)
