- One call instead of two. Mobula splits a portfolio across
wallet/portfolio(tokens) andwallet/defi-positions(DeFi). Octav returns wallet tokens, DeFi positions, and net worth from a singleGET /v1/portfolio. - Reliable DeFi coverage. Mobula’s DeFi decoding is inconsistent run-to-run. Octav decodes positions consistently across chains and protocols.
- Sanity-checked pricing. Mobula can emit long-tail price outliers — a single mispriced defunct token can blow up your total. Octav validates pricing so
networthstays trustworthy. - 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
Mobula uses a rawAuthorization header (no scheme prefix). Octav uses a standard Authorization: Bearer token.
Wallet token balances
Mobula’swallet/portfolio returns data.assets[], a flat array of tokens with per-chain splits in cross_chain_balances. In Octav, wallet tokens live under the wallet protocol, already grouped by chain:
Net worth and per-chain breakdown
In Mobula you adddata.total_wallet_balance (from wallet/portfolio) to the DeFi positions total to get a full net worth. Octav returns the already-summed networth, plus a per-chain breakdown in chains.
JavaScript
DeFi positions
Mobula returns DeFi from a second call,wallet/defi-positions, as an array of { protocol, positions[] }. Octav returns the same money in the first response under assetByProtocols, keyed by protocol, then chain, then position type (LENDING, LIQUIDITYPOOL, STAKED, FARMING, …).
Transaction history
Swap Mobula’swallet/transactions for GET /v1/transactions.
Key differences
- Calls per portfolio. Mobula:
wallet/portfolio+wallet/defi-positions. Octav: oneGET /v1/portfolio. - DeFi reliability. Mobula’s DeFi decoding is inconsistent run-to-run. Octav decodes positions consistently.
- Pricing. Mobula can emit long-tail price outliers that distort totals. Octav sanity-checks pricing so
networthstays trustworthy. - Auth header. Mobula sends the raw key in
Authorization. Octav usesAuthorization: Bearer <key>. - Chains. Both cover EVM and Solana. Octav returns them in the same shape from one endpoint.
- Chain ids. Mobula formats DeFi chain ids like
evm:1; strip theevm:prefix for the numeric id. Octav keys chains by name (ethereum) withchainIdalongside. - Grouping. Mobula returns
data.assets[](tokens) and a separatedefi-positions[]array. Octav groupsassetByProtocols→chains→protocolPositions→assets[], with a dedicatedwalletbucket for loose tokens. - Billing. Mobula charges roughly 1 credit per chain. Octav charges 1 credit per call (see pricing).
- P&L. Octav adds
openPnl,closedPnl, andtotalCostBasisat no extra call.
Need help migrating?
Join our Discord
Share your Mobula response shape and we’ll map it.
Portfolio endpoint
Full reference for the endpoint you’ll be calling.