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

# Get open positions



## OpenAPI

````yaml https://vooi-api-app.fly.dev/swagger/json get /exchange/positions
openapi: 3.1.0
info:
  title: VOOI API
  description: Unified perps API
  version: '1.0'
  contact: {}
servers:
  - url: https://perps-api.vooi.io
security: []
tags: []
paths:
  /exchange/positions:
    get:
      tags:
        - Exchange
      summary: Get open positions
      operationId: ExchangeController_getPositions
      parameters:
        - name: exchanges
          required: false
          in: query
          schema:
            anyOf:
              - type: string
                enum:
                  - aster
                  - binance
                  - bybit
                  - extended
                  - gate
                  - hyperliquid
                  - lighter
                  - mexc
                  - ondo
                  - robinhood
                description: Supported perpetual exchange
              - type: array
                items:
                  type: string
                  enum:
                    - aster
                    - binance
                    - bybit
                    - extended
                    - gate
                    - hyperliquid
                    - lighter
                    - mexc
                    - ondo
                    - robinhood
                  description: Supported perpetual exchange
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GetPositionsDto'
        '503':
          description: ExchangeApiError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDTO'
      security:
        - bearer: []
components:
  schemas:
    GetPositionsDto:
      type: object
      properties:
        baseSymbol:
          type: string
          example: ETH
        entryPrice:
          type: string
          example: '1850.50'
        exchange:
          type: string
          enum:
            - aster
            - binance
            - bybit
            - extended
            - gate
            - hyperliquid
            - lighter
            - mexc
            - ondo
            - robinhood
          description: Perpetual exchange
        fundingFee:
          description: Cumulative funding fee paid since position open in quote currency
          example: '-3.25'
          type:
            - string
            - 'null'
        isolatedMargin:
          description: >-
            Margin allocated to this position created in isolated mode, in quote
            currency
          example: '1000.00'
          type:
            - string
            - 'null'
        leverage:
          example: '25'
          type:
            - string
            - 'null'
        liquidationPrice:
          description: Liquidation price in quote currency
          example: '1200.00'
          type:
            - string
            - 'null'
        marginMode:
          type: string
          enum:
            - isolated
            - cross
          description: Margin mode position is opened with
          example: cross
        positionSide:
          type: string
          enum:
            - both
            - long
            - short
        quoteSymbol:
          type: string
          example: USDC
        realizedPnl:
          example: '12.50'
          type:
            - string
            - 'null'
        roe:
          description: Return on equity as a decimal ratio
          example: '0.15'
          type:
            - string
            - 'null'
        side:
          type: string
          enum:
            - buy
            - sell
        size:
          type: string
          example: '0.001'
        unrealizedPnl:
          description: Unrealized PnL in quote currency
          example: '150.25'
          type:
            - string
            - 'null'
        updatedAt:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            - type: 'null'
      required:
        - baseSymbol
        - entryPrice
        - exchange
        - fundingFee
        - isolatedMargin
        - leverage
        - liquidationPrice
        - marginMode
        - positionSide
        - quoteSymbol
        - realizedPnl
        - roe
        - side
        - size
        - unrealizedPnl
        - updatedAt
      title: Position
    ErrorResponseDTO:
      type: object
      properties:
        message:
          type: string
          example: 'Invalid order id: 123'
        statusCode:
          example: 503
          type: number
      required:
        - message
      title: ErrorResponse
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.