---
title: "Get user portfolio"
method: GET
path: "/api/v1/users/{address}/wallet/balances"
tags: ["User"]
---

# Get user portfolio

`GET /api/v1/users/{address}/wallet/balances`

## Path parameters

- `address` string, required — The user account address

## Query parameters

- `with_text` boolean — Include text variation fields
- `with_value` boolean — Calculate and include USD values for amounts, where applicable

## Response `200`

- object
  - `data` object, nullable, required — Object data
    - `balances` WalletBalance[], required — Array of each wallet balance
      - `asset` AssetSpec, required — Provides a unique identifier for an asset for use throughout the Neptune API. IDs are unique across asset domains (contract tokens, native denoms, etc)
        - `id` string, required
        - `group` union, required
          - 'native'
          - 'token'
        - `group_key` string, required
      - `values` union, required
        - object
          - `kind` 'known', required
          - `asset_info` AssetInfo, required — Asset identifiers with associated metadata
            - `asset` AssetSpec, required — Provides a unique identifier for an asset for use throughout the Neptune API. IDs are unique across asset domains (contract tokens, native denoms, etc)
              - …
            - `metadata` AssetMetadata, required — Additional metadata for assets
              - …
            - `classification` union, required — The asset's classification metadata. Assets are classfied to provide context on their usage throughout the Neptune API (e.g. regular assets, neptune receipt tokens, LSTs, etc.) Each asset belongs to only a single classification type. This object contains metadata pertaining to the given classification. While some fields may be common among the distinct classifcations, each classification is distinct and subject to independent change.
              - …
          - `amount` string, required — Wallet balance in native denom.
          - `amount_scaled` string, required — Amount scaled to the asset's standard unit / decimal places.
          - `extra` object, required
            - `text` object, nullable, required — Human-readable field variants. Will not be null when query param `with_text` is `true`.
              - …
            - `value` object, nullable, required — USD values for the corresponding amounts above. Will not be null when query param `with_value` is `true`.
              - …
        - object
          - `kind` 'unknown', required
          - `amount` string, required — Wallet balance in native denom.
    - `total_value` string, nullable — Sum value in USD. Guaranteed null if value calculation is disabled / guaranteed non-null if calculation is enabled. **NOTE:** this only accounts for assets which are internally known & tracked. See the `/assets` endpoint for a list of supported assets.
  - `error` ErrorData, required
    - `scope` union, required
      - 'user'
      - 'client'
      - 'server'
    - `kind` union, required
      - 'invalid_request'
      - 'validation'
      - 'entity_not_found'
      - 'contract'
      - 'internal'
    - `message` string, required — Error message
    - `fields` FieldValidationError[], nullable, required — List of names and error messages for invalid fields. Never NULL when `error.kind == 'validation'`. Always NULL for all other cases.
      - `field` string, required
      - `message` string, required
  - `status` integer, required — Request status
  - `status_text` string, required — Request status text

## Changes

- **2026-03-01** `9048b9a34641` — 6 breaking, 14 info
  - the response property `data` became nullable for the status `200`
  - added `subschema #1: Invalid request, subschema #2: Validation error, subschema #3: Requested entity not found, subschema #4: Contract error, subschema #5: Internal server error` to the `error/anyOf[#/components/schemas/ErrorData]/kind/allOf[#/components/schemas/ErrorKind]/` response property `oneOf` list for the response status `200`
  - added `subschema #1: User error, subschema #2: Client error, subschema #3: Server error` to the `error/anyOf[#/components/schemas/ErrorData]/scope/allOf[#/components/schemas/ErrorScope]/` response property `oneOf` list for the response status `200`
  - the `data` response's property type changed from no type to `object, null` for status `200`
  - …16 more
- **2026-02-25** `e997962d4ed0` — 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the `data/anyOf[#/components/schemas/UserWalletPortfolio]/balances/items/values/allOf[#/components/schemas/WalletValueGroup]/` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `data/anyOf[#/components/schemas/UserWalletPortfolio]/balances/items/values/allOf[#/components/schemas/WalletValueGroup]/` response property `oneOf` list for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/cryptechdev/apis/neptune-api-v2/changes/api/v1/users/:address/wallet/balances/get.md)

---

[API](https://skmtc.dev/cryptechdev/apis/neptune-api-v2.md) · [All operations](https://skmtc.dev/cryptechdev/apis/neptune-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cryptechdev/neptune-api-v2/revisions/8f59b54c563a/schema)
