- A flat, already-priced object. Zerion returns JSON:API (
data[].attributes, related entities viarelationships) that you traverse and stitch together. Octav returns a flat object where every asset is already USD-priced from a singleGET /v1/portfolio. - Compact responses. Zerion payloads can grow very large. Octav responses stay compact.
- Decode once, no double-counting. On LST and vault wallets Zerion can surface a receipt token as a
walletposition and again as its decodeddeposit/stakedposition, so a naive sum counts it twice. Octav decodes each asset once. - Deeper protocol decoding. Perps, options, and complex positions come back fully decoded, and P&L and cost basis ship in the same response.
Get your API key at data.octav.fi. Base URL:
https://api.octav.fi/v1.Endpoint mapping
Authentication
Zerion uses HTTP Basic auth: your API key followed by a colon, base64-encoded, in anAuthorization: Basic header. Octav uses a standard Authorization: Bearer token.
Wallet token balances
Zerion’sonly_simple positions return a JSON:API array where each token lives under data[].attributes. In Octav, wallet tokens live under the wallet protocol, grouped by chain:
Net worth and per-chain breakdown
Zerion’s/portfolio endpoint maps directly onto the top-level networth and chains fields returned by the same portfolio call.
JavaScript
DeFi positions
Zerion returns decoded positions underonly_complex, each with a position_type (deposit, loan, staked, reward, locked). Octav returns the same money under assetByProtocols, keyed by protocol, then chain, then position type (LENDING, LIQUIDITYPOOL, STAKED, FARMING, …).
Transaction history
SwapGET /wallets/{address}/transactions for GET /v1/transactions.
Key differences
- Response shape. Zerion returns JSON:API — you walk
data[].attributesand resolve related entities throughrelationships. Octav returns a flat object; no JSON:API traversal. - Payload size. Zerion responses can be very large. Octav responses stay compact.
- Values. Zerion’s
attributes.valuecan benull; Octav returns a populatedvalue(andprice) on every asset. - Decode once. Zerion may surface an LST/vault receipt token as both a
walletand adeposit/stakedposition. Octav decodes each asset once, so naive sums don’t double-count. - Grouping. Zerion splits
only_simplevsonly_complexand groups byposition_type. Octav groupsassetByProtocols→chains→protocolPositions→assets[], with a dedicatedwalletbucket for loose tokens. - Chains. Both cover EVM and Solana. Octav serves both from one flat response and shape.
- Billing. Octav charges 1 credit per call (see pricing).
- P&L. Octav adds
openPnl,closedPnl, andtotalCostBasisat no extra call. - NFTs. Octav’s
/portfoliofocuses on fungible assets and DeFi positions; it does not enumerate NFTs the way Zerion’s/nft-positionsdoes.
Need help migrating?
Join our Discord
Share your Zerion response shape and we’ll map it.
Portfolio endpoint
Full reference for the endpoint you’ll be calling.