Welcome to the Bitformance API! You can use our API to access cryptocurrency data that powers the Bitformance website, including information on various coins, market trends, and historical data.
We offer language bindings in Shell, JavaScript, and Python! You can view code examples in the dark area to the right, and you can switch the programming language of the examples using the tabs in the top right.
To access the API, you'll need both an API-KEY and an API-SECRET-KEY. Free API keys are available to all users with limited calls per month and restricted access to certain endpoints. For additional access and higher usage limits, please contact the Bitformance Team at contact@bitformance.com.
Make sure to replace your_api_key_here and your_api_secret_key_here with your API key and your Secret Key.
Bitformance uses API keys to allow access to the API. You can register a new Bitformance API key by creating an account on Our Website and navigating to the API Keys Dashboard once logged in.
User Access
The access to each endpoint is subscription based. Endpoints with the "free" tier designation are available to all users. Some endpoints require a higher tier, or paid subscription. The available tiers are listed below:
Free (5000 credits per month, 10 requests per minute, 3 months historical data)
Starter (250000 credits per month, 20 requests per minute, 6 months historical data)
Analyst (250000 credits per month, 20 requests per minute, 3 years historical data)
Professional (250000 credits per month, 30 requests per minute, all time historical data, commercial use available)
Enterprise (2000000 credits per month, custom rate limits, all time historical data, commercial use available, beta features available)
Rate Limits
The frequency at which users can call the endpoints are based on the user's tier subscription. Default rate limits are listed below and apply to most endpoints, however some endpoints have custom rate limits. Please read the endpoint's documentation on its rate limits for more information.
Free: 10 requests per minute
Starter: 20 requests per minute
Analyst: 20 requests per minute
Professional: 30 requests per minute
Enterprise: 100 requests per minute (custom limits available on request)
Historical Data Access
Different subscription tiers have access to different amounts of historical data:
Endpoints that can return an unbounded number of records are paginated. They all accept the same two query parameters and return the same pagination object alongside data.
Parameter
Type
Description
page
integer
Page number to retrieve, starting at 1. Values below 1, and non-numeric values, fall back to 1.
page_size
integer
Number of records per page. Each endpoint has its own default and maximum (see below). Values above the maximum are clamped to it; values below 1, and non-numeric values, fall back to the endpoint's default.
pagination
Description
page
The page number that was returned.
page_size
The number of records per page that was applied.
total_items
The total number of records available across all pages for the current query.
total_pages
The total number of pages available given the current page_size. 0 when there are no matching records.
has_next
Boolean indicating whether a subsequent page exists.
has_prev
Boolean indicating whether a previous page exists.
Endpoint
Paginated unit
Default
Maximum
Get Browsable Indexes
indexes
50
200
Get All Coins
coins
100
200
Get Bitformance Altcoin Index
constituents (constituent_info)
50
200
Get Top 200 Index
constituents (constituent_info)
50
200
Get Top 200 Data
rebalancing periods
50
200
Get Sector Indexes
indexes
50
200
Get Taxonomies
coins (before regrouping)
100
200
Get User Indexes
indexes
50
200
Get Rebalancing History
rebalancing periods
50
200
Get User API Transactions
transactions
100
500
Endpoints that are not paginated
These endpoints are bounded by other means and do not accept page/page_size:
Endpoint
Why it's bounded
Get Coin Data
Capped at 10 symbols and 3000 total timeseries points per request.
Get Top Sector Movers
Bounded by the n parameter (maximum 200), ranked in the database.
Get Index Data
Returns a single index; its timeseries is bounded by your tier's historical data access.
Get Altcoin Season Index
Returns a single timeseries, bounded by your tier's historical data access.
Get User API Summary
Returns a single account summary object.
Endpoints
Get Browsable Indexes
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
10 requests per minute
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Without query parameters
url="https://api.bitformance.com/api/v2/get-browsable-indexes"headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_api_secret_key"}response=requests.get(url,headers=headers)indexes=response.json()# With query parameters
params={"sortField":"marketcap","sortOrder":"desc","indexType":"all","page":1,"page_size":50}response=requests.get(url,headers=headers,params=params)indexes=response.json()
# Without query parameters
curl "https://api.bitformance.com/api/v2/get-browsable-indexes"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_api_secret_key"# With query parameters
curl "https://api.bitformance.com/api/v2/get-browsable-indexes?sortField=marketcap&sortOrder=desc&indexType=all&page=1&page_size=50"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_api_secret_key"
constfetch=require('node-fetch');// Without query parametersconsturl="https://api.bitformance.com/api/v2/get-browsable-indexes";constheaders={"API-KEY":"your_api_key","API-SECRET-KEY":"your_api_secret_key"};fetch(url,{headers}).then(response=>response.json()).then(data=>console.log(data)).catch(error=>console.error('Error:',error));// With query parametersconstparams=newURLSearchParams({sortField:'marketcap',sortOrder:'desc',indexType:'all',page:1,page_size:50});fetch(`${url}?${params.toString()}`,{headers}).then(response=>response.json()).then(data=>console.log(data)).catch(error=>console.error('Error:',error));
The above command returns JSON structured like this:
{"success":true,"data":[{"index_info":{"_id":"65569daf76cd9d2bc8ec55b5","created":"2023-11-16 22:54:38.948000","updated":"2024-08-24 12:01:06.870000","initial_timestamp":1483315200,"name":"50/50 Bitcoin + Ethereum","description":"50/50 Bitcoin + Ethereum with a monthly rebalance and an initial starting balance of $1,000.","algorithm":"market_cap","sector":"Cryptocurrency","industry":"Digital Currency","asset_type":"cryptocurrency","weighting_method":"custom","rebalancing_interval":"monthly","custom_weights":{"BTC":0.5,"ETH":0.5}},"index_holdings":[{"ticker":"BTC","id":1,"quantity":2.1383870222874193},{"ticker":"ETH","id":1027,"quantity":50.1803901851935}],"index_performance":{"initial_value":1000.0,"value":15847.23,"change_24hour":234.56,"changepct_24hour":1.5,"change_7d":-567.89,"changepct_7d":-3.46,"change_1m":1234.56,"changepct_1m":8.44,"change_3m":2345.67,"changepct_3m":17.37,"change_6m":3456.78,"changepct_6m":27.85,"change_1y":4567.89,"changepct_1y":40.47,"drawdown":-15.23,"marketcap":128456789.12,"asset_performance_24h_bullish":1,"asset_performance_24h_bearish":1,"asset_sma_200d_over":1,"asset_sma_200d_under":1,"asset_sma_50d_over":1,"asset_sma_50d_under":1,"asset_1y_high":0,"asset_1y_low":0,"asset_alltime_high":0,"asset_alltime_low":0,"asset_new_highs":0,"asset_new_lows":0,"asset_performance_7d_bearish":1,"asset_performance_7d_bullish":1,"asset_sma_200d_over_7d":1,"asset_sma_200d_under_7d":1,"asset_sma_50d_over_7d":1,"asset_sma_50d_under_7d":1,"asset_1y_high_7d":0,"asset_1y_low_7d":0,"asset_alltime_high_7d":0,"asset_alltime_low_7d":0}}],"pagination":{"page":1,"page_size":50,"total_items":128,"total_pages":3,"has_next":true,"has_prev":false}}
This endpoint retrieves publicly available browsable indexes. You can filter, sort, and organize the results using optional query parameters. Results are paginated (50 per page by default), and each response includes a pagination object describing the current page and total result count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-browsable-indexes
Type of indexes to return. Accepted values: bitformance, sector, aggregated, all
page
integer
1
Page number to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
50
Number of indexes to return per page. Maximum value is 200
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of indexes returned per page.
total_items
The total number of indexes available across all pages for the current query.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
updated
Timestamp indicating when the index was last updated.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index.
description
The description of the index.
algorithm
The algorithm used to construct the index (e.g., "market_cap", "equal_weight", "sector_ranked").
sector
The sector classification of the index.
industry
The industry classification of the index (if applicable).
asset_type
The type of assets included in the index (e.g., "cryptocurrency").
weighting_method
The method used to assign weights to the assets in the index.
rebalancing_interval
The frequency at which the index is rebalanced.
custom_weights
Contains custom weighting values if the "weighting_method" is "custom".
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
Unique asset identifier (CMC ID).
quantity
The amount of the asset currently held in the index (0 if the index has no recorded holding for that asset).
index_performance
Description
initial_value
The initial value of the index on inception, also known as the starting investment.
value
Current value of the index.
change_24hour
Absolute change in index value over the last 24 hours.
changepct_24hour
Percentage change in index value over the last 24 hours.
change_7d
Absolute change in index value over the last 7 days.
changepct_7d
Percentage change in index value over the last 7 days.
change_1m
Absolute change in index value over the last 1 month.
changepct_1m
Percentage change in index value over the last 1 month.
change_3m
Absolute change in index value over the last 3 months.
changepct_3m
Percentage change in index value over the last 3 months.
change_6m
Absolute change in index value over the last 6 months.
changepct_6m
Percentage change in index value over the last 6 months.
change_1y
Absolute change in index value over the last 1 year.
changepct_1y
Percentage change in index value over the last 1 year.
drawdown
Maximum drawdown percentage of the index.
marketcap
Total market capitalization of all assets in the index.
asset_performance_24h_bullish
Number of assets in the index whose current live price is at or above their last daily close (last_daily_close).
asset_performance_24h_bearish
Number of assets in the index whose current live price is lower than their last daily close (last_daily_close), i.e. the asset has lost value since the previous day's close.
asset_sma_200d_over
Number of assets currently trading at or above their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_200d_under
Number of assets currently trading below their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_50d_over
Number of assets currently trading at or above their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_sma_50d_under
Number of assets currently trading below their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_1y_high
Number of assets whose current live price is higher than their 1-year high (one_year_high) — the highest daily closing price recorded over the trailing ~365 days.
asset_1y_low
Number of assets whose current live price is lower than their 1-year low (one_year_low) — the lowest daily closing price recorded over the trailing ~365 days.
asset_alltime_high
Number of assets whose current live price is higher than their all-time high (all_time_high) — the highest daily closing price ever recorded for that asset.
asset_alltime_low
Number of assets whose current live price is lower than their all-time low (all_time_low) — the lowest daily closing price ever recorded for that asset.
asset_new_highs
Number of assets whose current live price is higher than their 7-day high (weekly_high) — the highest daily closing price recorded over the trailing 7 days.
asset_new_lows
Number of assets whose current live price is lower than their 7-day low (weekly_low) — the lowest daily closing price recorded over the trailing 7 days.
index_performance (7-day variants)
Description
asset_performance_7d_bearish
Number of assets whose current live price is below the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2) — a rougher, week-scale version of asset_performance_24h_bearish.
asset_performance_7d_bullish
Number of assets whose current live price is at or above the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2).
asset_sma_200d_over_7d
Number of assets whose current live price or 7-day high (weekly_high) is at or above their 200-day SMA (avg_price_200d) — true if the asset was above its 200-day average at any point in the last 7 days, not just right now.
asset_sma_200d_under_7d
Number of assets where neither the current live price nor the 7-day high crossed at or above the 200-day SMA.
asset_sma_50d_over_7d
Number of assets whose current live price or 7-day high (weekly_high) is at or above their 50-day SMA (avg_price_50d).
asset_sma_50d_under_7d
Number of assets where neither the current live price nor the 7-day high crossed at or above the 50-day SMA.
asset_1y_high_7d
Number of assets whose current live price or 7-day high (weekly_high) exceeds their 1-year high (one_year_high) — true if the asset hit a new 1-year high at any point in the last 7 days, not just right now.
asset_1y_low_7d
Number of assets whose current live price or 7-day low (weekly_low) is below their 1-year low (one_year_low).
asset_alltime_high_7d
Number of assets whose current live price or 7-day high (weekly_high) exceeds their all-time high (all_time_high).
asset_alltime_low_7d
Number of assets whose current live price or 7-day low (weekly_low) is below their all-time low (all_time_low).
This endpoint retrieves a paginated list of cryptocurrency data. Returns 100 coins per page by default, with options for sorting, filtering, and field selection. Each response includes a pagination object describing the current page and total result count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-all-coins
Query Parameters
Parameter
Type
Default
Description
page
integer
1
Specifies the page number to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
100
Number of coins to return per page. Maximum value is 200
sortBy
string
market_cap
Field to sort by. Accepted values: market_cap, price, name, symbol, volume, change_24hour, changepct_24hour, change_7day, changepct_7day, all_time_high, all_time_low
sortOrder
string
desc
Sort direction. Accepted values: asc, desc
tax_only
string
-
When present (any value), returns only coins with valid taxonomy classification, excluding "Uncategorized" and "BLACKLIST" coins
include_fields
string
-
Comma-separated list of fields to add to the default set of response fields. Mainly useful for adding back description, which is excluded by default. Example: description
exclude_fields
string
-
Comma-separated list of fields to remove from the default set of response fields. Example: tier_lvl_1,tier_lvl_2
Field Selection
include_fields and exclude_fields both start from the default set of fields (every field listed below except description, which is excluded by default) and can be combined in the same request:
include_fields adds fields to the default set.
exclude_fields removes fields from the default set.
If the same field appears in both, exclude_fields wins and the field is left out.
Include Fields
Add description back into the default response:
GET /api/v2/get-all-coins?include_fields=description
Exclude Fields
Remove specific fields from the default response:
GET /api/v2/get-all-coins?exclude_fields=tier_lvl_1,tier_lvl_2
Combining Both
exclude_fields takes priority when a field appears in both lists:
GET /api/v2/get-all-coins?include_fields=description&exclude_fields=description
This still excludes description, since exclude_fields overrides include_fields for that field.
Available Fields
coin_id - Unique coin identifier (CMC ID)
coin_slug - URL-friendly version of the coin's name
name - The full name of the cryptocurrency
symbol - The ticker symbol of the cryptocurrency
description - Description of the cryptocurrency (excluded by default)
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of coins returned per page.
total_items
The total number of coins available across all pages for the current query.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
data (array of coin objects)
Description
coin_id
Unique coin identifier (CMC ID).
coin_slug
URL-friendly version of the coin's name.
name
The full name of the cryptocurrency.
symbol
The ticker symbol of the cryptocurrency.
description
Description of the cryptocurrency. (Excluded by default)
tier_lvl_1
The level 1 taxonomy classification of the cryptocurrency (sector).
tier_lvl_2
The level 2 taxonomy classification of the cryptocurrency (sub-sector/industry).
last_updated
The timestamp of the last time the data for this cryptocurrency was updated.
price
The current live price of the cryptocurrency (in USD). Refreshed roughly every 5 minutes from the market data feed.
market_cap
The total market capitalization of the cryptocurrency (price × circulating supply).
volume
The total trading volume of the cryptocurrency over the last 24 hours.
last_daily_close
The cryptocurrency's closing price on the most recently completed UTC trading day. Recalculated once per day; does not move with the live price field between daily runs.
all_time_high
The highest daily closing price ever recorded for this cryptocurrency, based on its full daily price history. Recalculated once per day, so the live price can trade above this value intraday before that day's close is folded in.
all_time_low
The lowest daily closing price ever recorded for this cryptocurrency. Recalculated once per day, same caveat as all_time_high.
avg_price_200d
The 200-day simple moving average (SMA) of daily closing prices — the mean of the trailing 200 daily closes. Recalculated once per day, not a live average of the price field.
avg_price_50d
The 50-day simple moving average (SMA) of daily closing prices — the mean of the trailing 50 daily closes. Recalculated once per day, not a live average of the price field.
change_24hour
The change in the cryptocurrency's value over the last 24 hours in dollars.
changepct_24hour
The percentage change in the cryptocurrency's value over the last 24 hours.
change_7day
The change in the cryptocurrency's value over the last 7 days in dollars.
changepct_7day
The percentage change in the cryptocurrency's value over the last 7 days.
change_1m
The change in the cryptocurrency's value over the last 1 month in dollars.
changepct_1m
The percentage change in the cryptocurrency's value over the last 1 month.
change_3m
The change in the cryptocurrency's value over the last 3 months in dollars.
changepct_3m
The percentage change in the cryptocurrency's value over the last 3 months.
change_6m
The change in the cryptocurrency's value over the last 6 months in dollars.
changepct_6m
The percentage change in the cryptocurrency's value over the last 6 months.
change_1y
The change in the cryptocurrency's value over the last 1 year in dollars.
changepct_1y
The percentage change in the cryptocurrency's value over the last 1 year.
one_year_high
The highest daily closing price recorded over the trailing ~365 days (the most recent 366 daily records). Recalculated once per day, so the live price can exceed this value intraday before that day's close updates the baseline.
one_year_low
The lowest daily closing price recorded over the trailing ~365 days. Recalculated once per day, same caveat as one_year_high.
weekly_high
The highest daily closing price recorded over the trailing 7 days. Recalculated once per day.
weekly_low
The lowest daily closing price recorded over the trailing 7 days. Recalculated once per day.
Get Coin Data
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
This endpoint has custom rate limits that are higher than the per-tier defaults:
Tier
Limit
Free
20 requests per minute
Starter
30 requests per minute
Analyst
30 requests per minute
Professional
50 requests per minute
Enterprise
50 requests per minute
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-coin-data"params={"symbols":"BTC,ETH","timeseries_interval":"daily","start":"1639612800","metric":"closing_price","exclude_fields":"description"}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)coin_data=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-coin-data"symbols="BTC,ETH"timeseries_interval="daily"start="1639612800"metric="closing_price"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"symbols=$symbols"\--data-urlencode"timeseries_interval=$timeseries_interval"\--data-urlencode"start=$start"\--data-urlencode"metric=$metric"\--data-urlencode"exclude_fields=description"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-coin-data';constparams=newURLSearchParams({symbols:'BTC,ETH',timeseries_interval:'daily',start:'1639612800',metric:'closing_price',exclude_fields:'description'});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint retrieves detailed information and historical data for specific cryptocurrencies by their symbols.
HTTP Request
GET https://api.bitformance.com/api/v2/get-coin-data
Query Parameters
Parameter
Type
Required
Description
symbols
string
Yes
Comma-separated list of cryptocurrency symbols (e.g., "BTC,ETH,DOGE"). Maximum 10 symbols per request.
timeseries_interval
string
No
Time interval for historical data. Accepted values: daily, fivemin. When daily is used, returns one data point per day at UTC-0. When fivemin is used, returns 24-hour data with data points every 5 minutes.
start
integer
No
UNIX (Epoch) timestamp indicating when the timeseries data should begin. Data access is limited based on subscription tier.
metric
string
No
The metric to return in timeseries data. Accepted values: closing_price, market_cap. Defaults to closing_price.
include_fields
string
No
Comma-separated list of fields to add to the default set of response fields. Mainly useful for adding back description, which is excluded by default. Example: description
exclude_fields
string
No
Comma-separated list of fields to remove from the default set of response fields. Example: tier_lvl_1,tier_lvl_2
Field Selection
include_fields and exclude_fields both start from the default set of fields (every field listed below except description, which is excluded by default) and can be combined in the same request:
include_fields adds fields to the default set.
exclude_fields removes fields from the default set.
If the same field appears in both, exclude_fields wins and the field is left out.
Include Fields
Add description back into the default response:
GET /api/v2/get-coin-data?symbols=BTC,ETH&include_fields=description
Exclude Fields
Remove specific fields from the default response:
GET /api/v2/get-coin-data?symbols=BTC,ETH&exclude_fields=tier_lvl_1,tier_lvl_2
Combining Both
exclude_fields takes priority when a field appears in both lists:
GET /api/v2/get-coin-data?symbols=BTC,ETH&include_fields=description&exclude_fields=description
This still excludes description, since exclude_fields overrides include_fields for that field.
The above command returns JSON structured like this:
{"success":true,"data":{"index_info":{"_id":"66bab123456789abcdef0123","created":"2024-01-15T10:30:00.000Z","updated":"2024-08-25T22:30:00.000Z","initial_timestamp":"2017-04-01T00:00:00.000Z","name":"Bitformance Altcoin Index","description":"Tracks the performance of the top altcoins weighted by market capitalization","algorithm":"top_ranked","sector":"All","industry":"All","asset_type":"dynamic","weighting_method":"market_cap","rebalancing_interval":"monthly","custom_weights":{}},"index_holdings":[{"ticker":"ETH","id":1027,"quantity":15.234567},{"ticker":"BNB","id":1839,"quantity":8.456789}],"index_performance":{"marketcap":12500000000.50,"initial_value":1000.0,"value":2847.23,"drawdown":-12.45,"change_24hour":2851.67,"change_7d":2734.89,"changepct_24hour":0.16,"changepct_7d":-3.95,"change_1m":2623.45,"change_3m":2156.78,"change_6m":1987.34,"change_1y":1543.21,"changepct_1m":-7.86,"changepct_3m":-24.26,"changepct_6m":-30.20,"changepct_1y":-45.80,"asset_new_highs":3,"asset_new_lows":1,"asset_performance_24h_bearish":12,"asset_performance_24h_bullish":38,"asset_sma_200d_over":25,"asset_sma_200d_under":25,"asset_sma_50d_over":30,"asset_sma_50d_under":20,"asset_1y_high":8,"asset_1y_low":2,"asset_alltime_high":5,"asset_alltime_low":0,"asset_performance_7d_bearish":10,"asset_performance_7d_bullish":40,"asset_sma_200d_over_7d":27,"asset_sma_200d_under_7d":23,"asset_sma_50d_over_7d":32,"asset_sma_50d_under_7d":18,"asset_1y_high_7d":9,"asset_1y_low_7d":2,"asset_alltime_high_7d":6,"asset_alltime_low_7d":0},"daily_timeseries_data":[{"date":"2017-04-01 00:00:00","value":1000.0},{"date":"2017-04-02 00:00:00","value":1089.5754208146486},{"date":"2017-04-04 00:00:00","value":1134.4590760724552}],"constituent_info":[{"coin_id":1027,"coin_slug":"ethereum","name":"Ethereum","symbol":"ETH","tier_lvl_1":"Smart Contract Platform","tier_lvl_2":"Layer 1","last_updated":"2024-08-25T22:28:00.000Z","price":2337.312950154836,"market_cap":281239666935.0205,"volume":13784465135.147797,"last_daily_close":2350.33965816199,"all_time_high":4066.690353397678,"all_time_low":1540.9732397056287,"avg_price_200d":2789.45,"avg_price_50d":2456.12,"change_24hour":2350.33965816199,"changepct_24hour":0.55733692,"change_7day":2235.9280441047767,"changepct_7day":-4.33766929,"change_1m":-123.45,"changepct_1m":-5.01,"change_3m":234.56,"changepct_3m":10.88,"change_6m":345.67,"changepct_6m":17.35,"change_1y":1234.56,"changepct_1y":111.88,"one_year_high":4066.690353397678,"one_year_low":1540.9732397056287,"weekly_high":2768.615443493595,"weekly_low":2573.834787768792}]},"pagination":{"page":1,"page_size":50,"total_items":200,"total_pages":4,"has_next":true,"has_prev":false}}
This endpoint returns information and performance data for the Bitformance Altcoin Index, which tracks the top altcoins weighted by market capitalization. The index metadata and timeseries data are returned in full on every page; the constituent_info list is paginated (50 constituents per page by default) to bound response size, and the top-level pagination object describes the constituent page. Constituents are ordered by market cap (descending), so page 1 holds the largest constituents.
HTTP Request
GET https://api.bitformance.com/api/v2/get-bitformance-altcoin-index
Query Parameters
Parameter
Type
Default
Description
timeseries_interval
string
-
Time interval for historical data. Accepted values: daily, fivemin. When daily is used, returns one data point per day at UTC-0. When fivemin is used, returns 24-hour data with data points every 5 minutes.
weighting_method
string
market_cap
The weighting method for the index. Accepted values: market_cap, equal_weight. Defaults to market_cap if not specified or invalid.
metric
string
closing_price
The metric to return in timeseries data. Accepted values: closing_price, market_cap. Defaults to closing_price.
page
integer
1
Page number of constituent_info to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
50
Number of constituents to return per page in constituent_info. Maximum value is 200
include_fields
string
-
Comma-separated list of fields to add to the default set of constituent_info fields. Mainly useful for adding back description, which is excluded by default. Example: description
exclude_fields
string
-
Comma-separated list of fields to remove from the default set of constituent_info fields. Example: avg_price_200d,avg_price_50d
Field Selection for Constituent Info
include_fields and exclude_fields both start from the default set of constituent fields (every field listed below except description, which is excluded by default) and can be combined in the same request:
include_fields adds fields to the default set.
exclude_fields removes fields from the default set.
If the same field appears in both, exclude_fields wins and the field is left out.
Include Fields
Add description back into each constituent object:
GET /api/v2/get-bitformance-altcoin-index?include_fields=description
Exclude Fields
Remove specific fields from constituent objects:
GET /api/v2/get-bitformance-altcoin-index?exclude_fields=avg_price_200d,avg_price_50d
Combining Both
exclude_fields takes priority when a field appears in both lists:
GET /api/v2/get-bitformance-altcoin-index?include_fields=description&exclude_fields=description
This still excludes description, since exclude_fields overrides include_fields for that field.
Available Fields for Constituents
coin_id - Unique coin identifier (CMC ID)
coin_slug - URL-friendly version of the coin's name
name - The full name of the cryptocurrency
symbol - The ticker symbol of the cryptocurrency
description - Description of the cryptocurrency (excluded by default)
All change and performance metrics (change_24hour, changepct_24hour, etc.)
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
The response structure is identical to the Get Bitformance Altcoin Index endpoint, containing:
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination (describes the constituent_info page)
Description
page
The current page number of constituents returned.
page_size
The number of constituents returned per page.
total_items
The total number of constituents in the index across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of constituents exists.
has_prev
Boolean indicating whether a previous page of constituents exists.
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
updated
Timestamp indicating the last time the index was updated.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index.
description
The description of the index.
algorithm
The algorithm used to construct the index (typically "top_ranked").
sector
The sector classification of the index.
industry
The industry classification of the index.
asset_type
The type of assets included in the index (typically "dynamic").
weighting_method
The method used to assign weights to the assets in the index.
rebalancing_interval
The frequency at which the index is rebalanced.
custom_weights
Contains custom weighting values (usually empty for algorithmic indexes).
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
The unique identifier of the asset.
quantity
The quantity of the asset held in the index.
index_performance
Description
marketcap
The total market capitalization of the index.
initial_value
The initial value of the index when it was created.
value
The current value of the index.
drawdown
The maximum drawdown from peak value.
change_24hour
The change in the index value over the last 24 hours.
change_7d
The change in the index value over the last 7 days.
changepct_24hour
The percentage change in the index value over the last 24 hours.
changepct_7d
The percentage change in the index value over the last 7 days.
change_1m
The change in the index value over the last 1 month.
change_3m
The change in the index value over the last 3 months.
change_6m
The change in the index value over the last 6 months.
change_1y
The change in the index value over the last 1 year.
changepct_1m
The percentage change in the index value over the last 1 month.
changepct_3m
The percentage change in the index value over the last 3 months.
changepct_6m
The percentage change in the index value over the last 6 months.
changepct_1y
The percentage change in the index value over the last 1 year.
asset_new_highs
Number of index constituents whose current live price is higher than their 7-day high (weekly_high) — the highest daily closing price recorded over the trailing 7 days.
asset_new_lows
Number of index constituents whose current live price is lower than their 7-day low (weekly_low) — the lowest daily closing price recorded over the trailing 7 days.
asset_performance_24h_bearish
Number of index constituents whose current live price is lower than their last daily close (last_daily_close), i.e. the asset has lost value since the previous day's close.
asset_performance_24h_bullish
Number of index constituents whose current live price is at or above their last daily close (last_daily_close).
asset_sma_200d_over
Number of index constituents currently trading at or above their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_200d_under
Number of index constituents currently trading below their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_50d_over
Number of index constituents currently trading at or above their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_sma_50d_under
Number of index constituents currently trading below their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_1y_high
Number of index constituents whose current live price is higher than their 1-year high (one_year_high) — the highest daily closing price recorded over the trailing ~365 days.
asset_1y_low
Number of index constituents whose current live price is lower than their 1-year low (one_year_low) — the lowest daily closing price recorded over the trailing ~365 days.
asset_alltime_high
Number of index constituents whose current live price is higher than their all-time high (all_time_high) — the highest daily closing price ever recorded for that asset.
asset_alltime_low
Number of index constituents whose current live price is lower than their all-time low (all_time_low) — the lowest daily closing price ever recorded for that asset.
index_performance (7-day variants)
Description
asset_performance_7d_bearish
Number of constituents whose current live price is below the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2) — a rougher, week-scale version of asset_performance_24h_bearish.
asset_performance_7d_bullish
Number of constituents whose current live price is at or above the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2).
asset_sma_200d_over_7d
Number of constituents whose current live price or 7-day high (weekly_high) is at or above their 200-day SMA (avg_price_200d) — true if the asset was above its 200-day average at any point in the last 7 days, not just right now.
asset_sma_200d_under_7d
Number of constituents where neither the current live price nor the 7-day high crossed at or above the 200-day SMA.
asset_sma_50d_over_7d
Number of constituents whose current live price or 7-day high (weekly_high) is at or above their 50-day SMA (avg_price_50d).
asset_sma_50d_under_7d
Number of constituents where neither the current live price nor the 7-day high crossed at or above the 50-day SMA.
asset_1y_high_7d
Number of constituents whose current live price or 7-day high (weekly_high) exceeds their 1-year high (one_year_high) — true if the asset hit a new 1-year high at any point in the last 7 days, not just right now.
asset_1y_low_7d
Number of constituents whose current live price or 7-day low (weekly_low) is below their 1-year low (one_year_low).
asset_alltime_high_7d
Number of constituents whose current live price or 7-day high (weekly_high) exceeds their all-time high (all_time_high).
asset_alltime_low_7d
Number of constituents whose current live price or 7-day low (weekly_low) is below their all-time low (all_time_low).
constituent_info
Description
Array of cryptocurrency objects representing the current constituents of the index. This list is paginated — it contains only the constituents on the requested page (see the page/page_size parameters and the pagination object). Field structure follows the same pattern as other coin endpoints, with description excluded by default for performance.
Get Top 200 Index
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-top200-index"params={"timeseries_interval":"daily","weighting_method":"market_cap","metric":"closing_price","page":1,"page_size":50,"exclude_fields":"description"}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)top200_index=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-top200-index"timeseries_interval="daily"weighting_method="market_cap"metric="closing_price"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"timeseries_interval=$timeseries_interval"\--data-urlencode"weighting_method=$weighting_method"\--data-urlencode"metric=$metric"\--data-urlencode"page=1"\--data-urlencode"page_size=50"\--data-urlencode"exclude_fields=description"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-top200-index';constparams=newURLSearchParams({timeseries_interval:'daily',weighting_method:'market_cap',metric:'closing_price',page:1,page_size:50,exclude_fields:'description'});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
{"success":true,"data":{"index_info":{"_id":"6478bf4fc7a3444d2433fd36","created":"2022-06-12 20:09:13.368000","updated":"2024-08-25 22:31:06.880000","initial_timestamp":1491004800,"name":"Top 200","description":"Top 200 cryptocurrencies - weighted by market cap, rebalanced quarterly, and an initial starting balance of $1,000. This index aims to reflect the overall performance of the top cryptocurrency market.","algorithm":"top_ranked","sector":"Multi-Sector","industry":"Top Assets","asset_type":"dynamic","weighting_method":"market_cap","rebalancing_interval":"QUARTERLY","custom_weights":{}},"index_holdings":[{"ticker":"BTC","id":1,"quantity":15.287725841392287},{"ticker":"ETH","id":1027,"quantity":145.9797025951802},{"ticker":"BNB","id":1839,"quantity":378.512439581647}],"index_performance":{"marketcap":1205001505119.2155,"initial_value":1000,"value":25647.9592678145,"drawdown":-38.7335,"change_24hour":419.86630934640198,"change_7d":120.00662346527679,"changepct_24hour":1.6615626383813359,"changepct_7d":0.47349374410584241,"change_1m":-1583.7322879097555,"change_3m":-3273.669374681358,"change_6m":-4771.200695155574,"change_1y":9813.173206304606,"changepct_1m":-6.2017450828718057,"changepct_3m":-12.007393832845576,"changepct_6m":-18.600149843710264,"changepct_1y":62.44426200466917,"asset_new_highs":15,"asset_new_lows":3,"asset_performance_24h_bearish":89,"asset_performance_24h_bullish":111,"asset_sma_200d_over":45,"asset_sma_200d_under":155,"asset_sma_50d_over":87,"asset_sma_50d_under":113,"asset_1y_high":5,"asset_1y_low":2,"asset_alltime_high":1,"asset_alltime_low":0,"asset_performance_7d_bearish":76,"asset_performance_7d_bullish":124,"asset_sma_200d_over_7d":51,"asset_sma_200d_under_7d":149,"asset_sma_50d_over_7d":93,"asset_sma_50d_under_7d":107,"asset_1y_high_7d":6,"asset_1y_low_7d":2,"asset_alltime_high_7d":1,"asset_alltime_low_7d":0},"daily_timeseries_data":[{"date":"2017-04-01 00:00:00","value":1000.0},{"date":"2017-04-02 00:00:00","value":1014.5596183364022},{"date":"2017-04-03 00:00:00","value":1089.5754208146486},{"date":"2017-04-04 00:00:00","value":1134.4590760724552}],"constituent_info":[{"coin_id":1,"coin_slug":"bitcoin","name":"Bitcoin","symbol":"BTC","description":"","tier_lvl_1":"Digital Currency","tier_lvl_2":"General","last_updated":"2024-08-25T22:28:00.000Z","price":64510.34179357949,"market_cap":1273762311113.9631,"volume":17528186093.072506,"last_daily_close":64176.36706695918,"all_time_high":73079.3733787985,"all_time_low":0.04951,"avg_price_200d":63241.400978283695,"avg_price_50d":61652.955475512186,"change_24hour":65334.582599120564,"changepct_24hour":1.27768786,"change_7day":69978.65742318358,"changepct_7day":8.4766496,"change_1m":-1234.56,"changepct_1m":-1.87,"change_3m":2345.67,"changepct_3m":3.64,"change_6m":5678.90,"changepct_6m":8.81,"change_1y":12345.67,"changepct_1y":19.15,"one_year_high":73079.3733787985,"one_year_low":25684.019423324316,"weekly_high":64176.36706695918,"weekly_low":58482.74531725411}]},"pagination":{"page":1,"page_size":50,"total_items":200,"total_pages":4,"has_next":true,"has_prev":false}}
This endpoint returns information and performance data for the Top 200 Index, which tracks the top 200 cryptocurrencies weighted by market capitalization. The index metadata and timeseries data are returned in full on every page; the constituent_info list is paginated (50 constituents per page by default) to bound response size, and the top-level pagination object describes the constituent page. Constituents are ordered by market cap (descending), so page 1 holds the largest constituents.
HTTP Request
GET https://api.bitformance.com/api/v2/get-top200-index
Query Parameters
Parameter
Type
Description
timeseries_interval
string
Time interval for historical data. Accepted values: daily, fivemin. When daily is used, returns one data point per day at UTC-0. When fivemin is used, returns 24-hour data with data points every 5 minutes.
weighting_method
string
The weighting method for the index. Accepted values: market_cap, equal_weight. Defaults to market_cap if not specified or invalid.
metric
string
The metric to return in timeseries data. Accepted values: closing_price, market_cap. Defaults to closing_price.
page
integer
Page number of constituent_info to retrieve. Defaults to 1.
page_size
integer
Number of constituents to return per page in constituent_info. Defaults to 50, maximum 200.
include_fields
string
Comma-separated list of fields to add to the default set of constituent_info fields. Mainly useful for adding back description, which is excluded by default. Example: description
exclude_fields
string
Comma-separated list of fields to remove from the default set of constituent_info fields. Example: avg_price_200d,avg_price_50d
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
The response structure is identical to the Get Bitformance Altcoin Index endpoint, containing:
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination (describes the constituent_info page)
Description
page
The current page number of constituents returned.
page_size
The number of constituents returned per page.
total_items
The total number of constituents in the index across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of constituents exists.
has_prev
Boolean indicating whether a previous page of constituents exists.
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
updated
Timestamp indicating the last time the index was updated.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index.
description
The description of the index.
algorithm
The algorithm used to construct the index (typically "top_ranked").
sector
The sector classification of the index.
industry
The industry classification of the index.
asset_type
The type of assets included in the index (typically "dynamic").
weighting_method
The method used to assign weights to the assets in the index.
rebalancing_interval
The frequency at which the index is rebalanced.
custom_weights
Contains custom weighting values (usually empty for algorithmic indexes).
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
Unique asset identifier (CMC ID).
quantity
The amount of the asset currently held in the index.
index_performance
Description
marketcap
The total market capitalization of the index.
initial_value
The initial value of the index on inception.
value
Current value of the index.
drawdown
The maximum percentage loss from the index's peak value.
change_24hour
The change in the index's value over the last 24 hours in dollars.
changepct_24hour
The percentage change in the index's value over the last 24 hours.
change_7d
The change in the index's value over the last 7 days in dollars.
changepct_7d
The percentage change in the index's value over the last 7 days.
change_1m
The change in the index's value over the last 1 month in dollars.
changepct_1m
The percentage change in the index's value over the last 1 month.
change_3m
The change in the index's value over the last 3 months in dollars.
changepct_3m
The percentage change in the index's value over the last 3 months.
change_6m
The change in the index's value over the last 6 months in dollars.
changepct_6m
The percentage change in the index's value over the last 6 months.
change_1y
The change in the index's value over the last 1 year in dollars.
changepct_1y
The percentage change in the index's value over the last 1 year.
asset_new_highs
Number of holdings whose current live price is higher than their 7-day high (weekly_high) — the highest daily closing price recorded over the trailing 7 days.
asset_new_lows
Number of holdings whose current live price is lower than their 7-day low (weekly_low) — the lowest daily closing price recorded over the trailing 7 days.
asset_performance_24h_bearish
Number of holdings whose current live price is lower than their last daily close (last_daily_close), i.e. the asset has lost value since the previous day's close.
asset_performance_24h_bullish
Number of holdings whose current live price is at or above their last daily close (last_daily_close).
asset_sma_200d_over
Number of holdings currently trading at or above their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_200d_under
Number of holdings currently trading below their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_50d_over
Number of holdings currently trading at or above their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_sma_50d_under
Number of holdings currently trading below their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_1y_high
Number of holdings whose current live price is higher than their 1-year high (one_year_high) — the highest daily closing price recorded over the trailing ~365 days.
asset_1y_low
Number of holdings whose current live price is lower than their 1-year low (one_year_low) — the lowest daily closing price recorded over the trailing ~365 days.
asset_alltime_high
Number of holdings whose current live price is higher than their all-time high (all_time_high) — the highest daily closing price ever recorded for that asset.
asset_alltime_low
Number of holdings whose current live price is lower than their all-time low (all_time_low) — the lowest daily closing price ever recorded for that asset.
index_performance (7-day variants)
Description
asset_performance_7d_bearish
Number of holdings whose current live price is below the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2) — a rougher, week-scale version of asset_performance_24h_bearish.
asset_performance_7d_bullish
Number of holdings whose current live price is at or above the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2).
asset_sma_200d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 200-day SMA (avg_price_200d) — true if the asset was above its 200-day average at any point in the last 7 days, not just right now.
asset_sma_200d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 200-day SMA.
asset_sma_50d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 50-day SMA (avg_price_50d).
asset_sma_50d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 50-day SMA.
asset_1y_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their 1-year high (one_year_high) — true if the asset hit a new 1-year high at any point in the last 7 days, not just right now.
asset_1y_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their 1-year low (one_year_low).
asset_alltime_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their all-time high (all_time_high).
asset_alltime_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their all-time low (all_time_low).
daily_timeseries_data / fivemin_timeseries_data (when timeseries_interval is provided)
Description
date
The date and time in "YYYY-MM-DD HH:MM:SS" format.
value
The corresponding value (closing price or market cap) of the index.
constituent_info
Description
Cryptocurrency data for each asset in the index, including price, market cap, volume, performance metrics, and taxonomy classifications. This list is paginated — it contains only the constituents on the requested page (see the page/page_size parameters and the pagination object). description is excluded by default; add include_fields=description to include it. See the Get All Coins endpoint documentation for detailed field descriptions.
Get Top 200 Data
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-top200-data"params={"weighting_method":"marketcap","metric":"closing_price","page":1,"page_size":50}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)top200_data=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-top200-data"weighting_method="marketcap"metric="closing_price"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"weighting_method=$weighting_method"\--data-urlencode"metric=$metric"\--data-urlencode"page=1"\--data-urlencode"page_size=50"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-top200-data';constparams=newURLSearchParams({weighting_method:'marketcap',metric:'closing_price',page:1,page_size:50});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns special timeseries and constituent data for a Top 200 index created by the Bitformance Team. This index is currently not available on the website and can only be accessed via the API. The index is created using coins with valid taxonomy data that meet specific volume and market cap thresholds. It is rebalanced quarterly, and users can view the constituents per rebalancing period.
The top_200_rebalanced_constituents list is paginated (50 rebalancing periods per page by default) and ordered chronologically, since each period carries roughly 200 constituents and the history grows with every quarterly rebalance. The top-level pagination object describes that page. daily_timeseries_data is returned in full on every page.
HTTP Request
GET https://api.bitformance.com/api/v2/get-top200-data
Query Parameters
Parameter
Type
Description
weighting_method
string
The weighting method for the index. Accepted values: marketcap, equal_weight. Defaults to marketcap if not specified or invalid.
metric
string
The metric to return in timeseries data. Accepted values: closing_price, market_cap. Defaults to closing_price.
page
integer
Page number of rebalancing periods to retrieve. Defaults to 1.
page_size
integer
Number of rebalancing periods to return per page in top_200_rebalanced_constituents. Defaults to 50, maximum 200.
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
message
Status message indicating success or any warnings about parameter validation.
pagination (describes the top_200_rebalanced_constituents page)
Description
page
The current page number of rebalancing periods returned.
page_size
The number of rebalancing periods returned per page.
total_items
The total number of rebalancing periods available across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of rebalancing periods exists.
has_prev
Boolean indicating whether a previous page of rebalancing periods exists.
data
Description
weighting_method
The weighting method used for the index data returned.
daily_timeseries_data
Description
date
The date in "YYYY-MM-DD" format representing the trading day.
value
The corresponding value of the index (total_value for closing_price or total_marketcap for market_cap metric) at the specified date.
The date in "YYYY-MM-DD" format when the rebalancing occurred.
constituents
An array of cryptocurrency objects that were included in the index during this rebalancing period.
Individual constituent objects contain:
Description
symbol
The ticker symbol of the cryptocurrency.
cmc_id
The unique CoinMarketCap ID of the cryptocurrency.
Data Source
This endpoint retrieves data from CSV files stored in S3 that contain:
- Historical performance data for the Top 200 index with different weighting methods
- Quarterly rebalancing constituent data showing which cryptocurrencies were included in each rebalancing period
- Data spanning multiple years of index performance and composition changes
Use Cases
Historical analysis of top cryptocurrency market performance
Understanding how the composition of top cryptocurrencies has changed over time
Backtesting strategies based on top-ranked cryptocurrency indexes
Research into market concentration and dominance patterns
Get Sector Indexes
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
10 requests per minute
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-sector-indexes"params={"weighting_method":"market_cap","sector":"Smart Contract Platform","industry":"Layer 1","page":1,"page_size":50}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)sector_indexes=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-sector-indexes"weighting_method="market_cap"sector="Smart Contract Platform"industry="Layer 1"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"weighting_method=$weighting_method"\--data-urlencode"sector=$sector"\--data-urlencode"industry=$industry"\--data-urlencode"page=1"\--data-urlencode"page_size=50"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-sector-indexes';constparams=newURLSearchParams({weighting_method:'market_cap',sector:'Smart Contract Platform',industry:'Layer 1',page:1,page_size:50});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns sector-specific cryptocurrency indexes, allowing you to filter by sector, industry, and weighting method. Results are paginated (50 per page by default), and each response includes a pagination object describing the current page and total result count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-sector-indexes
Query Parameters
Parameter
Type
Description
weighting_method
string
Specifies the method of weighting. Accepted values: market_cap, equal_weight
sector
string
Specifies the sector to filter by (e.g., "Smart Contract Platform", "Digital Currency", "DeFi")
industry
string
Specifies the industry within the sector (e.g., "Layer 1", "General", "DEX")
page
integer
Page number to retrieve. Defaults to 1.
page_size
integer
Number of indexes to return per page. Defaults to 50, maximum 200.
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of indexes returned per page.
total_items
The total number of indexes available across all pages for the current query.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
updated
Timestamp indicating the last time the index was updated.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index.
description
The description of the index.
algorithm
The algorithm used to construct the index (typically "sector_ranked" for sector indexes).
sector
The sector classification of the index.
industry
The industry classification within the sector.
asset_type
The type of assets included in the index (typically "dynamic" for sector indexes).
weighting_method
The method used to assign weights to the assets in the index.
rebalancing_interval
The frequency at which the index is rebalanced (typically "quarterly").
custom_weights
Contains custom weighting values (usually empty for sector indexes).
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
Unique asset identifier (CMC ID).
quantity
The amount of the asset currently held in the index.
index_performance
Description
marketcap
The total market capitalization of the index, representing the aggregate value of all assets' market capitalization within the index, weighted by percentage of index.
initial_value
The initial value of the index on inception, also known as the starting investment.
value
Current value of the index.
drawdown
The maximum percentage loss from the index's peak value over a specified period.
change_24hour
The change in the index's value over the last 24 hours in dollars.
changepct_24hour
The percentage change in the index's value over the last 24 hours.
change_7d
The change in the index's value over the last 7 days in dollars.
changepct_7d
The percentage change in the index's value over the last 7 days.
change_1m
The change in the index's value over the last 1 month in dollars.
changepct_1m
The percentage change in the index's value over the last 1 month.
change_3m
The change in the index's value over the last 3 months in dollars.
changepct_3m
The percentage change in the index's value over the last 3 months.
change_6m
The change in the index's value over the last 6 months in dollars.
changepct_6m
The percentage change in the index's value over the last 6 months.
change_1y
The change in the index's value over the last 1 year in dollars.
changepct_1y
The percentage change in the index's value over the last 1 year.
asset_new_highs
The number of holdings in the index whose current live price is higher than their 7-day high (weekly_high) — the highest daily closing price recorded over the trailing 7 days.
asset_new_lows
The number of holdings in the index whose current live price is lower than their 7-day low (weekly_low) — the lowest daily closing price recorded over the trailing 7 days.
asset_performance_24h_bearish
The number of holdings in the index whose current live price is lower than their last daily close (last_daily_close), i.e. the asset has lost value since the previous day's close.
asset_performance_24h_bullish
The number of holdings in the index whose current live price is at or above their last daily close (last_daily_close).
asset_sma_200d_over
The number of holdings in the index currently trading at or above their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_200d_under
The number of holdings in the index currently trading below their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_50d_over
The number of holdings in the index currently trading at or above their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_sma_50d_under
The number of holdings in the index currently trading below their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_1y_high
The number of holdings in the index whose current live price is higher than their 1-year high (one_year_high) — the highest daily closing price recorded over the trailing ~365 days.
asset_1y_low
The number of holdings in the index whose current live price is lower than their 1-year low (one_year_low) — the lowest daily closing price recorded over the trailing ~365 days.
asset_alltime_high
The number of holdings in the index whose current live price is higher than their all-time high (all_time_high) — the highest daily closing price ever recorded for that asset.
asset_alltime_low
The number of holdings in the index whose current live price is lower than their all-time low (all_time_low) — the lowest daily closing price ever recorded for that asset.
index_performance (7-day variants)
Description
asset_performance_7d_bearish
Number of holdings whose current live price is below the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2) — a rougher, week-scale version of asset_performance_24h_bearish.
asset_performance_7d_bullish
Number of holdings whose current live price is at or above the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2).
asset_sma_200d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 200-day SMA (avg_price_200d) — true if the asset was above its 200-day average at any point in the last 7 days, not just right now.
asset_sma_200d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 200-day SMA.
asset_sma_50d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 50-day SMA (avg_price_50d).
asset_sma_50d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 50-day SMA.
asset_1y_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their 1-year high (one_year_high) — true if the asset hit a new 1-year high at any point in the last 7 days, not just right now.
asset_1y_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their 1-year low (one_year_low).
asset_alltime_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their all-time high (all_time_high).
asset_alltime_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their all-time low (all_time_low).
Get Top Sector Movers
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
10 requests per minute
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Range mode: top 10 gainers in a sector over the last 7 days
response=requests.get('https://api.bitformance.com/api/v2/get-top-sector-movers',headers={'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'},params={'n':10,'order':'desc','sector':'Smart Contract Platform','subsector':'Layer 1','granularity':'days','range':7})movers=response.json()
# Range mode: top 10 gainers in a sector over the last 7 days
curl -G"https://api.bitformance.com/api/v2/get-top-sector-movers"\--data-urlencode"n=10"\--data-urlencode"order=desc"\--data-urlencode"sector=Smart Contract Platform"\--data-urlencode"subsector=Layer 1"\--data-urlencode"granularity=days"\--data-urlencode"range=7"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
This endpoint returns the top N coins ranked by percentage price return within a sector (and optionally a subsector) over a given time range. It is useful for surfacing the biggest gainers or losers in a given segment of the market.
The endpoint supports two mutually exclusive time-selection modes:
Range mode (default): specify a granularity (days or minutes) and a range (a number of days or minutes back from now).
Timestamp mode: specify an explicit start (Unix timestamp), with an optional end (defaults to now). If a valid start is provided, it takes precedence over granularity/range.
HTTP Request
GET https://api.bitformance.com/api/v2/get-top-sector-movers
Query Parameters
Parameter
Type
Default
Description
n
integer
10
Number of coins to return. Must be >= 1. Maximum value is 200.
order
string
desc
Ranking direction. desc returns the highest percentage returns first (top gainers); asc returns the lowest first (top losers). Accepted values: asc, desc
sector
string
-
Required. Sector to filter by (tier_lvl_1), e.g. "Smart Contract Platform". If omitted, the response is successful but data is empty and warnings contains "'sector' is required".
subsector
string
-
Subsector to filter by (tier_lvl_2), e.g. "Layer 1". Optional.
top200_only
boolean
true
Restrict the candidate coins to those in the top 200 of the eligible universe. Accepted values: true, 1, yes, on / false, 0, no, off. Set to false to rank every coin carrying the requested sector/subsector designation.
top200_asof
string
latest
Which top-200 snapshot defines the universe. latest uses the most recent snapshot regardless of the requested range (so an old range still compares today's top 200); range_end uses the newest snapshot at or before the requested end (so you compare the coins that were in the top 200 at the end of your range). Only meaningful when top200_only is true.
granularity
string
days
(Range mode only) Time unit for range. Accepted values: days (day, daily) or minutes (minute, min, mins, fivemin, 5m).
range
integer
7 (days) / 60 (minutes)
(Range mode only) How far back from now to measure the return. For days: minimum 1, capped at your tier's historical access window. For minutes: minimum 5, maximum 1440.
start
integer
-
(Timestamp mode) Unix timestamp (seconds) for the start of the range. Providing a valid start switches the endpoint into timestamp mode. Clamped to your tier's historical access window.
end
integer
now
(Timestamp mode) Unix timestamp (seconds) for the end of the range. Defaults to now and is clamped to now. Providing end without a valid start is not supported and falls back to range mode.
include_fields
string
-
Comma-separated list of fields to add to the default set of response fields. Mainly useful for adding back description, which is excluded by default.
exclude_fields
string
-
Comma-separated list of fields to remove from the default set of response fields. Example: tier_lvl_1,tier_lvl_2
Data Resolution
Five-minute data (cmc_fivemin) is only retained for roughly the last 24 hours. Timestamps older than that are resolved from daily data (cmc_daily), while recent timestamps use the finer five-minute data with a daily fallback. The params.start_table and params.end_table fields in the response tell you which underlying table each side of the return was resolved from.
For each coin, the start price is the earliest available close at or after the start timestamp, and the end price is the latest available close at or before the end timestamp. Percentage return is calculated as ((end_price - start_price) / start_price) * 100.
Field Selection
include_fields and exclude_fields both start from the default set of fields (every field listed below except description, which is excluded by default) and can be combined in the same request:
include_fields adds fields to the default set.
exclude_fields removes fields from the default set.
If the same field appears in both, exclude_fields wins and the field is left out.
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
warnings
An array of human-readable strings describing any defaults or clamps that were applied to the request (e.g. an invalid n, an out-of-range range, or a missing sector). Empty when the request was accepted exactly as sent.
params (echo of the resolved request)
Description
mode
The time-selection mode that was used: range or timestamp.
n
The number of coins requested (after clamping to the 1–200 range).
granularity
The time unit used in range mode (days or minutes). null in timestamp mode.
range
The range value used in range mode. null in timestamp mode.
start
The resolved start Unix timestamp (seconds) actually used for the query.
end
The resolved end Unix timestamp (seconds) actually used for the query.
start_table
The underlying table the start price was resolved from (cmc_fivemin or cmc_daily).
end_table
The underlying table the end price was resolved from (cmc_fivemin or cmc_daily).
sector
The sector filter that was applied (null if none was supplied, in which case no results are returned).
subsector
The subsector filter that was applied (null if none).
order
The ranking direction that was applied (asc or desc).
top200_only
Whether the candidate set was restricted to the top 200 eligible coins.
top200_asof
Which top-200 snapshot was used (latest or range_end). Only meaningful when top200_only is true.
data (array of coin objects, ranked)
Description
coin_id
Unique coin identifier (CMC ID).
coin_slug
URL-friendly version of the coin's name.
name
The full name of the cryptocurrency.
symbol
The ticker symbol of the cryptocurrency.
description
Description of the cryptocurrency. (Excluded by default)
tier_lvl_1
The level 1 taxonomy classification of the cryptocurrency (sector).
tier_lvl_2
The level 2 taxonomy classification of the cryptocurrency (sub-sector/industry).
start_price
The coin's closing price at the start of the range (earliest close at or after start).
end_price
The coin's closing price at the end of the range (latest close at or before end).
start_date
The date/time of the resolved start price (UTC, YYYY-MM-DD HH:MM:SS).
end_date
The date/time of the resolved end price (UTC, YYYY-MM-DD HH:MM:SS).
pct_return
The percentage price return over the range, rounded to 4 decimal places.
Use Cases
Surface the biggest gainers or losers in a sector over the last day, week, or custom window.
Build sector-level "top movers" leaderboards.
Compare short-term (minute-granularity) momentum against longer-term (day-granularity) trends.
Screen a subsector for outperformers before deeper analysis.
Get Altcoin Season Index
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL
base_url="https://api.bitformance.com/api/v2/get-altcoin-season"# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"})altcoin_season=response.json()
# Define the base URLbase_url="https://api.bitformance.com/api/v2/get-altcoin-season"# Send the GET request using curl
curl -X GET "$base_url"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URLconstbaseUrl='https://api.bitformance.com/api/v2/get-altcoin-season';// Send the GET requestfetch(baseUrl,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns historical data for the Altcoin Season Index, which measures the relative performance of altcoins compared to Bitcoin over time.
HTTP Request
GET https://api.bitformance.com/api/v2/get-altcoin-season
Query Parameters
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
data
Description
daily_timeseries_data
Description
date
The date and time in "YYYY-MM-DD HH:MM:SS" format representing the timestamp of the index calculation.
value
The corresponding value of the Altcoin Season Index at the specified date. Values typically range from 0 to 1, where higher values indicate stronger altcoin performance relative to Bitcoin.
Understanding the Altcoin Season Index
The Altcoin Season Index measures the relative performance of altcoins compared to Bitcoin:
Values closer to 0: Bitcoin is outperforming most altcoins (Bitcoin season)
Values closer to 1: Altcoins are outperforming Bitcoin (Altcoin season)
Values around 0.5: Mixed performance between Bitcoin and altcoins
This index helps traders and analysts identify market cycles and periods when altcoins tend to outperform or underperform relative to Bitcoin.
Use Cases
Market Cycle Analysis: Identify periods of altcoin strength vs Bitcoin dominance
Portfolio Strategy: Inform allocation decisions between Bitcoin and altcoins
Trend Analysis: Understand historical patterns in crypto market leadership
Research: Study correlations between market cycles and altcoin performance
This endpoint returns taxonomy information for classified cryptocurrencies, organized by sector and industry. Because a single unfiltered request could otherwise return every classified coin (and each coin's potentially large description), results are paginated. Coins are ordered by market cap (descending) and paged across the whole set; the requested page is then regrouped into the nested sector → industry structure, so each response only contains the sectors and industries that have coins on that page. Each response includes a top-level pagination object describing the current page and total coin count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-taxonomies
Query Parameters
Parameter
Type
Default
Description
page
integer
1
Page number to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
100
Number of coins to return per page (across the whole classified set, before regrouping). Maximum value is 200
include_fields
string
-
Comma-separated list of fields to add to the default set of cryptocurrency object fields. Mainly useful for adding back description, which is excluded by default. Example: description
exclude_fields
string
-
Comma-separated list of fields to remove from the default set of cryptocurrency object fields. Example: avg_price_200d,avg_price_50d
Field Selection
include_fields and exclude_fields both start from the default set of fields (every field listed below except description, which is excluded by default) and can be combined in the same request:
include_fields adds fields to the default set.
exclude_fields removes fields from the default set.
If the same field appears in both, exclude_fields wins and the field is left out.
Include Fields
Add description back into the default response:
GET /api/v2/get-taxonomies?include_fields=description
Exclude Fields
Remove specific fields from the default response:
GET /api/v2/get-taxonomies?exclude_fields=avg_price_200d,avg_price_50d
Combining Both
exclude_fields takes priority when a field appears in both lists:
GET /api/v2/get-taxonomies?include_fields=description&exclude_fields=description
This still excludes description, since exclude_fields overrides include_fields for that field.
Available Fields
coin_id - Unique coin identifier (CMC ID)
coin_slug - URL-friendly version of the coin's name
name - The full name of the cryptocurrency
symbol - The ticker symbol of the cryptocurrency
description - Description of the cryptocurrency (excluded by default)
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of coins returned per page (across the whole classified set, before regrouping into sectors/industries).
total_items
The total number of classified coins available across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
data (nested object structure)
Description
The response data is organized as a nested object structure containing only the coins on the current page:
- First level: Sector names (tier_lvl_1) as keys
- Second level: Industry names (tier_lvl_2) as keys
- Third level: Arrays of cryptocurrency objects belonging to that sector/industry combination
Individual cryptocurrency objects contain:
Description
coin_id
Unique coin identifier (CMC ID).
coin_slug
URL-friendly version of the coin's name.
name
The full name of the cryptocurrency.
symbol
The ticker symbol of the cryptocurrency.
description
Description of the cryptocurrency. (Excluded by default)
tier_lvl_1
The level 1 taxonomy classification of the cryptocurrency (sector).
tier_lvl_2
The level 2 taxonomy classification of the cryptocurrency (sub-sector/industry).
last_updated
The timestamp of the last time the data for this cryptocurrency was updated.
price
The current live price of the cryptocurrency (in USD). Refreshed roughly every 5 minutes from the market data feed.
market_cap
The total market capitalization of the cryptocurrency (price × circulating supply).
volume
The total trading volume of the cryptocurrency over the last 24 hours.
last_daily_close
The cryptocurrency's closing price on the most recently completed UTC trading day. Recalculated once per day; does not move with the live price field between daily runs.
all_time_high
The highest daily closing price ever recorded for this cryptocurrency, based on its full daily price history. Recalculated once per day, so the live price can trade above this value intraday before that day's close is folded in.
all_time_low
The lowest daily closing price ever recorded for this cryptocurrency. Recalculated once per day, same caveat as all_time_high.
avg_price_200d
The 200-day simple moving average (SMA) of daily closing prices — the mean of the trailing 200 daily closes. Recalculated once per day, not a live average of the price field.
avg_price_50d
The 50-day simple moving average (SMA) of daily closing prices — the mean of the trailing 50 daily closes. Recalculated once per day, not a live average of the price field.
change_24hour
The change in the cryptocurrency's value over the last 24 hours in dollars.
changepct_24hour
The percentage change in the cryptocurrency's value over the last 24 hours.
change_7day
The change in the cryptocurrency's value over the last 7 days in dollars.
changepct_7day
The percentage change in the cryptocurrency's value over the last 7 days.
change_1m
The change in the cryptocurrency's value over the last 1 month in dollars.
changepct_1m
The percentage change in the cryptocurrency's value over the last 1 month.
change_3m
The change in the cryptocurrency's value over the last 3 months in dollars.
changepct_3m
The percentage change in the cryptocurrency's value over the last 3 months.
change_6m
The change in the cryptocurrency's value over the last 6 months in dollars.
changepct_6m
The percentage change in the cryptocurrency's value over the last 6 months.
change_1y
The change in the cryptocurrency's value over the last 1 year in dollars.
changepct_1y
The percentage change in the cryptocurrency's value over the last 1 year.
one_year_high
The highest daily closing price recorded over the trailing ~365 days (the most recent 366 daily records). Recalculated once per day, so the live price can exceed this value intraday before that day's close updates the baseline.
one_year_low
The lowest daily closing price recorded over the trailing ~365 days. Recalculated once per day, same caveat as one_year_high.
weekly_high
The highest daily closing price recorded over the trailing 7 days. Recalculated once per day.
weekly_low
The lowest daily closing price recorded over the trailing 7 days. Recalculated once per day.
Get User Indexes
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-user-indexes"params={"page":1,"page_size":50}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)user_indexes=response.json()
# Define the base URLbase_url="https://api.bitformance.com/api/v2/get-user-indexes"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"page=1"\--data-urlencode"page_size=50"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-user-indexes';constparams=newURLSearchParams({page:1,page_size:50});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns the custom indexes created by the authenticated user, including their configuration, holdings, and performance metrics. Results are paginated (50 per page by default), and each response includes a pagination object describing the current page and total result count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-user-indexes
Query Parameters
Parameter
Type
Default
Description
page
integer
1
Page number to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
50
Number of indexes to return per page. Maximum value is 200
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of indexes returned per page.
total_items
The total number of indexes owned by the authenticated user across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
data (array of index objects)
Description
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index as set by the user.
description
The description of the index as set by the user.
weighting_method
The method used to assign weights to the assets in the index. Common values: market_cap, equal_weight, custom.
rebalancing_interval
The frequency at which the index is rebalanced (e.g., daily, weekly, monthly, quarterly).
custom_weights
Contains custom weighting values when the weighting_method is set to "custom". Empty object for other weighting methods.
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
Unique asset identifier (CMC ID).
quantity
The amount of the asset currently held in the index (if available).
index_performance
Description
initial_value
The initial value of the index on inception, also known as the starting investment.
value
Current value of the index (if calculated).
change_24hour
The change in the index's value over the last 24 hours in dollars (if available).
changepct_24hour
The percentage change in the index's value over the last 24 hours (if available).
change_7d
The change in the index's value over the last 7 days in dollars (if available).
changepct_7d
The percentage change in the index's value over the last 7 days (if available).
change_1m
The change in the index's value over the last 1 month in dollars (if available).
changepct_1m
The percentage change in the index's value over the last 1 month (if available).
change_3m
The change in the index's value over the last 3 months in dollars (if available).
changepct_3m
The percentage change in the index's value over the last 3 months (if available).
change_6m
The change in the index's value over the last 6 months in dollars (if available).
changepct_6m
The percentage change in the index's value over the last 6 months (if available).
change_1y
The change in the index's value over the last 1 year in dollars (if available).
changepct_1y
The percentage change in the index's value over the last 1 year (if available).
Index Types
User indexes can be configured with different weighting methods:
Market Cap Weighting
- Assets are weighted based on their market capitalization
- Larger market cap assets have higher weights in the index
Equal Weight
- All assets in the index receive equal weighting
- Useful for balanced exposure across all holdings
Custom Weighting
- User-defined weights for each asset
- Allows for precise control over asset allocation
- Custom weights are specified as percentages in the custom_weights object
Performance Calculation
Performance metrics are calculated when available and may vary based on:
- Index age and data availability
- Calculation completion status
- Asset data quality and history
Get Index Data
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-index-data"params={"index_id":"65569daf76cd9d2bc8ec55b5","timeseries_interval":"daily","metric":"closing_price"}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)index_data=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-index-data"index_id="65569daf76cd9d2bc8ec55b5"timeseries_interval="daily"metric="closing_price"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"index_id=$index_id"\--data-urlencode"timeseries_interval=$timeseries_interval"\--data-urlencode"metric=$metric"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-index-data';constparams=newURLSearchParams({index_id:'65569daf76cd9d2bc8ec55b5',timeseries_interval:'daily',metric:'closing_price'});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this (this example shows the public-index shape; see "Index Access Control" below for how the user-index shape differs):
{"success":true,"data":{"index_info":{"_id":"65569daf76cd9d2bc8ec55b5","created":"2023-11-16 22:54:38.948000","updated":"2024-09-10 15:56:21.374000","initial_timestamp":1483315200,"name":"50/50 Bitcoin + Ethereum","description":"50/50 Bitcoin + Ethereum with a monthly rebalance and an initial starting balance of $1,000.","algorithm":"standard","sector":"","industry":"","asset_type":"fixed","weighting_method":"equal_weight","rebalancing_interval":"monthly","custom_weights":{}},"index_holdings":[{"ticker":"BTC","id":1,"quantity":2.1383870222874193},{"ticker":"ETH","id":1027,"quantity":50.1803901851935}],"index_performance":{"marketcap":1400425365144.1763,"initial_value":"1000","value":238173.42538224178,"drawdown":-35.5936,"change_24hour":4544.369432365114,"change_7d":-15594.211603870266,"changepct_24hour":1.9451216861228402,"changepct_7d":-6.1450749942254035,"change_1m":-22496.40538317163,"change_3m":-91255.94576247892,"change_6m":-98844.70487499418,"change_1y":105391.0504697602,"changepct_1m":-8.630229788048235,"changepct_3m":-27.701217242827305,"changepct_6m":-29.32919507907451,"changepct_1y":79.37126485290287,"asset_new_highs":0,"asset_new_lows":0,"asset_performance_24h_bearish":2,"asset_performance_24h_bullish":0,"asset_sma_200d_over":0,"asset_sma_200d_under":2,"asset_sma_50d_over":0,"asset_sma_50d_under":2,"asset_1y_high":0,"asset_1y_low":0,"asset_alltime_high":0,"asset_alltime_low":0,"asset_performance_7d_bearish":1,"asset_performance_7d_bullish":1,"asset_sma_200d_over_7d":1,"asset_sma_200d_under_7d":1,"asset_sma_50d_over_7d":1,"asset_sma_50d_under_7d":1,"asset_1y_high_7d":0,"asset_1y_low_7d":0,"asset_alltime_high_7d":0,"asset_alltime_low_7d":0},"daily_timeseries_data":[{"date":"2017-01-02 00:00:00","value":1000.0},{"date":"2017-01-03 00:00:00","value":1024.3316236471035},{"date":"2017-01-04 00:00:00","value":1117.7890317260942},{"date":"2017-01-05 00:00:00","value":1266.7095610690671},{"date":"2017-01-06 00:00:00","value":1134.9070354154176},{"date":"2017-01-07 00:00:00","value":1079.2425800449123}]}}
This endpoint returns detailed information for a specific index, including historical performance data. It works with both public indexes and user-created indexes.
HTTP Request
GET https://api.bitformance.com/api/v2/get-index-data
Query Parameters
Parameter
Type
Required
Description
index_id
string
Yes
The hexadecimal ID of the index to query. Index IDs can be retrieved from the "get-browsable-indexes" or "get-user-indexes" endpoints.
timeseries_interval
string
No
Time interval for historical data. Accepted values: daily, fivemin. When daily is used, returns one data point per day at UTC-0. When fivemin is used, returns 24-hour data with data points every 5 minutes.
metric
string
No
The metric to return in timeseries data. Accepted values: closing_price, market_cap. Defaults to closing_price.
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Index Access Control
This endpoint supports both public and private indexes:
Public Indexes
- Browsable indexes accessible to all users
- Sector indexes and Bitformance-created indexes
- No ownership validation required
User Indexes
- Custom indexes created by users
- Only accessible by the index owner
- Ownership is validated against the authenticated user
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
index_info
Description
_id
Unique index identifier.
created
Timestamp indicating when the index was created.
updated
(public indexes only) Timestamp indicating the last time the index was updated.
initial_timestamp
Timestamp representing the starting point for the index's data and performance tracking.
name
The name of the index.
description
The description of the index.
algorithm
(public indexes only) The algorithm used to construct the index.
sector
(public indexes only) The sector classification of the index, if it's a sector index.
industry
(public indexes only) The industry classification within the sector, if applicable.
asset_type
(public indexes only) The type of assets included in the index.
weighting_method
The method used to assign weights to the assets in the index.
rebalancing_interval
The frequency at which the index is rebalanced.
custom_weights
Contains custom weighting values if applicable.
index_holdings
Description
ticker
The ticker symbol of the asset held in the index.
id
Unique asset identifier (CMC ID).
quantity
The amount of the asset currently held in the index (if available).
index_performance
Description
marketcap
(public indexes only) The total market capitalization of the index.
initial_value
The initial value of the index on inception.
value
Current value of the index.
drawdown
(public indexes only) The maximum percentage loss from the index's peak value over a specified period.
change_24hour
The change in the index's value over the last 24 hours in dollars.
changepct_24hour
The percentage change in the index's value over the last 24 hours.
change_7d
The change in the index's value over the last 7 days in dollars.
changepct_7d
The percentage change in the index's value over the last 7 days.
change_1m
The change in the index's value over the last 1 month in dollars.
changepct_1m
The percentage change in the index's value over the last 1 month.
change_3m
The change in the index's value over the last 3 months in dollars.
changepct_3m
The percentage change in the index's value over the last 3 months.
change_6m
The change in the index's value over the last 6 months in dollars.
changepct_6m
The percentage change in the index's value over the last 6 months.
change_1y
The change in the index's value over the last 1 year in dollars.
changepct_1y
The percentage change in the index's value over the last 1 year.
asset_new_highs
(public indexes only) The number of holdings in the index whose current live price is higher than their 7-day high (weekly_high) — the highest daily closing price recorded over the trailing 7 days.
asset_new_lows
(public indexes only) The number of holdings in the index whose current live price is lower than their 7-day low (weekly_low) — the lowest daily closing price recorded over the trailing 7 days.
asset_performance_24h_bearish
(public indexes only) The number of holdings in the index whose current live price is lower than their last daily close (last_daily_close), i.e. the asset has lost value since the previous day's close.
asset_performance_24h_bullish
(public indexes only) The number of holdings in the index whose current live price is at or above their last daily close (last_daily_close).
asset_sma_200d_over
(public indexes only) The number of holdings in the index currently trading at or above their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_200d_under
(public indexes only) The number of holdings in the index currently trading below their 200-day simple moving average of daily closing prices (avg_price_200d).
asset_sma_50d_over
(public indexes only) The number of holdings in the index currently trading at or above their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_sma_50d_under
(public indexes only) The number of holdings in the index currently trading below their 50-day simple moving average of daily closing prices (avg_price_50d).
asset_1y_high
(public indexes only) The number of holdings in the index whose current live price is higher than their 1-year high (one_year_high) — the highest daily closing price recorded over the trailing ~365 days.
asset_1y_low
(public indexes only) The number of holdings in the index whose current live price is lower than their 1-year low (one_year_low) — the lowest daily closing price recorded over the trailing ~365 days.
asset_alltime_high
(public indexes only) The number of holdings in the index whose current live price is higher than their all-time high (all_time_high) — the highest daily closing price ever recorded for that asset.
asset_alltime_low
(public indexes only) The number of holdings in the index whose current live price is lower than their all-time low (all_time_low) — the lowest daily closing price ever recorded for that asset.
index_performance (7-day variants, public indexes only)
Description
asset_performance_7d_bearish
Number of holdings whose current live price is below the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2) — a rougher, week-scale version of asset_performance_24h_bearish.
asset_performance_7d_bullish
Number of holdings whose current live price is at or above the midpoint of their 7-day high/low range ((weekly_high + weekly_low) / 2).
asset_sma_200d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 200-day SMA (avg_price_200d) — true if the asset was above its 200-day average at any point in the last 7 days, not just right now.
asset_sma_200d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 200-day SMA.
asset_sma_50d_over_7d
Number of holdings whose current live price or 7-day high (weekly_high) is at or above their 50-day SMA (avg_price_50d).
asset_sma_50d_under_7d
Number of holdings where neither the current live price nor the 7-day high crossed at or above the 50-day SMA.
asset_1y_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their 1-year high (one_year_high) — true if the asset hit a new 1-year high at any point in the last 7 days, not just right now.
asset_1y_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their 1-year low (one_year_low).
asset_alltime_high_7d
Number of holdings whose current live price or 7-day high (weekly_high) exceeds their all-time high (all_time_high).
asset_alltime_low_7d
Number of holdings whose current live price or 7-day low (weekly_low) is below their all-time low (all_time_low).
daily_timeseries_data / fivemin_timeseries_data (when timeseries_interval is provided)
Description
date
The date and time in "YYYY-MM-DD HH:MM:SS" format representing the timestamp of the data point.
value
The corresponding value (closing price or market cap) of the index at the specified date and time.
Error Handling
If the requested index cannot be found or accessed, the endpoint will return an error message indicating the issue. Common error scenarios include:
Invalid index ID format
Index not found
Insufficient permissions (for user indexes)
Index data unavailable
Get Rebalancing History
Access Tier: STARTER
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
Not Available
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-rebalancing-history"params={"index_id":"67a4eef73960076e78e166ca","page":1,"page_size":50}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)rebalancing_data=response.json()
# Define the base URL and query parametersbase_url="https://api.bitformance.com/api/v2/get-rebalancing-history"index_id="67a4eef73960076e78e166ca"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"index_id=$index_id"\--data-urlencode"page=1"\--data-urlencode"page_size=50"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-rebalancing-history';constparams=newURLSearchParams({index_id:'67a4eef73960076e78e166ca',page:1,page_size:50});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns the rebalancing history for a specific index, showing how asset allocations have changed over time during each rebalancing period. Rebalancing periods are paginated (50 per page by default), and each response includes a pagination object describing the current page and total number of rebalancing periods. The coin_map reflects only the coins that appear on the returned page.
HTTP Request
GET https://api.bitformance.com/api/v2/get-rebalancing-history
Query Parameters
Parameter
Type
Required
Description
index_id
string
Yes
The hexadecimal ID of the index to query. Index IDs can be retrieved from the "get-browsable-indexes" endpoint. Must be a sector index or market cap tiered index.
page
integer
No
Page number of rebalancing periods to retrieve. Defaults to 1.
page_size
integer
No
Number of rebalancing periods to return per page. Defaults to 50, maximum 200.
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
index_id
The unique identifier for the requested index.
coin_map
An object mapping coin IDs to their symbol and name information. Keys are coin IDs (as strings), and values contain the coin's symbol and full name. Only includes coins that appear in the rebalancing periods on the returned page.
rebalances
An array of rebalancing events for the requested page, ordered chronologically. Each event contains the date, timestamp, and holdings for that rebalancing period.
pagination
Description
page
The current page number returned.
page_size
The number of rebalancing periods returned per page.
total_items
The total number of rebalancing periods available for this index across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
Rebalance Object Structure
Each object in the rebalances array contains:
Field
Description
date
The date and time of the rebalancing event in ISO 8601 format (YYYY-MM-DDTHH:MM:SS).
timestamp
The Unix timestamp (in seconds) of the rebalancing event. Can be null if the underlying data has no timestamp for that row.
holdings
An object mapping coin holdings keys to actual quantities held. Keys are in the format {coin_id}_holdings, where coin_id corresponds to a key in the coin_map. Values represent the actual number of coins/tokens held in the index at that rebalancing (e.g., 0.673 BTC, 3.74 ETH, etc...).
Understanding the Response
The rebalancing history shows how the index composition has changed over time:
coin_map
- Provides a lookup table for the coins that appear in the rebalancing periods on the current page
- Keys are unique coin IDs (converted to strings)
- Each entry contains the coin's trading symbol and full name
rebalances
- An array of historical rebalancing events
- Each event is timestamped and contains the complete holdings allocation at that point in time
- Events are ordered chronologically from earliest to most recent
- The holdings object uses keys in the format {coin_id}_holdings to map to actual quantities held (not percentages)
holdings
- Keys follow the pattern {coin_id}_holdings (e.g., 1_holdings for Bitcoin)
- Values represent the actual quantity of that coin held in the index (not percentages)
- For example, "1_holdings": 0.6731870276692127 means the index holds 0.673 Bitcoin
- If a coin wasn't included at a particular rebalancing, it will be absent from the holdings object
- The coin_id in each holdings key corresponds to a coin_id in the coin_map
Use Cases
This endpoint is valuable for:
- Analyzing how index composition changes over time
- Understanding asset allocation shifts in response to market conditions
- Tracking when new assets enter or exit the index
- Evaluating index diversification trends
- Building visualizations of index evolution
- Backtesting index performance with historical allocations
Error Handling
Common error scenarios:
Status
Response
Cause
400
{"error": "index_id parameter is required"}
The index_id query parameter was omitted.
404
{"error": "Rebalancing history not stored for index {index_id}"}
No rebalancing history file exists for that index — either the ID is invalid, or it's a valid index that doesn't have rebalancing history available (e.g. a custom user-created index).
500
{"error": "An error occurred while retrieving rebalancing history"}
An unexpected server-side error occurred while loading or processing the data.
Get User API Summary
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
10 requests per minute
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL
base_url="https://api.bitformance.com/api/v2/get-user-api-summary"# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"})api_summary=response.json()
# Define the base URLbase_url="https://api.bitformance.com/api/v2/get-user-api-summary"# Send the GET request using curl
curl -X GET "$base_url"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URLconstbaseUrl='https://api.bitformance.com/api/v2/get-user-api-summary';// Send the GET requestfetch(baseUrl,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns API usage information and account details for the authenticated user.
HTTP Request
GET https://api.bitformance.com/api/v2/get-user-api-summary
Query Parameters
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
data
Description
api-key
The user's API key identifier.
tier
The current subscription tier of the user. Possible values: free, starter, analyst, professional, enterprise.
credits
The number of API credits remaining for the current billing period.
expiration
The expiration date and time of the current subscription in ISO 8601 format.
active
Boolean indicating whether the API key is currently active and functional.
Subscription Tiers
The API supports five subscription tiers with different features and limits:
Free Tier
- 5,000 credits per month
- 10 requests per minute
- 3 months of historical data
- Access to basic endpoints
Starter Tier
- 250,000 credits per month
- 20 requests per minute
- 6 months of historical data
- Access to advanced endpoints
Analyst Tier
- 250,000 credits per month
- 20 requests per minute
- 3 years of historical data
- Full endpoint access
Professional Tier
- 250,000 credits per month
- 30 requests per minute
- All time historical data
- Commercial use available
- Priority support
Enterprise Tier
- 2,000,000 credits per month
- Custom rate limits
- All time historical data
- Commercial use available
- Beta features available
- Dedicated support
Credit Management
Monthly Reset: Credits are replenished at the start of each billing cycle
No Rollover: Unused credits do not carry over to the next month
Real-time Tracking: Credit balance is updated with each API request
Usage Monitoring: Track your consumption to avoid service interruption
Use Cases
Monitor Usage: Check remaining credits and plan API usage accordingly
Validate Access: Confirm subscription tier and feature availability
Account Management: Verify subscription status and expiration dates
Integration Planning: Design applications based on rate limits and credit allowances
Error Scenarios
If no API keys are found for the user, the endpoint will return a message indicating that no API keys exist for the account. This typically occurs when:
The user account has not yet generated API keys
API keys have been revoked or deleted
There are issues with account provisioning
Get User API Transactions
Access Tier: FREE
Credits Cost: 1 credit per request
Rate Limits
Tier
Limit
Free
10 requests per minute
Starter
20 requests per minute
Analyst
20 requests per minute
Professional
30 requests per minute
Enterprise
Custom
importrequests# Define the base URL and query parameters
base_url="https://api.bitformance.com/api/v2/get-user-api-transactions"params={"page":1,"page_size":100}# Send the GET request
response=requests.get(base_url,headers={"API-KEY":"your_api_key","API-SECRET-KEY":"your_secret_key"},params=params)api_transactions=response.json()
# Define the base URLbase_url="https://api.bitformance.com/api/v2/get-user-api-transactions"# Send the GET request using curl
curl -G"$base_url"\--data-urlencode"page=1"\--data-urlencode"page_size=100"\-H"API-KEY: your_api_key"\-H"API-SECRET-KEY: your_secret_key"
constfetch=require('node-fetch');// Define the base URL and query parametersconstbaseUrl='https://api.bitformance.com/api/v2/get-user-api-transactions';constparams=newURLSearchParams({page:1,page_size:100});// Send the GET requestfetch(`${baseUrl}?${params.toString()}`,{method:'GET',headers:{'API-KEY':'your_api_key','API-SECRET-KEY':'your_secret_key'}}).then(response=>response.json()).then(data=>console.log(data));
The above command returns JSON structured like this:
This endpoint returns a detailed history of API calls made by the authenticated user, including performance metrics and response information. Because this history grows over time, results are paginated (100 per page by default) and each response includes a pagination object describing the current page and total transaction count.
HTTP Request
GET https://api.bitformance.com/api/v2/get-user-api-transactions
Query Parameters
Parameter
Type
Default
Description
page
integer
1
Page number to retrieve (e.g., 1, 2, 3, etc.)
page_size
integer
100
Number of transactions to return per page. Maximum value is 500
Headers
Header
Description
API-KEY
Your unique API key.
API-SECRET-KEY
Your API secret key.
Response
field
Description
success
A boolean value indicating whether the API request was successful (true) or not (false).
pagination
Description
page
The current page number returned.
page_size
The number of transactions returned per page.
total_items
The total number of transactions recorded for the authenticated user across all pages.
total_pages
The total number of pages available given the current page_size.
has_next
Boolean indicating whether a subsequent page of results exists.
has_prev
Boolean indicating whether a previous page of results exists.
data
Description
user_id
The unique identifier of the user making the API calls.
api_calls (array of transaction objects)
Description
id
Unique identifier for the API transaction.
endpoint
The specific API endpoint that was called (e.g., "api.get_browsable_indexes").
timestamp
Unix timestamp indicating when the API call was made.
status_code
HTTP status code returned by the API call (e.g., 200 for success, 403 for forbidden, 500 for server error).
size_kb
Size of the API response in kilobytes.
latency
Response time for the API call in seconds.
Transaction Analysis
The transaction history provides valuable insights for:
Performance Monitoring
- Track response times across different endpoints
- Identify slow-performing API calls
- Monitor data transfer volumes
Usage Patterns
- Analyze which endpoints are used most frequently
- Review API call timing and frequency
- Understand application behavior patterns
Error Analysis
- Identify failed requests and error patterns
- Debug authentication or permission issues
- Track retry behavior and success rates
Cost Management
- Monitor credit consumption patterns
- Identify high-volume usage periods
- Plan for credit needs based on historical usage
Status Codes
Common HTTP status codes in transaction history:
Status Code
Description
200
Success - Request completed successfully
400
Bad Request - Invalid parameters or request format
401
Unauthorized - Invalid or missing API credentials
403
Forbidden - Insufficient permissions or credits
404
Not Found - Endpoint or resource not found
429
Too Many Requests - Rate limit exceeded
500
Internal Server Error - Server-side error occurred
Data Retention
Transaction history is maintained to provide comprehensive usage analytics. The data includes:
Complete Call History: All API calls made by the user account
Performance Metrics: Response times and data transfer sizes
Chronological Order: Transactions ordered by timestamp (ascending)
Detailed Status: Success/failure status for each call
Use Cases
Usage Analytics: Understand API consumption patterns
Performance Optimization: Identify bottlenecks and optimize requests
Billing Analysis: Track credit usage and plan subscription needs
Debugging: Troubleshoot failed requests and integration issues
Compliance: Maintain audit trails for API usage
Errors
The Bitformance API uses the following error codes:
Error Code
Meaning
400
Bad Request -- Your request is invalid.
403
Forbidden -- The API keys in the request were invalid.
404
Not Found -- The specified endpoint could not be found.
429
Too Many Requests -- You have exceeded your API Key's rate limit according to its tier.
500
Internal Server Error -- We had a problem with our server. Try again later.
503
Service Unavailable -- We're temporarily offline for maintenance. Please try again later.