Skip to main content
GET
Get wallet set balance chart

Authorizations

Authorization
string
header
required

To test endpoints here, paste your API key from the Dashboard into the username field and leave the password empty.

Path Parameters

chart_period
enum<string>
default:day
required

Chart period. Determines both the time window covered and the spacing between chart points (points). Each period samples the window at a fixed interval, so the number of points is roughly constant (~290–460) regardless of period:

Point counts are approximate, and begin_at / end_at are aligned to the interval. For max, the interval is derived from the amount of available history (targeting ~400 points), so it varies; for wallet and wallet-set charts the spacing is at least 1 day.

Available options:
hour,
day,
week,
month,
3months,
6months,
year,
5years,
max
Required string length: 3 - 7

Query Parameters

addresses
string[]
required

A list of wallet addresses forming a wallet set. example: 0x42b9df65b219b3dd36ff330a4dd8f327a6ada990,8BH9pjtgyZDC4iAQH5ZiYDZ1MDWC98xki2V8NzqqKW3K

The set must contain at least one address and may include at most one address per supported chain type (currently EVM and Solana). The order of addresses does not matter.

Returns 400 if an address in the set is not one Zerion tracks, such as a token contract, router or exchange hot wallet.

Required array length: 1 - 2 elements
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
filter[chain_ids]
string[]

Chart only the balance on these chains (comma-separated list). Only chains reporting both supports_transactions and supports_positions in the flags of GET /v1/chains/ are accepted here. Naming a chain that fails that gate returns 400 rather than an empty result, with detail reading chain <id> does not support charts (for example chain bob does not support charts). A chain of the wrong network family for the wallet set's addresses is rejected the same way, with does not support this wallet address type. When the filter is omitted, chains that fail the gate are left out of data silently, with no error and no meta signal.

Maximum array length: 25
Example:
filter[fungible_ids]
string[]

Chart only the balance of these fungible IDs (comma-separated list). Can't be combined with filter[exclude_fungible_ids]. Passing both returns 400.

Maximum array length: 25
Maximum string length: 44
filter[exclude_fungible_ids]
string[]

Leave these fungible IDs out of the chart (comma-separated list). Use it when the set to drop is smaller than the set to keep. Can't be combined with filter[fungible_ids]. Passing both returns 400.

Maximum array length: 25
Maximum string length: 44
filter[pool_addresses]
string[]

Chart only these liquidity pool or vault positions (comma-separated list). Simple token and native-coin balances are left out.

Each protocol takes a different value:

  • Uniswap V2 - the LP token contract address, for example 0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc.
  • Uniswap V3 - the pool contract address, for example 0x4e68ccd3e89f51c3074ca5072bbac773960dfa36. The LP NFT form also works and selects the same position.
  • Uniswap V4 - the LP NFT as <position_manager_address>:<token_id>, for example 0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e:229217. token_id must be a canonical unsigned 256-bit decimal: digits only, no leading zeros, from 0 through 2^256 - 1 (115792089237316195423570985008687907853269984665640564039457584007913129639935) inclusive. Invalid or out-of-range values return 400. Raw V4 pool IDs are 32-byte hashes, not contract addresses, and return 400.
  • ERC-4626 vaults (for example Morpho) - the vault contract address.

Get these values from the positions endpoint with filter[positions]=no_filter. attributes.pool_address holds the pool contract address, attributes.receipt.fungible_info.implementations[].address the LP token or vault share address, and attributes.receipt.nft_info the LP NFT's contract_address and token_id. Join those two with a colon.

Addresses are case-insensitive. A syntactically valid address that matches none of the wallet's positions isn't an error: the response is 200 with an all-zero series.

These are protocol positions, so combining this filter with filter[positions]=only_simple returns 400. If filter[positions] is omitted, it defaults to no_filter instead of only_simple, so the selected positions are charted. Can't be combined with filter[exclude_pool_addresses]: passing both returns 400.

Maximum array length: 25
Maximum string length: 121
filter[exclude_pool_addresses]
string[]

Leave these liquidity pool or vault positions out of the chart (comma-separated list). The rest of the portfolio, simple balances included, is kept.

Values take the same form as in filter[pool_addresses]: the Uniswap V2 LP token address, the Uniswap V3 pool contract address, the Uniswap V4 LP NFT as <position_manager_address>:<token_id>, or the ERC-4626 vault address. All come from the positions endpoint and are case-insensitive. A syntactically valid address that matches none of the wallet's positions excludes nothing and returns 200. A raw V4 pool ID returns 400. token_id must be a canonical unsigned 256-bit decimal: digits only, no leading zeros, from 0 through 2^256 - 1 (115792089237316195423570985008687907853269984665640564039457584007913129639935) inclusive. Invalid or out-of-range values return 400.

These are protocol positions, so combining this filter with filter[positions]=only_simple returns 400: only_simple already drops every protocol position, so the exclusion would do nothing. If filter[positions] is omitted, it defaults to no_filter instead of only_simple. Can't be combined with filter[pool_addresses]: passing both returns 400.

Maximum array length: 25
Maximum string length: 121
filter[positions]
enum<string>
default:only_simple

Which positions count toward the chart. 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 liquidity pool and vault positions.
  • no_filter - both simple and protocol positions.

Supported protocols today: Uniswap V2, V3 and V4 liquidity positions and ERC-4626 vault positions (for example Morpho). More are being added.

With filter[pool_addresses] or filter[exclude_pool_addresses] and no filter[positions], the default is no_filter instead: pool filters select protocol positions, so only_simple would make them do nothing.

Available options:
only_simple,
only_complex,
no_filter

Response

Resource for the requested wallet set chart

data
object
required