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

# Get Account Balances

> Returns the real-time balance breakdown — available (spendable), suspense (held in open orders), and portfolio (locked in positions).



## OpenAPI

````yaml GET /v1/accounts/{account_id}/balances
openapi: 3.0.3
info:
  title: Predicta Markets API
  description: >-
    The Predicta Markets REST API lets you build on top of a continuous
    double-auction prediction market platform. Users buy and sell shares in
    YES/NO outcomes of real-world events. When a market resolves, holders of the
    winning side receive payouts; holders of the losing side lose their stake.


    Data model hierarchy: Market → MarketAsset → MarketAssetOption (prediction
    key) → Order. A Market is a question about a real-world event (e.g. 'Will
    Arsenal win the Premier League?'). Each Market contains one or more
    MarketAssets — the tradeable outcomes. Simple binary markets have a single
    asset; multi-player markets (e.g. Player of the Match) have one asset per
    candidate. Each MarketAsset exposes two options, YES and NO, each carrying a
    prediction_key — the unique hash you pass when placing an order to identify
    exactly which outcome you are trading.


    Trading flow: (1) call GET /v1/markets to find a market; (2) inspect
    market_assets and their options to get the prediction_key for the outcome
    you want; (3) call POST /v1/markets/{market_id}/orders with that
    prediction_key, your price, and quantity. Orders match immediately when a
    counterparty exists, otherwise they rest as open limit orders in the order
    book.


    Price system: all prices are integers in the range 1–99, representing cents.
    Price equals implied probability in percent — a YES price of 65 means the
    market implies a 65% chance the event will occur. YES and NO prices for the
    same asset always sum to approximately 100.


    Currency: the platform's internal unit is PT (Predicta Token). Balances,
    prices, and payout amounts are expressed in PT unless the market was created
    with a real-currency denomination.


    QID system: many resources expose a human-readable qualified ID (qid)
    alongside the numeric id. QIDs are computed, not stored as database columns.
    Prefix conventions — MA: market, MAA: market asset, AP: account payout. Most
    path parameters accept either the numeric id or the qid interchangeably.


    Authentication: include your API key in the X-Api-Key request header. All
    account-scoped endpoints require authentication. Market listing and detail
    endpoints are public.
  version: 1.0.0
  contact:
    email: api-support@predictamarkets.com
servers:
  - url: https://api.predictamarkets.com
    description: Production
security: []
paths:
  /v1/accounts/{account_id}/balances:
    get:
      tags:
        - Account
      summary: Get Account Balances
      description: >-
        Returns the real-time balance breakdown — available (spendable),
        suspense (held in open orders), and portfolio (locked in positions).
      operationId: get_account_balances
      parameters:
        - name: account_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/TQID'
      responses:
        '200':
          description: Balance breakdown
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBalanceSchema'
              example:
                currency: KES
                suspense: '200.00'
                available: '4300.00'
                portfolio: '0.00'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                detail: Not authenticated
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                detail: You are not authorized to access this account
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - apiKey: []
components:
  schemas:
    TQID:
      anyOf:
        - type: string
        - type: integer
      description: >-
        Flexible identifier type that accepts either a numeric integer ID or a
        human-readable qualified ID string (QID). QIDs follow a prefix
        convention: MA for markets, MAA for market assets, AP for account
        payouts. Most path parameters that accept an ID use this type so callers
        can use whichever form is more convenient.
    AccountBalanceSchema:
      properties:
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
          description: >-
            Currency of the account. Usually PT (Predicta Token) for standard
            accounts. Real-currency accounts show a fiat or crypto code.
        suspense:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Suspense
          description: >-
            Funds currently held in escrow due to open (unmatched) orders. When
            you place a BUY order, price x quantity is moved from available to
            suspense. Suspense is released if the order is cancelled, or
            converted to portfolio value when filled.
        available:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Available
          description: >-
            Spendable balance — funds that are free to use for new orders or
            withdrawals. Calculated as total balance minus suspense.
        portfolio:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Portfolio
          description: >-
            Current value of all open (filled) positions across all markets.
            Increases when YES prices rise on your holdings; decreases when they
            fall. Does not include suspense.
      type: object
      required:
        - currency
        - suspense
        - available
        - portfolio
      title: AccountBalanceSchema
      description: >-
        Real-time balance breakdown for an account, split into three components
        that sum to the account's total holdings.
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
          description: Human-readable error message
      required:
        - detail
      title: ErrorResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
      description: >-
        Returned by FastAPI when request validation fails (HTTP 422). Contains
        one or more ValidationError entries describing each invalid field.
    CurrencyEnum:
      type: string
      enum:
        - NGN
        - USD
        - KES
        - GHS
        - ZAR
        - XOF
        - TZS
        - EUR
        - GBP
        - CAD
        - AUD
        - CHF
        - CNY
        - INR
        - MXN
        - NZD
        - RUB
        - SEK
        - SGD
        - THB
        - TRY
        - UAH
        - VND
        - JPY
        - UGX
        - RWF
        - USDC
        - USDT
        - PT
      title: CurrencyEnum
      description: >-
        ISO currency code or platform token. PT is Predicta's internal token
        used for most markets. USDC and USDT are supported stablecoins. All
        other values are standard ISO 4217 fiat codes.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
          description: >-
            Path to the invalid field as a list of keys and/or array indices.
            For example, ['body', 'price'] indicates the price field in the
            request body failed validation.
        msg:
          type: string
          title: Message
          description: Human-readable explanation of what validation rule was violated.
        type:
          type: string
          title: Error Type
          description: >-
            Machine-readable Pydantic error type (e.g. 'value_error.missing',
            'type_error.integer').
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
      description: >-
        A single field validation failure within an HTTP 422 response. The loc
        array traces the path to the invalid field (e.g. ['body', 'price']).
  responses:
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            detail: An unexpected error occurred. Please try again later.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      x-default: your-api-key-here

````