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

# Get open positions

> Retrieve aggregated open (unsettled) positions grouped by bookmaker, account, or userRef.

Returns the number of open bets, total stake, and average price for each group.
Only includes bets with `betStatus` in (PLACED, CONFIRMED) and `settlementStatus` = UNSETTLED.

**Group by options:**
- `bookmaker` (default) — Group by bookmaker
- `account` — Group by bookmaker account
- `userRef` — Group by user reference

**Filters:**
- `bookmaker` — Filter to a specific bookmaker
- `userRef` — Filter to a specific user reference
- `account` — Filter to a specific account



## OpenAPI

````yaml /zh/abp-api/openapi.json get /positions
openapi: 3.1.0
info:
  title: ABP v2 - Automated Bet Placing API
  description: >

    Place bets across 32 bookmakers through a single API.


    ## Authentication


    All endpoints require the `x-api-key` header (except `/health`, `/ready`,
    `/status`, `/metrics`).


    **Swagger UI**: Click the **Authorize** button (lock icon) at the top right,
    enter your API key, and click **Authorize**.


    ## Quick Start


    1. **List your accounts**: `GET /accounts`

    2. **Get live odds**: `GET /betslip?fixtureId=...&outcomeId=...&playerId=0`

    3. **Place an order**: `POST /place-orders`

    4. **Track results**: `GET /orders` or subscribe to WebSocket updates


    ## WebSocket


    Connect to `/ws` for real-time order, bet, and settlement updates.


    ```json

    {"type": "login", "apiKey": "your-api-key", "channels": []}

    ```


    Send an empty `channels` array to receive all updates. Available channels:
    `orders`, `bets`, `settlements`, `accounts`, `balance`, `betslip`,
    `fixtures`, `currencies`, `status`, `emergency`.


    Send `{"type": "ping"}` every 30 seconds to keep the connection alive.
  version: '2.0'
servers:
  - url: https://v2.55-tech.com
    description: Production
security:
  - apiKey: []
tags:
  - name: Orders
    description: Place, retrieve, and cancel betting orders
  - name: Bets
    description: Query individual bets placed with bookmakers
  - name: Betslip
    description: Get live odds and metadata for fixtures
  - name: Accounts
    description: Manage bookmaker accounts
  - name: Markets
    description: Get available markets and odds types
  - name: Bookmakers
    description: List supported bookmakers
  - name: Analytics
    description: Positions and profit/loss analytics
paths:
  /positions:
    get:
      tags:
        - Analytics
      summary: Get open positions
      description: >-
        Retrieve aggregated open (unsettled) positions grouped by bookmaker,
        account, or userRef.


        Returns the number of open bets, total stake, and average price for each
        group.

        Only includes bets with `betStatus` in (PLACED, CONFIRMED) and
        `settlementStatus` = UNSETTLED.


        **Group by options:**

        - `bookmaker` (default) — Group by bookmaker

        - `account` — Group by bookmaker account

        - `userRef` — Group by user reference


        **Filters:**

        - `bookmaker` — Filter to a specific bookmaker

        - `userRef` — Filter to a specific user reference

        - `account` — Filter to a specific account
      operationId: get_positions
      parameters:
        - name: groupBy
          in: query
          required: false
          schema:
            type: string
            default: bookmaker
            enum:
              - bookmaker
              - account
              - userRef
          description: 'Group positions by: bookmaker, account, or userRef'
        - name: bookmaker
          in: query
          required: false
          schema:
            type: string
            nullable: true
          description: Filter by bookmaker slug
        - name: userRef
          in: query
          required: false
          schema:
            type: string
            nullable: true
          description: Filter by user reference
        - name: account
          in: query
          required: false
          schema:
            type: string
            nullable: true
          description: Filter by account username
      responses:
        '200':
          description: Successfully retrieved positions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionsResponse'
              example:
                status: success
                groupBy: bookmaker
                positions:
                  - bookmaker: pinnacle
                    openBets: 5
                    totalStake: 250
                    avgPrice: 1.92
                    fixtureIds: 3
                  - bookmaker: sharpbet
                    openBets: 2
                    totalStake: 80
                    avgPrice: 2.15
                    fixtureIds: 2
                count: 2
                totalStake: 330
                totalOpenBets: 7
        '400':
          description: Invalid parameters
        '401':
          description: Unauthorized
        '503':
          description: Database unavailable
components:
  schemas:
    PositionsResponse:
      type: object
      properties:
        status:
          type: string
        groupBy:
          type: string
        positions:
          type: array
          items:
            $ref: '#/components/schemas/PositionEntry'
        count:
          type: integer
        totalStake:
          type: number
        totalOpenBets:
          type: integer
    PositionEntry:
      type: object
      properties:
        bookmaker:
          type: string
          nullable: true
        account:
          type: string
          nullable: true
        userRef:
          type: string
          nullable: true
        openBets:
          type: integer
          description: Number of open bets
        totalStake:
          type: number
          description: Total stake amount
        avgPrice:
          type: number
          nullable: true
          description: Average placed price
        fixtureIds:
          type: integer
          nullable: true
          description: Number of distinct orders
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Contact contact@55-tech.com to obtain a key.

````