Skip to main content
GET
Returns the portfolio’s live positions — per-asset balances, unit prices, and USD values — plus an aggregate totalValueUsd. During an open bridge, totalValueUsd includes the inTransit.totalUsd component so portfolio value does not dip while funds move between chains; use inTransit.items[] to reconcile the component that is not yet represented as a settled destination asset row. Responses are cached for up to 30 seconds, so rapid polling from a single caller is cheap. For schedule state (nextDueAt, lastRebalanceAt, status), strategy metadata, and smart account addresses without live balances, use GET /v2/portfolios/{portfolioId} instead. One shape, every asset class. The assets[] array uses the same row shape (assetId, symbol, decimals, balance, balanceRaw, priceUsd, valueUsd) for ERC-20 tokens, SPL tokens, and tokenized real-world assets (equities, treasuries) when the underlying allocation includes them. Symbol, decimals, and price come from Glider’s upstream data providers and are passed through unchanged.
  • Auth: x-api-key header (required)
  • Scope: portfolios:read
Partial failures are surfaced, not raised as errors. When a chain is temporarily unavailable or a price is missing, the endpoint still returns 200 with whatever loaded and a structured warnings[] array describing the gap. A full failure returns totalValueUsd: "0", assets: [], and populated warnings — never a 5xx for transient issues. Multi-chain by construction. Every asset entry carries a full CAIP-19 assetId and a CAIP-10 smartAccountId, so EVM and non-EVM holdings share one wire shape.
portfolioId
string
required
Portfolio identifier returned by POST /v2/enroll or GET /v2/portfolios.
Common error responses:
  • 400 when the path parameter is invalid
  • 401 when x-api-key header is missing or the key is invalid
  • 403 when the API key lacks the portfolios:read scope
  • 404 when the portfolio does not exist or does not belong to the tenant
  • 500 on unexpected server errors
Warning kinds (in warnings[]):
  • MISSING_SMART_ACCOUNT — no smart account is known for the requested chain
  • RPC_ERROR — chain RPC timed out or errored
  • MISSING_PRICE — no USD price found for an asset
  • BLOCKLISTED_ASSET — asset is blocked and was skipped
  • MISSING_ASSET — asset metadata is unavailable
  • IN_TRANSIT_READ_FAILED — bridge in-transit value could not be read