Get wallet portfolio
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"
}
]
}wallets
Get wallet portfolio
A wallet’s total portfolio value, broken down by chain and position type.
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>'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
Pattern:
^0x[a-fA-F0-9]{40}$Example:
"0x42b9df65b219b3dd36ff330a4dd8f327a6ada990"
Query Parameters
Which positions count toward the portfolio totals. Defaults to only_simple.
only_simple- tokens and native coins held directly in the wallet. DeFi protocol positions are left out.only_complex- DeFi protocol positions only, such as staked assets and liquidity pools (for example Uniswap or Aave).no_filter- both simple and protocol positions.
All three values count as standard requests on this endpoint. Unlike GET /v1/wallets/{address}/positions/, only_complex and no_filter don't use your advanced-request quota.
Available options:
only_simple, only_complex, no_filter Denominated currency value of returned prices
Available options:
eth, btc, usd, eur, krw, rub, gbp, aud, cad, inr, jpy, nzd, try, zar, cny, chf Was this page helpful?