eToro Balances API

The Balances API from eToro — 6 operation(s) for balances.

Operations 6

GET /api/v1/balances Get aggregated balances #
GET /api/v1/balances/history Get historical balance snapshots #
GET /api/v1/balances/{accountType} Get balances by account type #
GET /api/v1/balances/{accountType}/history Get historical balances by account type #
GET /api/v1/balances/{accountType}/{accountId} Get balance for a specific account #
GET /api/v1/balances/{accountType}/{accountId}/history Get historical balances for a specific account #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/etoro-balances-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

etoro-balances-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Deprecated eToro Public API operations Agent Portfolios Balances API
  version: v1.158.0
  description: Snapshot of API operations that existed in the previous docs OpenAPI file and are no longer present in the current upstream Swagger.
servers:
- url: https://public-api.etoro.com/api/v1
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Balances
paths:
  /api/v1/balances:
    get:
      tags:
      - Balances
      summary: Get aggregated balances
      description: Returns aggregated balances across all account types for the authenticated user. Optionally filter by account type or specify the display currency for totals.
      operationId: getBalances
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 2a284616-e619-4daf-b778-9a6305e36e9a
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: accountTypes
        in: query
        description: 'Optional comma-separated list of account types to include. Valid values: Trading, Cash, Options, Crypto, MoneyFarm, Spaceship.'
        schema:
          type: string
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: includeZeroBalances
        in: query
        description: Whether to include accounts with a zero balance in the response. Defaults to false.
        schema:
          type: boolean
      - name: expand
        in: query
        description: 'Comma-separated list of optional sections to include in the response. Valid values: equityDetails.'
        schema:
          type: string
      responses:
        '200':
          description: Aggregated balances retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBalancesResponse'
        '400':
          description: Bad Request — invalid query parameter value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
  /api/v1/balances/history:
    get:
      tags:
      - Balances
      summary: Get historical balance snapshots
      description: Returns end-of-day balance snapshots across all account types for the authenticated user. History is available for the last 12 months. The maximum date range per request is 365 days.
      operationId: getHistoricalBalances
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: aa34941f-8c0e-47e9-a372-4e3821b845f5
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: fromDate
        in: query
        description: 'Start of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to toDate minus 30 days. Must be within the last 12 months. Maximum range with toDate: 365 days.'
        schema:
          type: string
          format: date
      - name: toDate
        in: query
        description: 'End of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to today (UTC). Maximum range with fromDate: 365 days.'
        schema:
          type: string
          format: date
      - name: accountTypes
        in: query
        description: 'Optional comma-separated list of account types to include. Valid values: Trading, Cash, Options, Crypto, MoneyFarm, Spaceship.'
        schema:
          type: string
      responses:
        '200':
          description: Historical balance snapshots retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetHistoricalBalancesResponse'
        '400':
          description: Bad Request — invalid date range or query parameter value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '404':
          description: Not Found — no historical data found for the specified date range.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
  /api/v1/balances/{accountType}:
    get:
      tags:
      - Balances
      summary: Get balances by account type
      description: Returns balances for a specific account type for the authenticated user. Optionally filter by account IDs.
      operationId: getBalancesByAccountType
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 9bad2f6e-2179-4c3a-9a08-c80b5237d80b
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: accountType
        in: path
        required: true
        description: The account type to retrieve balances for.
        schema:
          $ref: '#/components/schemas/AccountType'
      - name: accountIds
        in: query
        description: Optional comma-separated list of account IDs to include.
        schema:
          type: string
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: includeZeroBalances
        in: query
        description: Whether to include accounts with a zero balance in the response. Defaults to false.
        schema:
          type: boolean
      - name: expand
        in: query
        description: 'Comma-separated list of optional sections to include in the response. Valid values: equityDetails.'
        schema:
          type: string
      responses:
        '200':
          description: Balances for the specified account type retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBalancesResponse'
        '400':
          description: Bad Request — invalid account type or query parameter value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
  /api/v1/balances/{accountType}/history:
    get:
      tags:
      - Balances
      summary: Get historical balances by account type
      description: Returns end-of-day balance snapshots for a specific account type for the authenticated user. History is available for the last 12 months. The maximum date range per request is 365 days.
      operationId: getHistoricalBalancesByAccountType
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: b203aadb-404e-478e-bb90-453ad5bd7c33
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: accountType
        in: path
        required: true
        description: The account type to retrieve historical balances for.
        schema:
          $ref: '#/components/schemas/AccountType'
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: fromDate
        in: query
        description: 'Start of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to toDate minus 30 days. Must be within the last 12 months. Maximum range with toDate: 365 days.'
        schema:
          type: string
          format: date
      - name: toDate
        in: query
        description: 'End of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to today (UTC). Maximum range with fromDate: 365 days.'
        schema:
          type: string
          format: date
      - name: accountIds
        in: query
        description: Optional comma-separated list of account IDs to include.
        schema:
          type: string
      responses:
        '200':
          description: Historical balance snapshots for the specified account type retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetHistoricalBalancesResponse'
        '400':
          description: Bad Request — invalid account type, date range, or query parameter value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '404':
          description: Not Found — no historical data found for the specified account type and date range.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
  /api/v1/balances/{accountType}/{accountId}:
    get:
      tags:
      - Balances
      summary: Get balance for a specific account
      description: Returns the balance for a specific account identified by type and account ID for the authenticated user.
      operationId: getBalanceByAccount
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 79dd59ed-0c79-41c6-8d01-f3bb910fbf74
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: accountType
        in: path
        required: true
        description: The account type.
        schema:
          $ref: '#/components/schemas/AccountType'
      - name: accountId
        in: path
        required: true
        description: The unique identifier of the account.
        schema:
          type: string
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: includeZeroBalances
        in: query
        description: Whether to include accounts with a zero balance in the response. Defaults to false.
        schema:
          type: boolean
      - name: expand
        in: query
        description: 'Comma-separated list of optional sections to include in the response. Valid values: equityDetails.'
        schema:
          type: string
      responses:
        '200':
          description: Balance for the specified account retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBalancesResponse'
        '400':
          description: Bad Request — invalid account type or account ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '404':
          description: Not Found — no account found for the specified type and account ID.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
  /api/v1/balances/{accountType}/{accountId}/history:
    get:
      tags:
      - Balances
      summary: Get historical balances for a specific account
      description: Returns end-of-day balance snapshots for a specific account identified by type and account ID for the authenticated user. History is available for the last 12 months. The maximum date range per request is 365 days.
      operationId: getHistoricalBalanceByAccount
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 2faf6249-c7ab-4057-9760-923619a1a280
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: accountType
        in: path
        required: true
        description: The account type.
        schema:
          $ref: '#/components/schemas/AccountType'
      - name: accountId
        in: path
        required: true
        description: The unique identifier of the account.
        schema:
          type: string
      - name: displayCurrency
        in: query
        description: ISO 4217 currency code for totals and conversions. Defaults to USD.
        schema:
          type: string
          default: USD
      - name: fromDate
        in: query
        description: 'Start of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to toDate minus 30 days. Must be within the last 12 months. Maximum range with toDate: 365 days.'
        schema:
          type: string
          format: date
      - name: toDate
        in: query
        description: 'End of the date range (inclusive). Format: YYYY-MM-DD (ISO 8601). Defaults to today (UTC). Maximum range with fromDate: 365 days.'
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Historical balance snapshots for the specified account retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetHistoricalBalancesResponse'
        '400':
          description: Bad Request — invalid account type, account ID, or date range.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancesErrorResponse'
        '401':
          description: Unauthorized — missing or invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: Unauthorized
                errorMessage: Unauthorized
        '403':
          description: Forbidden — the token does not include the etoro-public:money.balance:read scope.
        '404':
          description: Not Found — no account or historical data found for the specified parameters.
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: TooManyRequests
                errorMessage: Too many requests
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
              example:
                errorCode: UnhandledException
                errorMessage: Global Error
components:
  schemas:
    GetBalancesResponse:
      type: object
      description: Aggregated balances for the authenticated user.
      properties:
        gcid:
          type: integer
          format: int64
          description: The user's global customer ID.
        totalBalance:
          type: number
          format: double
          description: Sum of all account balances converted to the requested display currency.
        displayCurrency:
          type:
          - string
          - 'null'
          description: ISO 4217 currency code used for totalBalance and displayBalance values.
        balances:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/AccountBalanceData'
          description: Individual account balances.
      additionalProperties: false
    GetHistoricalBalancesResponse:
      type: object
      description: Historical end-of-day balance snapshots for the authenticated user.
      properties:
        gcid:
          type: integer
          format: int64
          description: The user's global customer ID.
        displayCurrency:
          type:
          - string
          - 'null'
          description: ISO 4217 currency code used for display values.
        fromDate:
          type: string
          format: date
          description: Start of the returned date range (inclusive, ISO 8601).
        toDate:
          type: string
          format: date
          description: End of the returned date range (inclusive, ISO 8601).
        snapshots:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/HistoricalDailySnapshotData'
          description: End-of-day balance snapshots, one entry per day in the requested range.
      additionalProperties: false
    BalancesErrorResponse:
      type: object
      description: Error response returned for client-side errors (4xx).
      properties:
        code:
          type:
          - string
          - 'null'
          description: Error code (e.g., VALIDATION_ERROR, USER_NOT_FOUND).
        message:
          type:
          - string
          - 'null'
          description: Human-readable error message.
        requestId:
          type:
          - string
          - 'null'
          description: Request ID for tracing and support.
      additionalProperties: false
    PublicErrorResponse:
      type: object
      description: Error response with code and message.
      required:
      - errorCode
      - errorMessage
      properties:
        errorCode:
          type: string
          description: Machine-readable error code.
          example: GeneralError
        errorMessage:
          type: string
          description: Human-readable error message.
          example: Internal server error. Please retry or contact support
    EquityDetailsData:
      type: object
      description: Provider-specific balance details, returned only when the request includes expand=equityDetails. All fields are nullable; only fields relevant to the account's provider are populated. Trading accounts populate available/frozenCash/currentPNL/totalUsedMargin; Crypto accounts populate cryptoId, the balance variants, fiatConversionCurrency, and orderIndex.
      properties:
        available:
          type:
          - number
          - 'null'
          format: double
          description: Available balance or buying power (Trading, Options, MoneyFarm, Cash).
        frozenCash:
          type:
          - number
          - 'null'
          format: double
          description: Cash frozen by the platform pending settlement (Trading).
        currentPNL:
          type:
          - number
          - 'null'
          format: double
          description: Current unrealized profit and loss on open positions (Trading).
        totalUsedMargin:
          type:
          - number
          - 'null'
          format: double
          description: Total margin used by open positions (Trading).
        cryptoId:
          type:
          - integer
          - 'null'
          format: int32
          description: eToro internal crypto asset identifier (Crypto).
        balance:
          type:
          - number
          - 'null'
          format: double
          description: Balance in native crypto units (Crypto).
        totalBalance:
          type:
          - number
          - 'null'
          format: double
          description: Total balance in native crypto units, including pending (Crypto).
        spendableBalance:
          type:
          - number
          - 'null'
          format: double
          description: Spendable balance in native crypto units (Crypto).
        balanceInFiat:
          type:
          - number
          - 'null'
          format: double
          description: Balance converted to fiat (Crypto).
        totalBalanceInFiat:
          type:
          - number
          - 'null'
          format: double
          description: Total balance converted to fiat, including pending (Crypto).
        spendableBalanceInFiat:
          type:
          - number
          - 'null'
          format: double
          description: Spendable balance converted to fiat (Crypto).
        fiatConversionCurrency:
          type:
          - string
          - 'null'
          description: ISO 4217 currency code used for the InFiat values (Crypto).
        orderIndex:
          type:
          - integer
          - 'null'
          format: int32
          description: Display order index for sorting (Crypto).
      additionalProperties: false
    HistoricalDailySnapshotData:
      type: object
      description: End-of-day balance snapshot for a specific date.
      properties:
        date:
          type: string
          format: date
          description: The snapshot date (ISO 8601).
        totalCurrencyIso:
          type:
          - string
          - 'null'
          description: ISO 4217 currency code for the total figures in native currency.
        totalCash:
          type: number
          format: double
          description: Total cash across all accounts in native currency.
        totalInvestedAmount:
          type: number
          format: double
          description: Total invested amount across all accounts in native currency.
        totalPnl:
          type: number
          format: double
          description: Total profit and loss across all accounts in native currency.
        totalBalance:
          type: number
          format: double
          description: Total balance across all accounts in native currency.
        displayTotalCash:
          type: number
          format: double
          description: Total cash converted to the requested display currency.
        displayTotalInvestedAmount:
          type: number
          format: double
          description: Total invested amount converted to the requested display currency.
        displayTotalPnl:
          type: number
          format: double
          description: Total profit and loss converted to the requested display currency.
        displayTotalBalance:
          type: number
          format: double
          description: Total balance converted to the requested display currency.
        totalExchangeRate:
          type: number
          format: double
          description: Exchange rate applied to convert totals to displayCurrency.
        accountSnapshots:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/HistoricalAccountData'
          description: Individual account breakdowns within this snapshot.
      additionalProperties: false
    HistoricalAccountData:
      type: object
      description: Individual account balance within a historical daily snapshot.
      properties:
        accountId:
          type:
          - string
          - 'null'
          description: Unique identifier of the account.
        accountType:
          $ref: '#/components/schemas/AccountType'
        currency:
          type:
          - string
          - 'null'
          description: The account's native currency (ISO 4217).
        cash:
          type: number
          format: double
          description: Cash balance in the account's native currency.
        investedAmount:
          type: number
          format: double
          description: Invested amount in the account's native currency.
        pnl:
          type: number
          format: double
          description: Profit and loss in the account's native currency.
        total:
          type: number
          format: double
          description: Total balan

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/etoro/refs/heads/main/openapi/etoro-balances-api-openapi.yml