Your account
Read an account's holdings and value
Cash, positions, and total value for any address, priced server-side.
Returns the fully valued holdings for any account address: USDG cash, every non-zero position with its live price and 1-day move, and the totals. One server-side multicall reads the balances, and prices come from the same spot source as /api/prices, so the response needs no client-side math.
GET /api/portfolio · public, no token required. Base URL, rate limits, and error shapes: conventions.
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
address |
address | yes | The account to value. Missing or invalid returns 400. |
Returns
Section titled “Returns”| Field | Type | Description |
|---|---|---|
cashUsd |
number | USDG balance (6-decimal), as a number. |
investedUsd |
number | Sum of priced holding values. |
totalUsd |
number | cashUsd + investedUsd. |
holdings |
array | Non-zero positions, largest value first, unpriced last. |
holdings[].symbol |
string | Registry symbol, for example AAPL. |
holdings[].raw |
string | Raw token balance as a decimal string (bigint-safe). |
holdings[].qty |
number | Human quantity, token decimals applied. |
holdings[].priceUsd |
number | null | Live spot price, null when unpriced. |
holdings[].valueUsd |
number | null | qty * priceUsd, null when unpriced. |
holdings[].dayChangePct |
number | null | 1-day move for the row. |
holdings[].spark |
number[] | null | Intraday sparkline points. |
asOf |
string | ISO timestamp the snapshot was built. |
Example
Section titled “Example”curl "https://monvera.best/api/portfolio?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"{ "cashUsd": 42.5, "investedUsd": 207.5, "totalUsd": 250, "holdings": [ { "symbol": "AAPL", "raw": "540000000000000000", "qty": 0.54, "priceUsd": 227.5, "valueUsd": 122.85, "dayChangePct": 0.83, "spark": [226.1, 226.9, 227.5] }, { "symbol": "NVDA", "raw": "610000000000000000", "qty": 0.61, "priceUsd": 138.75, "valueUsd": 84.64, "dayChangePct": -1.12, "spark": [140.3, 139.1, 138.75] } ], "asOf": "2026-07-08T14:32:07.918Z"}Errors
Section titled “Errors”| Status | Body | When |
|---|---|---|
| 400 | {"error":"Valid ?address required."} |
address missing or not a valid address. |
An account holding nothing returns zeros and an empty holdings array, not an error. A single unreadable token is skipped rather than failing the whole response, and its priceUsd and valueUsd come back null.
© 2026 Aibora · Documentation interface. Original Monvera materials retain their upstream attribution andMIT license.