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

# List positions

> List effective asset holdings, including available and frozen quantities.

<RequestExample>
  ```bash cURL
  curl --request GET \
    --url 'https://api-sandbox.uqpaytech.com/api/v1/stocks/position' \
    --header "Content-Type: application/json" \
    --header "x-auth-token: Bearer ${SANDBOX_TOKEN}"
  ```
</RequestExample>

<ResponseExample>
  ```json 200
  {
    "data": [
      {
        "asset_id": "7453f146-b267-11f1-b4f4-0abd773ba497",
        "available_quantity": "0.00297066689243735",
        "frozen_quantity": "0",
        "quantity": "0.00297066689243735",
        "symbol": "AAPLx",
        "updated_at": "2026-09-21T01:50:53.852Z"
      }
    ],
    "total_items": 1,
    "total_pages": 1
  }
  ```
</ResponseExample>


## OpenAPI

````yaml /stocks/stocks.yaml get /position
openapi: 3.0.3
info:
  title: UQPAY Stocks API
  version: 1.0.0
  description: >-
    Browse assets, request quotes, create orders, and query orders and
    positions. Amounts and quantities use decimal strings.
servers:
  - url: https://api-sandbox.uqpaytech.com/api/v1/stocks
    description: Sandbox
security:
  - AuthToken: []
paths:
  /position:
    get:
      tags:
        - Stocks
      summary: List positions
      description: >-
        List effective asset holdings, including available and frozen
        quantities.
      operationId: listStocksPositions
      parameters:
        - name: page_number
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000000
            default: 1
          description: The page number to retrieve.
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
          description: The maximum number of items to return per page.
        - name: asset_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Asset identifier returned by List assets.
        - name: symbol
          in: query
          required: false
          schema:
            type: string
            maxLength: 32
          description: Filter by asset symbol.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionPage'
              examples:
                sandbox:
                  summary: Sandbox response
                  value:
                    data:
                      - asset_id: 7453f146-b267-11f1-b4f4-0abd773ba497
                        available_quantity: '0.00297066689243735'
                        frozen_quantity: '0'
                        quantity: '0.00297066689243735'
                        symbol: AAPLx
                        updated_at: '2026-09-21T01:50:53.852Z'
                    total_items: 1
                    total_pages: 1
        '400':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            The gateway could not complete the request. For a write, reconcile
            the result before retrying with the same idempotency key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            The request failed. Read type, code, and message in the error
            response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-codeSamples:
        - lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api-sandbox.uqpaytech.com/api/v1/stocks/position' \
              --header "Content-Type: application/json" \
              --header "x-auth-token: Bearer ${SANDBOX_TOKEN}"
components:
  schemas:
    PositionPage:
      type: object
      additionalProperties: false
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Position'
          description: >-
            Items on this page. An empty array can indicate no matches or a page
            beyond the last result.
        total_pages:
          type: integer
          format: int64
          minimum: 0
          description: Number of result pages for the requested page size.
          example: 1
        total_items:
          type: integer
          format: int64
          minimum: 0
          description: Number of matching items across all pages.
          example: 1
      required:
        - data
        - total_pages
        - total_items
    Error:
      type: object
      additionalProperties: false
      required:
        - type
        - code
        - message
      properties:
        type:
          type: string
          description: Error category for classifying the failure.
          pattern: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
        code:
          type: string
          description: >-
            Machine-readable business error code. Use this together with the
            HTTP status; do not match on message text.
          pattern: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
        message:
          type: string
          description: Human-readable explanation of the error.
    Position:
      type: object
      additionalProperties: false
      properties:
        asset_id:
          type: string
          format: uuid
          description: >-
            Asset identifier used across asset, quote, order, and position
            requests.
          example: 7453f146-b267-11f1-b4f4-0abd773ba497
        symbol:
          type: string
          description: Asset symbol.
          example: AAPLx
        quantity:
          type: string
          pattern: ^-?[0-9]+(\.[0-9]+)?$
          description: Total effective asset quantity held by the account.
          example: '0.00297066689243735'
        available_quantity:
          type: string
          pattern: ^-?[0-9]+(\.[0-9]+)?$
          description: >-
            Effective quantity available after subtracting frozen_quantity from
            quantity.
          example: '0.00297066689243735'
        frozen_quantity:
          type: string
          pattern: ^-?[0-9]+(\.[0-9]+)?$
          description: >-
            Effective quantity currently reserved and unavailable for another
            trade.
          example: '0'
        updated_at:
          type: string
          format: date-time
          description: Time the position was last updated.
          example: '2026-09-21T01:50:53.852Z'
      required:
        - asset_id
        - symbol
        - quantity
        - available_quantity
        - frozen_quantity
        - updated_at
  securitySchemes:
    AuthToken:
      type: apiKey
      in: header
      name: x-auth-token
      description: The API token for login provided by UQPAY.

````