Skip to content

Wallet Balance History

Reconstruct the exact balance history of a wallet for either SOL, a tracked token symbol like USDC, or a caller-supplied SPL token mint using a caller-supplied Helius RPC URL.

This endpoint is intentionally consumer-funded: historical balance recovery is expensive, so the request must include the caller's own Helius RPC endpoint. Venum provides the search algorithm, pagination strategy, and normalized response.

You can get a free Helius RPC at helius.dev.

Requires API key.

GET /v1/history/balance

Use this endpoint when you want the full result as one JSON payload.

Request:

http
GET /v1/history/balance?walletAddress=<pubkey>&heliusRpcUrl=<urlencoded>&assetMint=SOL
x-api-key: YOUR_API_KEY

Query parameters:

FieldTypeDescription
walletAddressstringBase58 Solana wallet address
heliusRpcUrlstringFull HTTPS Helius RPC URL including API key
assetMintstringOptional. SOL, a tracked token symbol like USDC, or a base58 SPL mint address. Defaults to SOL.

Example:

bash
curl 'https://api.venum.dev/v1/history/balance?walletAddress=EbUNi6setNdX7a89j4i1nVF9Cnw6puSFJk7Fjrnnxfe2&heliusRpcUrl=https%3A%2F%2Fmainnet.helius-rpc.com%2F%3Fapi-key%3DYOUR_HELIUS_KEY&assetMint=SOL' \
  -H 'x-api-key: YOUR_API_KEY'

Tracked token symbols are also accepted:

bash
curl 'https://api.venum.dev/v1/history/balance?walletAddress=EbUNi6setNdX7a89j4i1nVF9Cnw6puSFJk7Fjrnnxfe2&heliusRpcUrl=https%3A%2F%2Fmainnet.helius-rpc.com%2F%3Fapi-key%3DYOUR_HELIUS_KEY&assetMint=USDC' \
  -H 'x-api-key: YOUR_API_KEY'

See GET /v1/tokens for the current list of supported tracked token symbols.

Response:

json
{
  "walletAddress": "EbUNi6setNdX7a89j4i1nVF9Cnw6puSFJk7Fjrnnxfe2",
  "assetMint": "SOL",
  "points": [
    {
      "signature": "4edti9pg4E2Ak4rqJJxKrdWaM9wRVWEoWpXUJ3DmjwxsTT4G958Z3qXv7xVeeoF48p3mozfj2M8CsxVeCDp5poTx",
      "slot": 290348419,
      "transactionIndex": 123,
      "blockTime": 1726578206,
      "assetMint": "SOL",
      "decimals": 9,
      "amountRaw": "400000000",
      "uiAmount": 0.4,
      "failed": false
    }
  ],
  "stats": {
    "rpcPosts": 61,
    "enumeratedSignatures": 5010,
    "points": 5010,
    "elapsedMs": 3302
  }
}

Shared Types

Point object

FieldTypeDescription
signaturestringTransaction signature
slotnumberSolana slot
transactionIndexnumberTransaction index within block
blockTimenumber | nullUnix timestamp in seconds
assetMintstringSOL or the resolved SPL mint requested
decimalsnumberAsset decimals (9 for SOL)
amountRawstringPost-transaction balance in raw base units
uiAmountnumberPost-transaction balance in human-readable units
failedbooleanWhether the transaction failed

Stats object

FieldTypeDescription
rpcPostsnumberRaw JSON-RPC POSTs sent to the supplied Helius endpoint
enumeratedSignaturesnumberNumber of wallet-touching signatures discovered
pointsnumberNumber of balance points returned
elapsedMsnumberEnd-to-end runtime in milliseconds

Errors

StatusDescription
400Invalid wallet address, Helius URL, or assetMint value
401Missing or invalid API key
429Rate limit exceeded
502Upstream Helius RPC error or rate limit

Notes

  • This endpoint reconstructs history for the exact wallet address provided.
  • assetMint: "SOL" returns SOL balance history.
  • Tracked token symbols like USDC are resolved to their canonical mint.
  • Any other valid base58 mint returns SPL token balance history for token accounts owned by that wallet that appear in the fetched transaction set.
  • Supported tracked symbols are listed in GET /v1/tokens.
  • It uses Helius getTransactionsForAddress, not a generic Solana RPC flow.
  • The requester's Helius key determines upstream rate limits and billable RPC usage.
  • rpcPosts is surfaced because historical balance reconstruction cost is a meaningful part of the query.
  • The SSE companion lives at GET /v1/stream/balance-history and is documented on the Streams page.