Accounts
Get account assets
https://api.firstleeward.com/v0/accounts/:id/assetsRetrieves per-asset balance breakdown with valuations, aggregated by symbol across all chains. Crypto assets also carry a byChain breakdown with the amount held, the withdrawable cap, and the withdrawal fee for each chain. All valuations are in the project's billing currency.
Authorizations
Authorizationstring · headerrequiredAPI key as Bearer token, e.g. Bearer YOUR_API_KEY
Headers
Leeward-Versionenum<string>requiredAPI version (YYYY-MM-DD). Available option: 2026-09-18
Path Parameters
idstring<uuid>requiredAccount ID
Response
200Account assets with valuations
itemsobject[]requiredPer-asset balance breakdown (crypto, fiat and virtual)
Show child attributes
Option 1 · CryptoAsset
symbolstringrequiredAsset symbol
namestringrequiredDisplay name
decimalsintegerrequiredDecimal places
amountstringrequiredBalance with decimals applied (string for full precision)
typestringrequiredAsset type discriminator
logoUristring | nullrequiredURI to asset logo image
valuenumberrequiredBalance value in the response currency
ratenumberrequiredValuation rate (in response currency per unit of this asset)
byChainobject[]requiredHow the balance is distributed across chains. Because moving crypto is chain-scoped, act on these entries rather than the aggregate amount. Empty for balances not held in per-chain wallets.
Show child attributes
chainIdstringrequiredChain the balance is held on
ETHEREUM_MAINNETETHEREUM_SEPOLIABASE_MAINNETBASE_SEPOLIAARBITRUM_ONE_MAINNETARBITRUM_ONE_SEPOLIAPOLYGON_MAINNETPOLYGON_AMOYSOLANA_MAINNETSOLANA_DEVNETassetIdstringrequiredAsset identifier on this chain - the token contract address, or a reserved identifier for the chain native asset
amountstringrequiredBalance held on this chain, with decimals applied (string for full precision)
withdrawablestringrequiredMax amount you can request to withdraw from this chain without taking availableBalance below zero. Outstanding card debt - including pending authorizations - is netted out, and the value is zero while the account is not ACTIVE. Per-chain cap: it assumes nothing else is withdrawn, so the caps across chains cannot all be taken at once. This is the gross you request, not what the recipient receives - the fee comes out of it. Advisory and recomputed on every request; the authoritative check happens when the withdrawal is submitted.
withdrawalFeestring | nullrequiredFlat fee deducted from the requested amount, in this asset. null when withdrawals are not offered on this chain.
Option 2 · FiatAsset
symbolstringrequiredAsset symbol
namestringrequiredDisplay name
decimalsintegerrequiredDecimal places
amountstringrequiredBalance with decimals applied (string for full precision)
typestringrequiredAsset type discriminator
valuenumberrequiredBalance value in the response currency
ratenumberrequiredValuation rate (in response currency per unit of this asset). Fiat is credited in the response currency itself, so this is 1.
Option 3 · VirtualAssetItem
symbolstringrequiredAsset symbol
namestringrequiredDisplay name
decimalsintegerrequiredDecimal places
amountstringrequiredBalance with decimals applied (string for full precision)
typestringrequiredAsset type discriminator
virtualAssetIdstring<uuid>requiredVirtual asset identifier
valuenumberrequiredValue of this virtual asset holding, in the response currency.
ratenumberrequiredValuation rate (in response currency per unit of this asset)
withdrawablestringrequiredMax units of this virtual asset that you can debit via a WITHDRAWAL posting without taking availableBalance below zero. Outstanding card debt - including pending authorizations - is netted out. Per-asset cap: the value assumes only this asset is being debited and all other balances stay untouched. After each withdrawal or posting, call this endpoint again to read the updated cap. Recomputed on every request.
404Account not found
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired