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

# List open positions

> Returns all open positions, optionally filtered by symbol.



## OpenAPI

````yaml https://terminal-api.novosky.tech/roboforex/main/openapi.json get /positions
openapi: 3.0.3
info:
  description: >-
    Self-hosted HTTP REST API bridging the NOVOSKY trading bot to a MetaTrader 5
    terminal. All bot-to-broker communication goes through this service.
    Authentication is required on all endpoints except `GET /ping`.
  title: MT5 HEADLESS
  version: 1.0.0
servers:
  - url: /
security:
  - bearerAuth: []
tags:
  - description: Health, latency, and error diagnostics
    name: System
  - description: MT5 terminal lifecycle and server time
    name: Terminal
  - description: Broker server time and UTC offset detection
    name: Time
  - description: Live balance, equity, and margin
    name: Account
  - description: Symbol specs, ticks, and OHLCV rates
    name: Symbols
  - description: Open position management
    name: Positions
  - description: Pending order placement and management
    name: Orders
  - description: Closed deals and historical orders
    name: History
paths:
  /positions:
    get:
      tags:
        - Positions
      summary: List open positions
      description: Returns all open positions, optionally filtered by symbol.
      operationId: list_positions
      parameters:
        - description: Filter by symbol (optional)
          in: query
          name: symbol
          required: false
          schema:
            example: BTCUSD
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PositionResponse'
                type: array
          description: Open positions
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Missing or invalid Bearer token
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: MT5 not initialized
components:
  schemas:
    PositionResponse:
      additionalProperties: true
      description: An open position.
      properties:
        comment:
          example: novosky
          type: string
        magic:
          description: EA magic number.
          example: 20250101
          type: integer
        price_current:
          example: 95050
          type: number
        price_open:
          example: 95000
          type: number
        profit:
          description: Floating profit in account currency.
          example: 5
          type: number
        sl:
          example: 94800
          type: number
        swap:
          example: -0.12
          type: number
        symbol:
          example: BTCUSD
          type: string
        ticket:
          example: 123456789
          type: integer
        time:
          description: Position open time as Unix epoch.
          example: 1777879028
          type: integer
        tp:
          example: 95300
          type: number
        type:
          description: 0 = BUY, 1 = SELL.
          example: 0
          type: integer
        volume:
          example: 0.01
          type: number
      type: object
    ErrorResponse:
      additionalProperties: true
      description: MT5 error payload returned on non-2xx responses.
      properties:
        message:
          example: Invalid stops
          type: string
        retcode:
          description: MT5 error code (e.g. 10014 = invalid stops, 10018 = market closed).
          example: 10014
          type: integer
      type: object
  securitySchemes:
    bearerAuth:
      description: Set `API_TOKEN` in `.env` to match the token configured on the server.
      scheme: bearer
      type: http

````