API Documentation

Bitcoin Cycle Intelligence
for Developers

Free public API for the NHCI Score — NeverHodl Cycle Intelligence. Real-time Bitcoin cycle index 0–100, updated hourly. No API key required for the public tier.

✓ No auth required ✓ CORS open ✓ JSON response 20 req/min · Free
Quick start — 30 seconds
bash
curl https://www.neverhodl.com/api/public/nhci
json — response
{
  "ok": true,
  "btc": {
    "score":     56.4,          // 0–100 cycle index
    "phase":     "Bull Active",
    "signal":    "HOLD",         // ACCUMULATE | HOLD | CAUTION | REDUCE
    "updated_at":"2026-05-13T06:00:00Z"
  },
  "crypto": { "score": 52.1, "phase": "Bull Active" },
  "market": {
    "btc_price_usd":    98420,
    "btc_dominance_pct":57.3,
    "fear_greed": { "value": 62, "classification": "Greed" }
  }
}

Free API — No Key Required

Both endpoints below are fully public, CORS-open, and rate-limited to 20 requests per minute per IP. No registration needed.

GET /api/public/nhci Free · No auth

Returns the current BTC NHCI Score, Crypto NHCI Score, and live market data. Updated hourly.

Cache: 60s Rate limit: 20 req/min per IP Auth: None
Response fields — btc object
FieldTypeDescription
scorenumberNHCI Score 0–100. 1 decimal place.
phasestringBottom · Accumulation · Bull Active · Hot Zone · NeverHodl™
phase_keystringMachine-readable phase: FONDO · ACUM · BULL · HOT · NEVERHODL
signalstringACCUMULATE · HOLD · CAUTION · REDUCE
context.descent_guardstring|nullActive if bear market descent pattern detected. Null otherwise.
context.top_riskstring|nullActive if cycle top distribution detected. Null otherwise.
updated_atISO 8601Timestamp of last engine computation.
stalebooleanTrue if score is older than 2 hours.
GET /api/public/nhci/history Free · No auth · 30 days

Returns the last 30 days of daily BTC NHCI Score. Includes raw score, EMA-smoothed score, phase, and BTC price at computation time. Updated daily at 06:00 UTC.

Cache: 1h Rate limit: 20 req/min per IP Max days: 30 (public tier)
bash
curl https://www.neverhodl.com/api/public/nhci/history
json — response
{
  "ok": true,
  "asset": "BTC",
  "days": 30,
  "data": [
    {
      "date":           "2026-04-13",
      "score":          48.2,   // raw daily NHCI score
      "score_smoothed": 49.1,   // EMA-smoothed (reduces noise)
      "phase":          "Bull Active",
      "phase_key":      "BULL",
      "btc_price_usd":  84200
    },
    // ... 29 more rows, oldest → newest
  ]
}

Integrate in Minutes

javascript
// Live score — no API key needed
const res  = await fetch('https://www.neverhodl.com/api/public/nhci');
const { btc, market } = await res.json();

console.log(`Score: ${btc.score} | Phase: ${btc.phase} | BTC: $${market.btc_price_usd}`);
// → "Score: 56.4 | Phase: Bull Active | BTC: $98420"

// Alert example
if (btc.signal === 'REDUCE') {
  sendAlert('⚠️ NeverHodl™ zone — reduce exposure');
}
python
import requests

r    = requests.get('https://www.neverhodl.com/api/public/nhci')
data = r.json()

print(f"NHCI: {data['btc']['score']}{data['btc']['phase']}")
print(f"BTC: ${data['market']['btc_price_usd']:,}")
python — 30d history chart
import requests
import matplotlib.pyplot as plt

r    = requests.get('https://www.neverhodl.com/api/public/nhci/history')
hist = r.json()['data']

dates  = [d['date'] for d in hist]
scores = [d['score'] for d in hist]

plt.plot(dates, scores)
plt.title('BTC NHCI Score — last 30 days')
plt.axhline(75, color='red', linestyle='--', label='NeverHodl zone')
plt.axhline(35, color='blue', linestyle='--', label='Bottom zone')
plt.legend()
plt.show()

Add NHCI to your site in 2 lines

Drop the live NHCI widget anywhere — blog, Notion, portfolio tracker, crypto dashboard. Auto-fetches data. No API key. No backend. Mandatory attribution included.

Formula-safe: the widget fetches only the final score from the public API — no internal indicators, weights, or calculation logic is exposed.
html — paste anywhere
<script src="https://www.neverhodl.com/embed/nhci-chart.js"></script>
<div id="nhci-widget" data-asset="btc"></div>
Live preview
Widget attributes
AttributeDefaultDescription
data-asset"btc"Asset to display. Use "btc" for Bitcoin NHCI Score. Crypto NHCI coming soon.
id / data-nhci-widgetUse id="nhci-widget" for a single widget, or data-nhci-widget on multiple elements.
The widget includes a mandatory "NHCI Score by NeverHodl™" footer per API attribution terms. Do not remove or obscure it. Full terms: neverhodl.com/attribution.

Compact badge for mobile-first sites

No chart, no Chart.js dependency. Loads instantly on any device. Perfect for Telegram mini-apps, mobile blogs, or narrow sidebars.

html — badge widget
<script src="https://www.neverhodl.com/embed/nhci-badge.js"></script>
<div data-nhci-badge data-asset="btc"></div>
Live preview — badge
Size variants — data-size
data-sizeMax widthUse case
sm220pxNarrow sidebar, Telegram card
(default)320pxMobile blog post, widget column
lg400pxDesktop sidebar, newsletter

API Pro — Coming Soon

Full NHCI history since 2017, personal API keys, and higher rate limits. Join the waitlist.

✓ You're on the list. We'll notify you on launch.

Rate limits & Attribution

Rate limits

TierLimitHeaders
Public (no auth)20 requests / minute per IP
API Pro (coming soon)Higher limits with keyX-NHCI-API-Key: nh_live_…

When rate limited, you receive HTTP 429. Back off with exponential retry.

Attribution required

If you display or publish NHCI Score data, attribution is required:

Required attribution text
NHCI Score by NeverHodl™ — neverhodl.com

BTC price sourced from Kraken · Fear & Greed from Alternative.me · BTC Dominance from CoinGecko. See full attribution page.