> ## Documentation Index
> Fetch the complete documentation index at: https://docs.struct.to/llms.txt
> Use this file to discover all available pages before exploring further.

# Get combo holders

> Retrieve holders of one combo side position from the Polymarket holders engine. Pass the combo row's `yes_position_id` or `no_position_id` from `/polymarket/combos` or `/polymarket/combos/metrics`; do not pass a leg `position_id` or `condition_id`. Set `include_pnl=true` to include a per-holder `pnl` object for this combo side. Combo holder state is stored separately from normal position holder state and is sorted by combo position balance descending.



## OpenAPI

````yaml https://api.struct.to/openapi.json get /polymarket/combos/{position_id}/holders
openapi: 3.1.0
info:
  title: Polymarket API
  description: >-
    RESTful API for querying Polymarket prediction markets data including
    events, markets, traders, holders, and real-time metrics
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.struct.to/v1
security: []
paths:
  /polymarket/combos/{position_id}/holders:
    get:
      tags:
        - Combos
      summary: Get combo holders
      description: >-
        Retrieve holders of one combo side position from the Polymarket holders
        engine. Pass the combo row's `yes_position_id` or `no_position_id` from
        `/polymarket/combos` or `/polymarket/combos/metrics`; do not pass a leg
        `position_id` or `condition_id`. Set `include_pnl=true` to include a
        per-holder `pnl` object for this combo side. Combo holder state is
        stored separately from normal position holder state and is sorted by
        combo position balance descending.
      operationId: get_combo_holders
      parameters:
        - name: position_id
          in: path
          description: >-
            Combo side position ID: the `yes_position_id` or `no_position_id`
            returned by `/polymarket/combos` or `/polymarket/combos/metrics`
            (ERC1155 token ID, decimal or 0x-prefixed hex). Do not use leg
            position IDs.
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: 'Results limit (default: 50, max: 500)'
          required: false
          schema:
            type: integer
            format: int32
        - name: pagination_key
          in: query
          description: Cursor from the previous response
          required: false
          schema:
            type: string
        - name: min_shares
          in: query
          description: Minimum combo balance held, in decimal shares
          required: false
          schema:
            type: string
        - name: max_shares
          in: query
          description: Maximum combo balance held, in decimal shares
          required: false
          schema:
            type: string
        - name: include_pnl
          in: query
          description: 'Include nested holder PnL data for this combo side (default: false)'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Combo holders sorted by balance descending
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboHoldersResponse'
        '400':
          description: Invalid parameter
components:
  schemas:
    ComboHoldersResponse:
      type: object
      required:
        - position_id
        - total_holders
        - holders
      properties:
        position_id:
          type: string
          description: >-
            Combo side position ID that was queried (`yes_position_id` or
            `no_position_id`).
        condition_id:
          type:
            - string
            - 'null'
          description: Combo condition ID this side position belongs to.
        outcome_name:
          type:
            - string
            - 'null'
          description: Outcome name (`Yes` or `No`).
        outcome_index:
          type:
            - integer
            - 'null'
          format: int32
          description: Outcome index (`0` = Yes, `1` = No).
        total_holders:
          type: integer
          description: Total unique holders for this combo position.
          minimum: 0
        holders:
          type: array
          items:
            $ref: '#/components/schemas/ComboHolder'
          description: Holders sorted by combo position balance descending.
    ComboHolder:
      type: object
      required:
        - wallet
        - balance
        - balance_raw
      properties:
        wallet:
          type: string
          description: Holder wallet address.
        balance:
          type: number
          format: double
          description: Decimal combo position balance.
        balance_raw:
          type: string
          description: Raw combo position balance before decimals.
        pnl:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PositionHolderPnl'
              description: Position-level PnL for this holder on the queried combo side.
    PositionHolderPnl:
      type: object
      description: Position-level PnL for a holder, included when `include_pnl=true`.
      properties:
        total_buys:
          type:
            - integer
            - 'null'
          format: int64
          description: Total buys.
        total_sells:
          type:
            - integer
            - 'null'
          format: int64
          description: Total sells.
        total_shares_bought:
          type:
            - number
            - 'null'
          format: double
          description: Total shares bought.
        total_shares_sold:
          type:
            - number
            - 'null'
          format: double
          description: Total shares sold.
        total_buy_usd:
          type:
            - number
            - 'null'
          format: double
          description: Total buy in USD.
        total_sell_usd:
          type:
            - number
            - 'null'
          format: double
          description: Total sell in USD.
        redemption_usd:
          type:
            - number
            - 'null'
          format: double
          description: Redemption in USD.
        merge_usd:
          type:
            - number
            - 'null'
          format: double
          description: |-
            Merge proceeds (combining outcome tokens back to collateral).
            Counted toward realized PnL alongside sells and redemptions.
        convert_collateral_usd:
          type:
            - number
            - 'null'
          format: double
          description: Convert collateral in USD.
        converted_count:
          type:
            - integer
            - 'null'
          format: int64
          description: Converted count.
        converted_shares_gained:
          type:
            - number
            - 'null'
          format: double
          description: Converted shares gained.
        converted_shares_lost:
          type:
            - number
            - 'null'
          format: double
          description: Converted shares lost.
        avg_entry_price:
          type:
            - number
            - 'null'
          format: double
          description: Average entry price.
        avg_exit_price:
          type:
            - number
            - 'null'
          format: double
          description: Average exit price.
        avg_price:
          type:
            - number
            - 'null'
          format: double
          description: Volume-weighted average trade price across buys + sells.
        realized_pnl_usd:
          type: number
          format: double
          description: Realized PnL in USD.
        total_pnl_usd:
          type: number
          format: double
          description: Total PnL in USD.
        unrealized_pnl_usd:
          type: number
          format: double
          description: Unrealized PnL in USD.
        total_fees:
          type:
            - number
            - 'null'
          format: double
          description: Total fees.
        first_trade_at:
          type:
            - integer
            - 'null'
          format: int64
          description: First trade at timestamp.
        last_trade_at:
          type:
            - integer
            - 'null'
          format: int64
          description: Last trade at timestamp.
        last_traded_price:
          type:
            - number
            - 'null'
          format: double
          description: Last traded price.
        realized_pnl_pct:
          type:
            - number
            - 'null'
          format: double
          description: Realized PnL percent.
        total_pnl_pct:
          type:
            - number
            - 'null'
          format: double
          description: Total PnL percent.
        won:
          type:
            - boolean
            - 'null'
          description: Won.
        redeemable:
          type:
            - boolean
            - 'null'
          description: Redeemable.
        mergeable:
          type:
            - boolean
            - 'null'
          description: Mergeable.

````