Skip to main content
GET
/
v1
/
wallets
/
{address}
/
portfolio
Get wallet portfolio
curl --request GET \
  --url https://api.zerion.io/v1/wallets/{address}/portfolio \
  --header 'Authorization: Basic <encoded-value>'
{
  "links": {
    "self": "https://api.zerion.io/v1/wallets/0x42b9df65b219b3dd36ff330a4dd8f327a6ada990/portfolio"
  },
  "data": {
    "type": "portfolio",
    "id": "0x42b9df65b219b3dd36ff330a4dd8f327a6ada990",
    "attributes": {
      "positions_distribution_by_type": {
        "wallet": 1864.774102420957,
        "deposited": 78.04192492782934,
        "borrowed": 0.9751475798305564,
        "locked": 5.780032725068765,
        "staked": 66.13183205505294
      },
      "positions_distribution_by_chain": {
        "arbitrum": 458.3555051522226,
        "aurora": 72.01031337463428,
        "avalanche": 17.128850607339444,
        "base": 55.01550749900544,
        "binance-smart-chain": 5.561075880033699,
        "celo": 31.293849330045006,
        "ethereum": 1214.009900354964,
        "fantom": 84.58514074264951,
        "linea": 8.258227109505139,
        "optimism": 573.032664994399,
        "polygon": 64.31407562634853,
        "xdai": 113.1679493137936,
        "zksync-era": 9.451002156306377
      },
      "total": {
        "positions": 2017.4858230069574
      },
      "changes": {
        "absolute_1d": 102.0271468171374,
        "percent_1d": 5.326512552079021
      }
    }
  }
}

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Path Parameters

address
required

The web3 wallet address A wallet address, which can be either an EVM or Solana address

Pattern: ^0x[a-fA-F0-9]{40}$
Example:

"0x42b9df65b219b3dd36ff330a4dd8f327a6ada990"

Query Parameters

filter[positions]
enum<string>
default:only_simple

This parameter allows to customize the aggregation of DeFi positions within a portfolio based on their types. The aggregation can include:

  • only_simple: Only includes wallet-type positions, which are basic, non-protocol related assets. This is the default selection if the parameter is not specified.
  • only_complex: Aggregates positions associated with DeFi protocols only (e.g., staked assets, liquidity pools), like Uniswap or Aave, excluding simple wallet positions.
  • no_filter: Provides an aggregated view of both protocol-related and simple wallet positions without any filtering.

The selection of filters affects the composition of the aggregated portfolio results, allowing for tailored analysis and reporting based on the types of positions of interest.

⚠️ Note: Enterprise usage of this API may be subject to different pricing models depending on the selected filter type. For detailed pricing information, please contact api@zerion.io.

Available options:
only_simple,
only_complex,
no_filter
currency
enum<string>
default:usd

Denominated currency value of returned prices

Available options:
eth,
btc,
usd,
eur,
krw,
rub,
gbp,
aud,
cad,
inr,
jpy,
nzd,
try,
zar,
cny,
chf
sync
boolean
default:false

Controls whether the endpoint should trigger a synchronous position data refresh before responding.

  • true: Triggers a position sync and waits up to 30 seconds for portfolio data to be refreshed from the blockchain before responding. If data is ready sooner, the response is returned immediately. If data is not ready within 30 seconds, a timeout error may occur.
  • false (default): The endpoint returns immediately with cached portfolio data without triggering any position sync.

NOTE: When using sync=true, be prepared to handle longer response times (up to 30 seconds). Ensure your client timeout settings accommodate this duration.

Response

Response for requested wallet's portfolio

data
object
required