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

# My perp positions

> The caller's perp positions. `filter` is `active` (default), `past`, or `all`.



## OpenAPI

````yaml /openapi.json get /api/v1/perps/positions
openapi: 3.1.0
info:
  title: Murmo API
  version: 1.0.0
  description: >-
    REST API for the Murmo trading platform. Spot swaps, prediction markets,
    perpetual futures, social copy-trading groups, portfolio, and chat —
    everything a bot or AI agent needs to trade on Solana with a single API key.


    **The money contract:** every monetary value on the wire is a full-precision
    plain decimal **string** (e.g. `"12.50"`), never a number, never raw base
    units, never scientific notation, never rounded. Send money the same way.
    See the *Money & precision* guide.


    **Auth:** send `Authorization: Bearer murmo_...` on every request. Keys are
    created in the Murmo app.
  contact:
    name: Murmo Support
    email: support@murmo.xyz
servers:
  - url: https://api.alpha-labs.trade
    description: Production
  - url: http://localhost:3000
    description: Local development
security:
  - bearerAuth: []
tags:
  - name: Identity
    description: Who am I, which key is this, and what is my rate budget.
  - name: Account
    description: >-
      Wallet value, balances, holdings, PnL, and the deposit address for funding
      in.
  - name: Spot
    description: Token discovery and group spot proposals.
  - name: Stocks
    description: >-
      Ondo tokenized stocks: the supported-ticker catalog and ticker-based
      trading over the group/proposal flow.
  - name: Predictions
    description: >-
      Polymarket-backed prediction markets: browse events, propose, predict,
      sell, claim.
  - name: Perpetuals
    description: 'Phoenix RISE perps: markets, proposals, open/increase/reduce/close/claim.'
  - name: Groups
    description: 'Copy-trade groups: membership, admin, and auto-follow.'
  - name: Portfolio
    description: Cross-vertical open positions, past positions, and trade history.
  - name: Chat
    description: Group chat over REST (the stateless counterpart to the WebSocket gateway).
paths:
  /api/v1/perps/positions:
    get:
      tags:
        - Perpetuals
      summary: My perp positions
      description: >-
        The caller's perp positions. `filter` is `active` (default), `past`, or
        `all`.
      operationId: listMyPerpPositions
      parameters:
        - name: filter
          in: query
          required: false
          schema:
            type: string
            enum:
              - active
              - past
              - all
            default: active
      responses:
        '200':
          description: Positions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PerpPosition'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    PerpPosition:
      type: object
      description: >-
        A perp position (assignment). Persisted/realized fields and live
        mark/PnL/price fields are all full-precision decimal strings; base-lot
        quantities are strings; structural ints are ints.
      properties:
        id:
          type: string
          description: '= assignmentId'
        userId:
          type: string
        groupId:
          type: string
        proposalId:
          type: string
        subaccountIndex:
          type: integer
        marketSymbol:
          type: string
        side:
          type: string
          enum:
            - LONG
            - SHORT
        status:
          type: string
          description: OPEN | CLOSED | LIQUIDATED | ADL_CLOSED
        openedAt:
          type: string
          format: date-time
        closedAt:
          type: string
          format: date-time
          nullable: true
        initialCollateralUsdc:
          $ref: '#/components/schemas/MoneyString'
        initialLeverage:
          $ref: '#/components/schemas/DecimalString'
        currentSizeBaseLots:
          type: string
          nullable: true
        currentSizeBaseUnits:
          oneOf:
            - $ref: '#/components/schemas/DecimalString'
            - type: 'null'
        positionValueUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        entryPriceUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        exitPriceUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        collateralBalanceUsdc:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        effectiveCollateralUsdc:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        unrealizedPnlUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        unsettledFundingUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        accumulatedFundingUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        liquidationPriceUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        stopLossPriceUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        takeProfitPriceUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        marketStatus:
          type: string
          nullable: true
        closeReason:
          type: string
          nullable: true
        claimedAt:
          type: string
          format: date-time
          nullable: true
        isClaimable:
          type: boolean
        priceRealizedPnlUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        fundingRealizedUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        totalFeesUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        liquidationPenaltyUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        netRealizedPnlUsd:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        finalCollateralReturned:
          oneOf:
            - $ref: '#/components/schemas/MoneyString'
            - type: 'null'
        participantCount:
          type: integer
        participantAvatars:
          type: array
          items:
            type: string
    MoneyString:
      type: string
      description: >-
        A monetary amount as a full-precision plain decimal string in USD —
        never a number, never raw base units, never scientific notation, never
        rounded. Parse with a decimal library; round only for display.
      example: '12.50'
    DecimalString:
      type: string
      description: >-
        A non-money decimal (percentage, ratio, price) as a full-precision plain
        decimal string (never scientific notation).
      example: '4.27'
    Error:
      type: object
      description: >-
        Errors come in two shapes. Coded business errors: `{ message, code }`.
        Generic framework errors: `{ statusCode, message, error }` (message may
        be an array of validation strings).
      properties:
        statusCode:
          type: integer
          example: 400
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          example: Query parameter "groupId" is required
        error:
          type: string
          example: Bad Request
        code:
          type: string
          description: >-
            Stable machine-readable code on business errors (e.g.
            NOT_GROUP_MEMBER, MARKET_NOT_ACTIVE, AMOUNT_BELOW_MINIMUM,
            MIN_ORDER_SIZE, NO_LIQUIDITY, FUNDING_REFUNDED). The full list is
            published as error-catalog.json.
          example: NOT_GROUP_MEMBER
  responses:
    Unauthorized:
      description: Missing or invalid credential.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send your API key as `Authorization: Bearer murmo_...`. Keys are created
        in the Murmo app. Header-only — keys are never read from the query
        string. Valid for the REST API under /api/v1 only (not the GraphQL
        endpoint).

````