{"openapi":"3.1.0","info":{"title":"Octav API","version":"1.0.0","description":"Octav portfolio and wallet analytics API with x402 payment support","guidance":"Octav provides on-chain portfolio analytics for EVM and Solana wallets. All /v1/agent/* endpoints require x402 payment ($0.025/request on Base eip155:8453). Pass wallet addresses as a comma-separated \"addresses\" query parameter. Endpoints: /v1/agent/portfolio for full holdings including DeFi positions, /v1/agent/wallet for token balances only (faster), /v1/agent/nav for net asset value, /v1/agent/status to check data sync progress, /v1/agent/airdrop for airdrop eligibility, /v1/agent/chains to list supported blockchains, /v1/agent/chains/{chainKey}/protocols for DeFi protocols on a chain, /v1/agent/approvals/{chain} for token approvals on a chain."},"paths":{"/v1/agent/portfolio":{"get":{"summary":"Get the wallet and protocol holdings of a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get the portfolio of (EVM or SOLANA)","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"name":"aggregated","in":"query","required":false,"schema":{"type":"boolean"},"description":"Aggregate holdings across addresses","example":false},{"name":"includeNFTs","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include NFT holdings","example":false},{"name":"includeImages","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include token images","example":false},{"name":"includeExplorerUrls","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include block explorer URLs","example":false},{"name":"waitForSync","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Wait for data sync before returning","example":false}],"responses":{"200":{"description":"Portfolio data including wallet holdings and DeFi protocol positions"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","aggregated":false,"includeNFTs":false,"includeImages":false,"includeExplorerUrls":false,"waitForSync":false}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to get the portfolio of (EVM or SOLANA)","required":true},"aggregated":{"type":"boolean","description":"Aggregate holdings across addresses","required":false},"includeNFTs":{"type":"boolean","description":"Include NFT holdings","required":false},"includeImages":{"type":"boolean","description":"Include token images","required":false},"includeExplorerUrls":{"type":"boolean","description":"Include block explorer URLs","required":false},"waitForSync":{"type":"boolean","description":"Wait for data sync before returning","required":false}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/wallet":{"get":{"summary":"Get the wallet holdings of a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get the wallet holdings of (EVM or SOLANA)","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}],"responses":{"200":{"description":"Wallet holdings data including token balances and values"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to get the wallet holdings of (EVM or SOLANA)","required":true}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/portfolio/proxy/polymarket":{"get":{"summary":"Get Polymarket positions for a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get Polymarket positions for (EVM or SOLANA)","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"name":"aggregated","in":"query","required":false,"schema":{"type":"boolean"},"description":"Aggregate positions across addresses","example":false}],"responses":{"200":{"description":"Polymarket positions data including open and resolved positions"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","aggregated":false}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to get Polymarket positions for (EVM or SOLANA)","required":true},"aggregated":{"type":"boolean","description":"Aggregate positions across addresses","required":false}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/nav":{"get":{"summary":"Get the net asset value of a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get the NAV of (EVM or SOLANA)","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"name":"waitForSync","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Wait for data sync before returning","example":false},{"name":"currency","in":"query","required":false,"schema":{"type":"string","default":"USD"},"description":"Currency for NAV calculation (e.g. USD, EUR)","example":"USD"}],"responses":{"200":{"description":"Net asset value data including total portfolio value"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","waitForSync":false,"currency":"USD"}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to get the NAV of (EVM or SOLANA)","required":true},"waitForSync":{"type":"boolean","description":"Wait for data sync before returning","required":false},"currency":{"type":"string","description":"Currency for NAV calculation (e.g. USD, EUR)","required":false}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/airdrop":{"get":{"summary":"Get the airdrop portfolio of a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get airdrops for","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}],"responses":{"200":{"description":"Airdrop portfolio data including claimable and claimed airdrops"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to get airdrops for","required":true}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/status":{"get":{"summary":"Get the sync status of a given address","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to check sync status for","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}],"responses":{"200":{"description":"Sync status data including last sync time and progress"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"addresses":{"type":"string","description":"The address of the wallet to check sync status for","required":true}},"required":["addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/chains":{"get":{"summary":"Get the list of supported blockchain chains","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"List of supported chains with metadata"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET"},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{}}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/chains/{chainKey}/protocols":{"get":{"summary":"Get the DeFi protocols supported on a given chain","parameters":[{"name":"chainKey","in":"path","required":true,"schema":{"type":"string"},"description":"The chain key identifier (e.g. ethereum, polygon, solana)","example":"ethereum"},{"name":"page","in":"query","required":false,"schema":{"type":"number","default":1},"description":"Page number for pagination","example":1},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":20},"description":"Number of results per page (max 100)","example":20}],"responses":{"200":{"description":"List of DeFi protocols supported on the specified chain"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"chainKey":"ethereum","page":1,"limit":20}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"chainKey":{"type":"string","description":"The chain key identifier (e.g. ethereum, polygon, solana)","required":true},"page":{"type":"number","description":"Page number for pagination","required":false},"limit":{"type":"number","description":"Number of results per page (max 100)","required":false}},"required":["chainKey"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}},"/v1/agent/approvals/{chain}":{"get":{"summary":"Get the token approvals for a given address on a specific chain","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string"},"description":"The blockchain chain to query approvals for (e.g. eth, polygon, bsc)","example":"eth"},{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"The address of the wallet to get token approvals for","example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":25},"description":"Number of results per page (max 100)","example":25},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor for next page"}],"responses":{"200":{"description":"Token approval data including approved spenders and amounts"},"402":{"description":"Payment Required"}},"x-payment-info":{"x402Version":2,"protocols":["x402"],"pricingMode":"fixed","price":"0.025"},"extensions":{"bazaar":{"discoverable":true,"info":{"input":{"type":"http","method":"GET","queryParams":{"chain":"eth","addresses":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","limit":25}},"output":{"type":"json"}},"schema":{"properties":{"input":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"chain":{"type":"string","description":"The blockchain chain to query approvals for (e.g. eth, polygon, bsc)","required":true},"addresses":{"type":"string","description":"The address of the wallet to get token approvals for","required":true},"limit":{"type":"number","description":"Number of results per page (max 100)","required":false},"cursor":{"type":"string","description":"Pagination cursor for next page","required":false}},"required":["chain","addresses"]}}},"output":{"properties":{"example":{"type":"object"}}}}}}}}}}}