- A REST GET instead of a GraphQL query. Zapper makes you write a nested
portfolioV2query withedges,nodes, inline fragments, and hand-picked field selections. Octav returns wallet tokens, DeFi positions, and net worth from a singleGET /v1/portfoliowith no query body. - USD values precomputed. Both return
balanceUSD/value, but Octav layers on P&L and cost basis in the same response. - Deeper, more consistent DeFi decoding. Zapper is known to under-value Pendle-style yield tokens; Octav decodes them into their underlying assets so positions carry their real value.
- P&L and cost basis come back in the same response.
Get your API key at data.octav.fi. Base URL:
https://api.octav.fi/v1.Endpoint mapping
Authentication
Zapper uses anx-zapper-api-key header on a GraphQL POST. Octav uses a standard Authorization: Bearer token on a GET.
Wallet token balances
Zapper’stokenBalances.byToken returns a paginated connection of edges { node }. In Octav, wallet tokens live under the wallet protocol, grouped by chain:
Net worth and per-chain breakdown
Zapper splits net worth across two branches you have to add together. Octav returns the same total on the top-levelnetworth field, plus a per-chain chains breakdown.
JavaScript
DeFi positions
Zapper returns app positions underappBalances.byApp.edges[].node, with each position split into AppTokenPositionBalance and ContractPositionBalance inline fragments, and token roles hidden behind a metaType enum. Octav returns the same money under assetByProtocols, keyed by protocol, then chain, then position type (LENDING, LIQUIDITYPOOL, STAKED, FARMING, …).
Transaction history
Swap Zapper’s GraphQL activity query forGET /v1/transactions.
Key differences
- Protocol shape. Zapper is a single GraphQL POST with a nested
portfolioV2query (edges,nodes, inline fragments, field selection). Octav is one plainGET /v1/portfoliowith no query body. - Branches. Zapper splits a portfolio across
tokenBalancesandappBalances, each with its owntotalBalanceUSD. Octav returns both plusnetworthin one shape. - Values. Both return
balanceUSD/value. Octav also returnsopenPnl,closedPnl, andtotalCostBasisat no extra call. - Grouping. Zapper groups DeFi by app →
positionBalanceswith ametaTypeenum. Octav groupsassetByProtocols→chains→protocolPositions→assets[], with a dedicatedwalletbucket for loose tokens. - DeFi decoding. Zapper under-values Pendle-style yield tokens; Octav decodes them into their underlying assets.
- Chains. Both cover EVM and Solana from the same endpoint and shape.
- Billing. Zapper bills roughly 3 credits per query. Octav charges 1 credit per call (see pricing).
Need help migrating?
Join our Discord
Share your Zapper query shape and we’ll map it.
Portfolio endpoint
Full reference for the endpoint you’ll be calling.