Skip to main content
Retrieve a list of all blockchain networks supported by Octav, including chain metadata, icons, and explorer URLs. Results are sorted alphabetically by name.
Cost: Free (0 credits)
Tip: Use this endpoint to discover valid chainKey values for other endpoints like Protocols. The chain list is cached for 24 hours — newly added chains may take up to 24h to appear.

Endpoint

GET https://api.octav.fi/v1/chains
No parameters required.

Response

Returns an array of supported chain objects.

Chain Fields

chainId
string
Blockchain network ID (e.g. "1" for Ethereum mainnet)
key
string
Short identifier used in API requests (e.g. "ethereum", "solana", "arbitrum")
name
string
Human-readable chain name (e.g. "Ethereum", "Solana")
symbol
string
Native token symbol (e.g. "ETH", "SOL")
color
string
Hex color code for UI display (e.g. "#627EEA")
imgSmall
string
URL to small chain icon
imgLarge
string
URL to large chain icon
explorerTokenUrl
string
Block explorer URL template for tokens
explorerTransactionUrl
string
Block explorer URL template for transactions
explorerAddressUrl
string
Block explorer URL template for addresses
blockscoutExplorerAddressUrl
string | null
Blockscout explorer URL for addresses (null if unavailable)
blockscoutExplorerTokenUrl
string | null
Blockscout explorer URL for tokens (null if unavailable)
blockscoutExplorerTransactionUrl
string | null
Blockscout explorer URL for transactions (null if unavailable)
isPortfolioSupported
boolean
Whether portfolio tracking is supported on this chain
isTransactionsSupported
boolean
Whether transaction history is supported on this chain

Example Request

curl "https://api.octav.fi/v1/chains" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

[
  {
    "chainId": "1",
    "key": "ethereum",
    "name": "Ethereum",
    "symbol": "ETH",
    "color": "#627EEA",
    "imgSmall": "https://images.octav.fi/chains/ethereum_icon.svg",
    "imgLarge": "https://images.octav.fi/chains/ethereum_icon.svg",
    "explorerTokenUrl": "https://etherscan.io/token/",
    "explorerTransactionUrl": "https://etherscan.io/tx/",
    "explorerAddressUrl": "https://etherscan.io/address/",
    "blockscoutExplorerAddressUrl": null,
    "blockscoutExplorerTokenUrl": null,
    "blockscoutExplorerTransactionUrl": null,
    "isPortfolioSupported": true,
    "isTransactionsSupported": true
  },
  {
    "chainId": "42161",
    "key": "arbitrum",
    "name": "Arbitrum",
    "symbol": "ETH",
    "color": "#28A0F0",
    "imgSmall": "https://images.octav.fi/chains/arbitrum_icon.svg",
    "imgLarge": "https://images.octav.fi/chains/arbitrum_icon.svg",
    "explorerTokenUrl": "https://arbiscan.io/token/",
    "explorerTransactionUrl": "https://arbiscan.io/tx/",
    "explorerAddressUrl": "https://arbiscan.io/address/",
    "blockscoutExplorerAddressUrl": null,
    "blockscoutExplorerTokenUrl": null,
    "blockscoutExplorerTransactionUrl": null,
    "isPortfolioSupported": true,
    "isTransactionsSupported": true
  }
]

Use Cases

Populate a chain dropdown in your UI:
const response = await fetch('https://api.octav.fi/v1/chains', {
  headers: { 'Authorization': `Bearer ${apiKey}` }
});

const chains = await response.json();

// Filter to chains with portfolio support
const portfolioChains = chains.filter(c => c.isPortfolioSupported);

// Build selector options
const options = portfolioChains.map(chain => ({
  value: chain.key,
  label: chain.name,
  icon: chain.imgSmall,
  color: chain.color
}));

Error Responses

Authentication failed.
{
  "error": "Unauthorized",
  "message": "Invalid API key"
}
Solution: Check your API key in the Authorization header
Rate limit exceeded.
{
  "error": "Rate limit exceeded",
  "message": "You have exceeded your rate limit",
  "retry_after": 60
}
Solution: Wait for the specified time or implement retry logic