Aurelia

Wallet value history API

GET/wallets/:chain/:address/history

What a wallet's holdings were worth over the last day, week or month; with token=, one position's balance, value and PnL over time.

Parameters

NameInTypeDefaultAllowed values
chainpathstringrequiredevm:56 (BSC), solana, evm:8453 (Base), evm:4663 (Robinhood Chain) or evm:1 (Ethereum)
addresspathstringrequiredWallet address (BSC) or account (Solana)
windowquerystring7d1d and 7d (hourly points), 30d (daily)
tokenquerystringnoneOne position's series: a token, or native (Solana)

Response

FieldTypeMeaning
chain, wallet, labels, indexedSince, window, resolutionstring, string, string[], number, string, stringAs in every wallet answer, and the spacing of the points: 1h or 1d.
exactSincenumber | nullUnix ms after which values are exact (see the notes). Points start after it.
block, balancesAtnumberThe block (Solana: slot) the balances were read at, and when, unix ms.
points[][number, number]Without token: [t, valueUsd], ascending: each boundary of the window after exactSince, then one at balancesAt, the value now.
points[] (token)objectWith token: t, balance (null when it cannot be established), priceUsd, valueUsd, realizedPnlUsd, unrealizedPnlUsd, totalPnlUsd at each point; balanceUnknown says why a balance is null.
excluded[]array{ token, reason }: tokens left out because their balance cannot be traced back.
coverage{ transactions, complete, listedAt, stopped }Solana: the transactions read to go back, whether they reach the window's start, and where a read bound stopped.
notestringWhat is left out, in words.

Example

Captured 2026-09-28 18:03 UTC on a test instance, trimmed to the last 3 points.

curl -s -H 'Authorization: Bearer <key>' 'https://app.aurelia.build/api/wallets/evm:56/0x3304e22ddaa22bcdc5fca2269b418046ae7b566a/history?window=1d'
{
  "labels": [
    "sniper",
    "fresh"
  ],
  "chain": "evm:56",
  "wallet": "0x3304e22ddaa22bcdc5fca2269b418046ae7b566a",
  "indexedSince": 1790546261920,
  "window": "1d",
  "resolution": "1h",
  "exactSince": 1790546862000,
  "block": 1000748,
  "balancesAt": 1790618266812,
  "points": [
    [
      1790611200000,
      129906
    ],
    [
      1790614800000,
      132544.89795918367
    ],
    [
      1790618266812,
      129300
    ]
  ],
  "excluded": [],
  "note": "Tokens only: native BNB / ETH is left out, since gas and internal transfers change it without a transfer the index sees, and the chain's endpoints keep no past balances to read it at each point."
}

Notes

  • The balances now are the portfolio's chain read. A value at a point is each token's balance then, at its price in the hour before (the busiest priced pool that hour), counted as in the portfolio's total.
  • BSC: balances go back through the indexed transfers since each point, so values are exact only while the index holds every transfer since then: after the chain's first indexed block, its last skipped range and the start of per-wallet transfers (kept 30 days). Native BNB is left out: gas and internal transfers change it without a transfer the index sees, and the node keeps no past state to read it (token=native answers 422).
  • Solana: balances go back through each of the wallet's transactions since the point, read from the chain (exact: SOL and token balances before and after), native SOL included. Points start after the oldest transaction a request could read; a later request reads further back. A token whose transactions do not link up changed in a transaction that does not name the wallet: it is left out, with the reason.
  • 422 while indexing has not reached the block the balances were read at, or for a wallet that moved too much to value in one request; 502 when the chain cannot be read; 503 while Solana's read budget is spent. Cached 30 s.

Try it in the interactive docsCreate a free account