API Documentation
Glassnode-compatible REST API for Bitcoin on-chain metrics.
Authentication
All API requests require an API key. Generate one from your Profile.
Pass the key via the X-Api-Key header.
curl -H "X-Api-Key: btci_your_key" https://btc-indexer.bitcoinmetrics.net/api/v1/metrics/market/nvt
Endpoints
GET
/api/v1/metrics/:category/:metric
Fetch time-series data for a specific metric.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
| s | integer | 1 year ago | Start date as Unix timestamp (seconds) |
| u | integer | yesterday | End date as Unix timestamp (seconds) |
| i | string | 24h | Interval: 24h, 1w, or 1month |
Example
curl -H "X-Api-Key: btci_your_key" \
"https://btc-indexer.bitcoinmetrics.net/api/v1/metrics/market/nvt?s=1704067200&u=1704240000&i=24h"
Response — Scalar metric
[
{ "t": 1704067200, "v": 50.3 },
{ "t": 1704153600, "v": 51.1 }
]
Response — Complex metric (HODL waves)
[
{
"t": 1704067200,
"o": {
"lt_1d": 100.0, "1d_1w": 200.0, "1w_1m": 300.0,
"1m_3m": 400.0, "3m_6m": 500.0, "6m_1y": 600.0,
"lth_supply": 1000.0, "sth_supply": 800.0
}
}
]
GET
/api/v1/metadata/metrics
List all available metrics grouped by category, with tier/quality metadata.
Response
{
"market": [
{
"id": "market/nvt",
"metric": "nvt",
"value_type": "scalar",
"intervals": ["24h", "1w", "1month"],
"aggregation": "last",
"tier": "core",
"quality": "exact",
"name": "NVT Ratio",
"description": "Network Value to Transactions ratio...",
"history_requirement": "90d",
"coverage_window": "180d",
"interpretation_notes": "Both components are accurate..."
},
...
]
}
id is the precomputed "category/metric" identifier — handy for clients that flatten the catalog.
GET
/api/v1/market/overview
Latest values for all scalar metrics, grouped by tier. Defaults to core-only.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
| include_experimental | boolean | false | Include experimental metrics in response |
Response
{
"as_of": "2026-04-10",
"core": {
"price_usd": 84250.0,
"nvt": 48.5,
"market_cap": 1680000000000.0,
"count": 312450.0,
"hash_rate_mean": 845.0,
"mvrv": 1.42,
"nupl": 0.31
},
"experimental": {}
}
Available Metrics
| Category | Metric | Name | Tier | Quality | Type |
|---|---|---|---|---|---|
market |
price_usd | BTC Price (USD) | core | exact | scalar |
market |
market_cap | Market Cap | core | exact | scalar |
market |
nvt | NVT Ratio | core | exact | scalar |
market |
nvt_signal | NVT Signal | core | exact | scalar |
market |
price_ohlc | Price OHLC | core | exact | complex |
market |
price_drawdown | Price Drawdown | core | exact | scalar |
market |
realized_volatility_1w | Realized Volatility (7d) | core | exact | scalar |
market |
realized_volatility_1m | Realized Volatility (30d) | core | exact | scalar |
market |
realized_volatility_3m | Realized Volatility (90d) | core | exact | scalar |
market |
mvrv | MVRV Ratio | core | exact | scalar |
market |
nupl | NUPL | core | exact | scalar |
market |
realized_cap | Realized Cap | core | exact | scalar |
supply |
circulating_supply | Circulating Supply | core | exact | scalar |
supply |
inflation_rate | Inflation Rate | core | exact | scalar |
supply |
stock_to_flow_ratio | Stock-to-Flow Ratio | core | exact | scalar |
supply |
stock_to_flow_deflection | Stock-to-Flow Deflection | core | exact | scalar |
supply |
lth_supply | Long-Term Holder Supply | core | exact | scalar |
supply |
sth_supply | Short-Term Holder Supply | core | exact | scalar |
supply |
hodl_waves | HODL Waves | core | exact | complex |
addresses |
active_count | Active Addresses | core | exact | scalar |
transactions |
count | Transaction Count | core | exact | scalar |
transactions |
volume_btc | Transaction Volume (BTC) | core | exact | scalar |
transactions |
volume_usd | Transaction Volume (USD) | core | exact | scalar |
mining |
hash_rate_mean | Mean Hash Rate | core | exact | scalar |
mining |
daily_issuance_usd | Daily Issuance (USD) | core | exact | scalar |
mining |
difficulty_ribbon | Difficulty Ribbon | core | exact | complex |
mining |
difficulty_ribbon_compression | Difficulty Ribbon Compression | core | exact | scalar |
fees |
fees_btc | Total Fees (BTC) | core | exact | scalar |
fees |
fees_usd | Total Fees (USD) | core | exact | scalar |
fees |
avg_fee_per_tx | Average Fee per Transaction | core | exact | scalar |
fees |
median_fee_per_tx | Median Fee per Transaction | core | exact | scalar |
fees |
fee_ratio_multiple | Fee Ratio Multiple | core | exact | scalar |
blocks |
block_count | Block Count | core | exact | scalar |
blocks |
block_size_mean | Mean Block Size | core | exact | scalar |
blocks |
block_size_total | Total Block Size | core | exact | scalar |
blocks |
block_interval_mean | Mean Block Interval | core | exact | scalar |
blocks |
block_interval_median | Median Block Interval | core | exact | scalar |
mining |
puell_multiple | Puell Multiple | core | exact | scalar |
Errors
| Status | Code | Description |
|---|---|---|
| 401 | — | Missing or invalid API key |
| 404 | METRIC_NOT_FOUND | Unknown category/metric combination |
| 404 | METRIC_DISABLED | Metric is temporarily disabled and may be re-enabled in the future |
| 404 | NO_DATA | No metric data available (market overview) |
| 400 | INVALID_PARAMS | Invalid interval or parameter value |
Error response format
{ "error": { "code": "METRIC_NOT_FOUND", "message": "Unknown metric: market/foo" } }
Notes
- All timestamps are Unix epoch seconds (UTC)
- Today's data is excluded by default (incomplete)
- Weekly aggregation uses ISO weeks (Monday–Sunday)
- Only complete periods are returned for weekly/monthly intervals
- API keys are prefixed with
btci_for identification - For LLM agent integration via MCP, see MCP Documentation