1. Architectural Changes

The API was rebuilt from the ground up to improve performance (5-10x faster) and provide a more consistent integration experience.

  • REST Convention Migration: All read-only endpoints have moved from POST to GET.
    • Request body parameters from v0 must now be passed as query strings in v2.
    • POST is now strictly reserved for mutating operations, such as bulk requests and portfolio analytics.
  • Base Path Update: The base URL has migrated from /v0/ to /v2/.
  • Response Wrapping: All API responses are now wrapped in a consistent {"data": ...} envelope.

2. Namespace & Endpoint Refactoring

The previous "grab-bag" structure has been refactored into focused, RESTful resources with clear responsibilities.

Old Namespace (v0)New Namespace (v2)Description
/stock//equities/, /estimates/, /corporate-actions/Split into specialized categories.
/portfolio//quant-os/Rebranded with enhanced analytics.
/etf//etfs/Pluralized for consistency.
/fund//funds/Pluralized for consistency.
/status, /quota/account/status, /account/quotaMoved to a dedicated account namespace.

3. Data Schema Refactoring

  • Naming Convention: All response fields have migrated from snake_case to camelCase.
  • Structured Responses: Large, flat field dumps (such as the previous 108-field metrics) have been refactored into typed arrays.
  • Typed Schemas: 72 named response schemas were introduced to replace the inline definitions used in v0, improving SDK generation and type safety.

4. Specific Resource Migrations

Financial Statements

In the Equities namespace, the generic "financials" endpoint has been split into three distinct resources:

  • /v2/equities/income-statement
  • /v2/equities/balance-sheets
  • /v2/equities/cash-flow

Account Quota Fields

Several fields were renamed or removed to improve clarity:

  • Renamed: quota_leftremaining
  • Renamed: quota_totallimit
  • Added: apiKey, period
  • Removed: series (usage history chart data)

5. Implementation Examples

Status Request Refactoring

  • v0 (Before): GET https://api.bavest.co/v0/status
  • v2 (After): GET https://api.bavest.co/v2/account/status?symbol=AAPL

Bulk Request Update

  • v0 (Before): POST https://api.bavest.co/v0/bulk -d '{"symbol":"AAPL"}'
  • v2 (After): POST https://api.bavest.co/v2/bulk -d '{"symbol":"AAPL"}'
    • Note: While the path changed to /v2/, the bulk endpoint remains a POST operation with 5 new added fields: error, isin, message, symbol, and valid.

Summary

  1. List Endpoints: The list endpoints return the assets list for funds, etc, crypto, add and stock data.
  2. Aggregated Search: The search result is grouped by security name.
  3. Enhanced Searcher: Support over 100.000 securities.
  4. Performance improvements The average response time of the API is <400ms.

New Endpoints
1. Bulk Endpoint: Return the Quote, Candle and ETF data bulked
2. Dividend Calendar: Return upcoming dividends for stocks and etfs.
3. Annual dividends: Annualise dividend to make them easier comparable
4. ETF and Stock dividend estimates: Return dividend estimates.
5. Financial TTM: Return financial TTM results

New Endpoints

Bulk

Endpoint: Bulk


Description: This endpoint returns bulked financial data.

curl --request POST \
     --url https://api.bavest.co/v0/bulk \
     --header 'accept: text/plain' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key' \
     --data '
{
  "symbols": [
    {
      "symbol": "IWDA.L"
    }
  ],
  "endpoint": "etf_profile",
  "params": {
    "resolution": "D",
    "symbol": "ARKK"
  }
}
'

Parameters:

  • symbols: The security symbols
  • endpoint: The endpoint name
  • params: Addionall parameters for the endpoint

Search aggregated

Endpoint: Search aggregated


Description: This endpoint returns aggregated search results.

curl --request POST \
     --url https://api.bavest.co/v0/search/aggregated \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key' \
     --data '{"query":"AAPL"}'

Parameters:

  • query: The search query

Dividend Calendar

Endpoint: Dividend Calendar


Description: The dividend calendar return announced dividends.

curl --request POST \
     --url https://api.bavest.co/v0/calendar/dividends \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key'

Financials TTM

Endpoint: Financials TTM


Description: This endpoint returns financial TTM results.

curl --request POST \
     --url https://api.bavest.co/v0/stock/financials/ttm \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key' \
     --data '{"symbol":"AAPL"}'

Parameters:

  • symbol: The security symbol

Financials TTM

Endpoint: Dividend Estimate


Description: This endpoint returns dividend estimates

curl --request POST \
     --url https://api.bavest.co/v0/etf/dividend-estimate \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key' \
     --data '{"symbol":"HDLV.DE"}'

Parameters:

  • symbol: The symbol of the security.

Financials TTM

Endpoint: Annual Dividends


Description: The endpoint provides annual dividends for stocks, ETFs, and mutual funds.

curl --request POST \
     --url https://api.bavest.co/v0/dividends/annual \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: api-key' \
     --data '{"symbol":"AAPL"}'

Parameters:

  • symbol: The symbol of the security.

Summary

  1. Search Endpoint: The search endpoint now supports funds, crypto, and forex data.
  2. Consistent API Response Codes: The API response codes are now consistent across all endpoints:
    • 200: Success
    • 401: Unauthorised
    • 403: Forbidden
    • 404: Not Found
    • 500: Internal Server Error
  • New Endpoints
    • Crypto Price: Returns price data for cryptocurrencies.
    • ETF Fundamental: Returns fundamental data for Exchange Traded Funds (ETFs).
    • ETF Metrics: Returns performance metrics for Exchange Traded Funds (ETFs).
    • Fund Profile: Returns the profile information for a specified fund.
    • Fund Sector: Returns the fund sector list.
    • Fund Allocation Exposure: Returns the exposure for a specified fund.
    • Fund Country: Returns the country list for the specified fund.
    • Fund Holding: Returns the holdings list for a specified fund.
  • Deprecated Announcements
    • Version 0 Maintenance:
      • Version 0 (v0) will be maintained until 31.12.2024. After this date, it will be required to switch to Version 1 (v1).
      • V1 is released in October 2024 and contains only small changes with the goal of improving the developer experience.
    • Changes in (Version 1)
      • Indices Constituents:
        • The indices constituents endpoint is removed as of 01.05.2024.
      • ETF Holdings:
        • The field "cusip" will be removed starting from Version 1 (v1) and greater, effective 01.07.2024.
      • Stock Candle:
        • The endpoint will be removed as of 31.12.2024. Please use the /candle endpoint instead.

 

New Endpoints

Crypto Price

Endpoint: Crypto Price


Description: This endpoint provides a price quote for a specified cryptocurrency. Over 1000 cryptocurrency symbols are supported.

curl --request POST  
     --url <https://api.bavest.co/v0/crypto/price>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
      --data '{  
       "symbol": "BTCUSD"  
     }'  

Parameters:

  • symbol: The crypto symbol (e.g. BTCUSD)


ETF Metrics

Endpoint: https://docs.bavest.co/reference/post-etf-metrics


Description: This endpoint returns performance metrics for Exchange Traded Funds (ETFs).



curl --request POST  
     --url <https://api.bavest.co/v0/etf/metrics>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
     --data '{  "from": 1361290149,  "to": 1676588400,  "resolution": "D",  "currency": "EUR",  "symbol": "IWDA.L"}' 

Parameters:

  • from: Start timestamp (Unix epoch).
  • to: End timestamp (Unix epoch).
  • resolution: Data resolution (e.g., "D" for daily).
  • currency: Currency code (e.g., "EUR").
  • symbol: ETF symbol (e.g., "IWDA.L").


ETF Fundamentals

Endpoint: https://docs.bavest.co/reference/etf-fundamentals


Description: This endpoint provides fundamental data for specified ETFs.

Sample Request:

curl --request POST  
     --url <https://api.bavest.co/v0/etf/fundamentals>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key  

Fund Allocation Exposure

Endpoint: https://docs.bavest.co/reference/post-fund-allocation-exposure


Description: The fund allocation exposure endpoint returns the exposure for a specified fund.



curl --request POST  
     --url <https://api.bavest.co/v0/fund/allocation-exposure>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
     --data '{  
       "isin": "DE000ETFL573"  
     }'  

Parameters:

  • isin: International Securities Identification Number (ISIN) of the fund (e.g., "DE000ETFL573").

Fund Country

Endpoint: https://docs.bavest.co/reference/post-fund-country
Description: The fund country endpoint returns the country list for the specified fund.



curl --request POST  
     --url <https://api.bavest.co/v0/fund/country>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
     --data '{  
       "isin": "DE000ETFL573"  
     }'  

Parameters:

  • isin: International Securities Identification Number (ISIN) of the fund (e.g., "DE000ETFL573").

 

Fund Holding

Endpoint: https://docs.bavest.co/reference/post-fund-holding


Description: The fund holding endpoint returns the holdings list for a specified fund.

curl --request POST
     --url <https://api.bavest.co/v0/fund/holding>
     --header 'accept: application/json'
     --header 'content-type: application/json'
     --header 'x-api-key: api-key'
     --data '{
       "isin": "DE000ETFL573"

     }'

Parameters:

  • isin: International Securities Identification Number (ISIN) of the fund (e.g., "DE000ETFL573").

Fund Profile

Endpoint: https://docs.bavest.co/reference/post-fund-profile


Description: The fund holding endpoint returns the holdings list for a specified fund.


curl --request POST  
     --url <https://api.bavest.co/v0/fund/profile>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
     --data '{  
       "isin": "DE000ETFL573"  
     }'  

Parameters:

  • isin: International Securities Identification Number (ISIN) of the fund (e.g., "DE000ETFL573").

 

Fund Sector

Endpoint: https://docs.bavest.co/reference/post-fund-sector


Description: The fund sector endpoint returns the fund sector list.

curl --request POST  
     --url <https://api.bavest.co/v0/fund/sector>  
     --header 'accept: application/json'  
     --header 'content-type: application/json'  
     --header 'x-api-key: api-key'  
     --data '{  
       "isin": "DE000ETFL573"  
     }'  

Parameters:

  • isin: International Securities Identification Number (ISIN) of the fund (e.g., "DE000ETFL573").