Aggregate wallet balances
Aggregates tracked balances for active wallets under the same owner-aware inclusion rules as the wallet list, without exposing one aggregate-level owner or runtime-admission value.
GET/Run in dashboard
Returns 503 if any included wallet balance cannot be read, rather than returning an incomplete total.
Requires an API key with the wallets.read action.
Query parameters
-
provider·string· one oflocal,fireblocks,privy,coinbase_cdp,para,turnkey,dfns,ibm_haven,anchorage,utila· exampleprivyWallet signing provider.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Aggregated wallet balances-
data·object· requiredAggregated wallet balance response payload.
-
aggregate·object· requiredAggregated wallet balance summary.
-
walletCount·integer· required · min 0 · example3Number of wallets included in the aggregate.
-
balances·object[]· requiredAggregated tracked token balances across the included wallets.
-
token·string· required · exampleUSDCTracked token symbol.
-
mint·string· required · min length 32 · max length 44 · example4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDUTracked token mint address.
-
amount·string· required · example1250000Raw token amount as a string.
-
uiAmount·string· required · example1.25Human-readable token balance.
-
decimals·integer· required · min 0 · example6Token decimals.
-
usdPrice·number· example1Resolved USD price per token when available.
-
usdValue·number· example125.5Resolved USD value of this balance when pricing is available.
-
-
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires thewallets.readaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
409ConflictSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.
Example request
curl 'https://api.solana.com/v1/wallets/aggregate' \
-H "Authorization: Bearer $SDP_API_KEY"Example responses
{
"data": {
"aggregate": {
"walletCount": 3,
"balances": [
{
"token": "USDC",
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"amount": "1250000",
"uiAmount": "1.25",
"decimals": 6,
"usdPrice": 1,
"usdValue": 125.5
}
]
}
},
"meta": {
"requestId": "req_example",
"timestamp": "2025-01-01T00:00:00.000Z"
}
}Error responses use the standard error shape.