Skip to main content
Get started with the Octav API and make your first request in minutes.
Prerequisites — You’ll need an API key from data.octav.fi. See Authentication for details.

Your First Request

Let’s start by checking your remaining credits - this endpoint is free and perfect for testing authentication.
curl -X GET https://api.octav.fi/v1/credits \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

19033
The credits endpoint returns a simple number indicating your remaining credit balance.
Success! If you see a number, your API key is working correctly.

Fetch a Portfolio

Now let’s retrieve portfolio data for a blockchain address.
curl -X GET "https://api.octav.fi/v1/portfolio?addresses=0x6426af179aabebe47666f345d69fd9079673f6cd" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Structure

{
  "address": "0x6426af179aabebe47666f345d69fd9079673f6cd",
  "cashBalance": "0",
  "dailyIncome": "0",
  "dailyExpense": "0",
  "fees": "0",
  "feesFiat": "0",
  "lastUpdated": "1715173392020",
  "networth": "45231.89",
  "assetByProtocols": {
    "wallet": {
      "key": "wallet",
      "name": "Wallet",
      "value": "12453.20",
      "assets": [
        {
          "balance": "1.5",
          "symbol": "ETH",
          "price": "3200.50",
          "value": "4800.75",
          "chain": "ethereum"
        }
      ]
    },
    "aave_v3": {
      "key": "aave_v3",
      "name": "Aave V3",
      "value": "8934.12",
      "assets": [...]
    }
  },
  "chains": {
    "ethereum": {
      "value": "25123.45",
      "protocols": [...]
    },
    "arbitrum": {
      "value": "20108.44",
      "protocols": [...]
    }
  }
}
Cost: 1 credit per call

Query Transaction History

Retrieve transaction history with pagination and filtering.
curl -X GET "https://api.octav.fi/v1/transactions?addresses=0x6426af179aabebe47666f345d69fd9079673f6cd&limit=10&offset=0&sort=DESC" \
  -H "Authorization: Bearer YOUR_API_KEY"

Key Parameters

addresses
string
required
Comma-separated list of wallet addresses
limit
integer
required
Number of transactions per page (1-250)
offset
integer
required
Pagination offset
sort
string
Sort order: DESC (newest first) or ASC (oldest first)
Cost: 1 credit per call

Common Patterns

Environment Variables

Store your API key securely in environment variables:
OCTAV_API_KEY=your_api_key_here

Error Handling

Always handle errors gracefully:
async function fetchPortfolio(address) {
  try {
    const response = await fetch(
      `https://api.octav.fi/v1/portfolio?addresses=${address}`,
      {
        headers: {
          'Authorization': `Bearer ${apiKey}`
        }
      }
    );

    if (!response.ok) {
      const error = await response.json();
      throw new Error(`API Error: ${error.message}`);
    }

    return await response.json();
  } catch (error) {
    console.error('Failed to fetch portfolio:', error);
    throw error;
  }
}

Rate Limit Handling

Respect rate limits with retry logic:
async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After') || 60;
      console.log(`Rate limited. Retrying after ${retryAfter}s...`);
      await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}

Next Steps

Portfolio Endpoint

Detailed documentation for portfolio data

Nav Endpoint

Detailed documentation for nav data

Transactions Endpoint

Query and filter transaction history

All Endpoints

Explore all available endpoints

Pricing

Understand credit costs

Need Help?

Join Discord

Get help from the community

Contact Support

Reach out to our team