curl --request GET \
--url https://api.zerion.io/v1/wallets/{address}/portfolio \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.zerion.io/v1/wallets/{address}/portfolio"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.zerion.io/v1/wallets/{address}/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zerion.io/v1/wallets/{address}/portfolio"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"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
}
}
}
}{
"errors": [
{
"title": "Parameter is malformed",
"detail": "Some validation errors will be described here"
}
]
}{
"errors": [
{
"title": "Unauthorized Error",
"detail": "The API key is invalid, please, make sure that you are using a valid key"
}
]
}{
"errors": [
{
"title": "Too many requests",
"detail": "Your request had been throttled"
}
]
}Get wallet portfolio
A wallet’s total portfolio value, broken down by chain and position type.
curl --request GET \
--url https://api.zerion.io/v1/wallets/{address}/portfolio \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.zerion.io/v1/wallets/{address}/portfolio"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.zerion.io/v1/wallets/{address}/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zerion.io/v1/wallets/{address}/portfolio"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"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
}
}
}
}{
"errors": [
{
"title": "Parameter is malformed",
"detail": "Some validation errors will be described here"
}
]
}{
"errors": [
{
"title": "Unauthorized Error",
"detail": "The API key is invalid, please, make sure that you are using a valid key"
}
]
}{
"errors": [
{
"title": "Too many requests",
"detail": "Your request had been throttled"
}
]
}Authorizations
Path Parameters
The web3 wallet address. Must be a valid EVM or Solana address. The PnL endpoint additionally requires an address Zerion tracks, and returns 400 otherwise; see that endpoint's description for what that excludes. A wallet address, which can be either an EVM or Solana address
^0x[a-fA-F0-9]{40}$"0x42b9df65b219b3dd36ff330a4dd8f327a6ada990"
Query Parameters
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.
only_simple, only_complex, no_filter Denominated currency value of returned prices
eth, btc, usd, eur, krw, rub, gbp, aud, cad, inr, jpy, nzd, try, zar, cny, chf Was this page helpful?