{"openapi":"3.1.0","info":{"title":"Altcoin Season Index API","version":"1.0.0","description":"One number that tells you whether crypto capital is rotating into altcoins or huddling in Bitcoin, computed live from Binance daily candles (no key, nothing stored). The market swings between two regimes: in \"altcoin season\" most alts outperform Bitcoin and money chases the long tail; in \"Bitcoin season\" alts bleed against BTC and capital flees to the majors. The classic gauge is simple — of the top altcoins, what share has outperformed Bitcoin over the last 90 days? Above ~75% it is altcoin season; below ~25% it is Bitcoin season. The index endpoint returns that index (0-100), the season label, Bitcoin's own return over the window and how many alts out- versus under-performed. The leaderboard endpoint ranks the alts by their excess return versus Bitcoin — who is leading the rotation and who is lagging — each with its own return, BTC's return and the gap. The coins endpoint lists the universe. The altcoin-season / alt-vs-BTC rotation cut — distinct from the market-cap-dominance and global-market APIs (which report BTC's share of total cap, not relative performance), the single-coin momentum and the price APIs. It answers whether it is altseason, not what the market cap is.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/altseason-api","description":"oanor gateway"}],"tags":[{"name":"Index"},{"name":"Leaderboard"},{"name":"Coins"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/index":{"get":{"operationId":"get_v1_index","tags":["Index"],"summary":"Altcoin season index (0-100) with season label and counts","description":"","parameters":[{"name":"window","in":"query","required":false,"description":"Lookback in days (7-365)","schema":{"type":"string"},"example":"90"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The altcoin season index is the share of the top altcoins that outperformed Bitcoin over window_days, on a 0-100 scale. >=75 = altcoin season (rotate into alts); <=25 = bitcoin season (flight to BTC). Default window is the classic 90 days. Not financial advice.","season":"leaning bitcoin","source":"Binance","alts_total":50,"window_days":90,"btc_return_pct":-10.13,"altcoin_season_index":28,"alts_outperforming_btc":14,"alts_underperforming_btc":36},"meta":{"timestamp":"2026-06-12T10:35:21.664Z","request_id":"5bbe792f-db0f-405f-8789-a3a2f02d12bd"},"status":"ok","message":"Index retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/leaderboard":{"get":{"operationId":"get_v1_leaderboard","tags":["Leaderboard"],"summary":"Alts ranked by excess return versus Bitcoin","description":"","parameters":[{"name":"window","in":"query","required":false,"description":"Lookback in days (7-365)","schema":{"type":"string"},"example":"90"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Top altcoins ranked by excess return versus Bitcoin over window_days (return minus BTC's return). Positive excess = beating BTC (leading the rotation); negative = lagging. Use leaders/laggards for the headline movers.","coins":[{"coin":"INJ","return_pct":75.31,"outperformed_btc":true,"excess_vs_btc_pct":85.44},{"coin":"NEAR","return_pct":56.93,"outperformed_btc":true,"excess_vs_btc_pct":67.06},{"coin":"DYDX","return_pct":37.59,"outperformed_btc":true,"excess_vs_btc_pct":47.73},{"coin":"TON","return_pct":31.63,"outperformed_btc":true,"excess_vs_btc_pct":41.76},{"coin":"XLM","return_pct":18.72,"outperformed_btc":true,"excess_vs_btc_pct":28.85},{"coin":"ATOM","return_pct":7.2,"outperformed_btc":true,"excess_vs_btc_pct":17.33},{"coin":"TRX","return_pct":6.61,"outperformed_btc":true,"excess_vs_btc_pct":16.75},{"coin":"CRV","return_pct":3.48,"outperformed_btc":true,"excess_vs_btc_pct":13.62},{"coin":"FTM","return_pct":-4.64,"outperformed_btc":true,"excess_vs_btc_pct":5.5},{"coin":"ALGO","return_pct":-5.32,"outperformed_btc":true,"excess_vs_btc_pct":4.81},{"coin":"TIA","return_pct":-5.6,"outperformed_btc":true,"excess_vs_btc_pct":4.53},{"coin":"RENDER","return_pct":-7.02,"outperformed_btc":true,"excess_vs_btc_pct":3.11},{"coin":"BNB","return_pct":-7.65,"outperformed_btc":true,"excess_vs_btc_pct":2.48},{"coin":"DOGE","return_pct":-9.66,"outperformed_btc":true,"excess_vs_btc_pct":0.47},{"coin":"LDO","return_pct":-10.95,"outperformed_btc":false,"excess_vs_btc_pct":-0.82},{"coin":"IMX","return_pct":-12.27,"outperformed_btc":false,"excess_vs_btc_pct":-2.14},{"coin":"THETA","return_pct":-12.63,"outperformed_btc":false,"excess_vs_btc_pct":-2.49},{"coin":"FIL","return_pct":-12.9,"outperformed_btc":false,"excess_vs_btc_pct":-2.77},{"coin":"ICP","return_pct":-12.92,"outperformed_btc":false,"excess_vs_btc_pct":-2.79},{"coin":"RUNE","return_pct":-13.02,"outperformed_btc":false,"excess_vs_btc_pct":-2.89},{"coin":"LINK","return_pct":-13.06,"outperformed_btc":false,"excess_vs_btc_pct":-2.93},{"coin":"ETC","return_pct":-14.39,"outperformed_btc":false,"excess_vs_btc_pct":-4.25},{"coin":"HBAR","return_pct":-15.92,"outperformed_btc":false,"excess_vs_btc_pct":-5.78},{"coin":"AXS","return_pct":-17.14,"outperformed_btc":false,"excess_vs_btc_pct":-7.01},{"coin":"ARB","return_pct":-17.53,"outperformed_btc":false,"excess_vs_btc_pct":-7.39},{"coin":"SHIB","return_pct":-17.85,"outperformed_btc":false,"excess_vs_btc_pct":-7.71},{"coin":"XRP","return_pct":-18.21,"outperformed_btc":false,"excess_vs_btc_pct":-8.07},{"coin":"OP","return_pct":-19.64,"outperformed_btc":false,"excess_vs_btc_pct":-9.51},{"coin":"ETH","return_pct":-19.87,"outperformed_btc":false,"excess_vs_btc_pct":-9.73},{"coin":"SEI","return_pct":-22.13,"outperformed_btc":false,"excess_vs_btc_pct":-11.99},{"coin":"LTC","return_pct":-22.24,"outperformed_btc":false,"excess_vs_btc_pct":-12.11},{"coin":"SUI","return_pct":-24.04,"outperformed_btc":false,"excess_vs_btc_pct":-13.9},{"coin":"GALA","return_pct":-24.08,"outperformed_btc":false,"excess_vs_btc_pct":-13.95},{"coin":"SOL","return_pct":-24.17,"outperformed_btc":false,"excess_vs_btc_pct":-14.04},{"coin":"GRT","return_pct":-25.98,"outperformed_btc":false,"excess_vs_btc_pct":-15.84},{"coin":"MANA","return_pct":-26.09,"outperformed_btc":false,"excess_vs_btc_pct":-15.96},{"coin":"STX","return_pct":-27.96,"outperformed_btc":false,"excess_vs_btc_pct":-17.83},{"coin":"CHZ","return_pct":-28.15,"outperformed_btc":false,"excess_vs_btc_pct":-18.02},{"coin":"APT","return_pct":-28.8,"outperformed_btc":false,"excess_vs_btc_pct":-18.67},{"coin":"EGLD","return_pct":-29.78,"outperformed_btc":false,"excess_vs_btc_pct":-19.65},{"coin":"VET","return_pct":-30.16,"outperformed_btc":false,"excess_vs_btc_pct":-20.03},{"coin":"AVAX","return_pct":-31.58,"outperformed_btc":false,"excess_vs_btc_pct":-21.45},{"coin":"DOT","return_pct":-33.9,"outperformed_btc":false,"excess_vs_btc_pct":-23.77},{"coin":"ADA","return_pct":-35.17,"outperformed_btc":false,"excess_vs_btc_pct":-25.03},{"coin":"UNI","return_pct":-36.66,"outperformed_btc":false,"excess_vs_btc_pct":-26.53},{"coin":"SAND","return_pct":-37.01,"outperformed_btc":false,"excess_vs_btc_pct":-26.88},{"coin":"XTZ","return_pct":-37.42,"outperformed_btc":false,"excess_vs_btc_pct":-27.29},{"coin":"AAVE","return_pct":-42.2,"outperformed_btc":false,"excess_vs_btc_pct":-32.07},{"coin":"FLOW","return_pct":-42.75,"outperformed_btc":false,"excess_vs_btc_pct":-32.61},{"coin":"BCH","return_pct":-55.59,"outperformed_btc":false,"excess_vs_btc_pct":-45.45}],"source":"Binance","leaders":[{"coin":"INJ","return_pct":75.31,"excess_vs_btc_pct":85.44},{"coin":"NEAR","return_pct":56.93,"excess_vs_btc_pct":67.06},{"coin":"DYDX","return_pct":37.59,"excess_vs_btc_pct":47.73},{"coin":"TON","return_pct":31.63,"excess_vs_btc_pct":41.76},{"coin":"XLM","return_pct":18.72,"excess_vs_btc_pct":28.85}],"laggards":[{"coin":"BCH","return_pct":-55.59,"excess_vs_btc_pct":-45.45},{"coin":"FLOW","return_pct":-42.75,"excess_vs_btc_pct":-32.61},{"coin":"AAVE","return_pct":-42.2,"excess_vs_btc_pct":-32.07},{"coin":"XTZ","return_pct":-37.42,"excess_vs_btc_pct":-27.29},{"coin":"SAND","return_pct":-37.01,"excess_vs_btc_pct":-26.88}],"alts_total":50,"window_days":90,"btc_return_pct":-10.13},"meta":{"timestamp":"2026-06-12T10:35:22.691Z","request_id":"ccac5ca8-08b3-420e-84a7-71d1a3e8a27b"},"status":"ok","message":"Leaderboard retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/coins":{"get":{"operationId":"get_v1_coins","tags":["Coins"],"summary":"The altcoin universe measured against Bitcoin","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The curated top-altcoin universe (Binance USDT pairs, stablecoins excluded) measured against Bitcoin for the season index.","coins":["ETH","SOL","XRP","BNB","DOGE","ADA","TRX","AVAX","LINK","DOT","TON","SHIB","LTC","BCH","NEAR","UNI","APT","ICP","XLM","ETC","FIL","HBAR","ATOM","ARB","OP","INJ","IMX","VET","RENDER","GRT","AAVE","ALGO","SAND","MANA","AXS","THETA","EGLD","FLOW","XTZ","CHZ","SUI","SEI","TIA","STX","RUNE","FTM","GALA","CRV","DYDX","LDO"],"count":50,"source":"Binance","benchmark":"BTC"},"meta":{"timestamp":"2026-06-12T10:35:22.792Z","request_id":"1b5fcdb8-ac6c-494c-82b6-d4d21694faae"},"status":"ok","message":"Coins retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"window is 7-365 days (default 90, the classic horizon). The index is the percent of the alt universe that outperformed BTC. Read fresh per call, nothing cached.","source":"Binance daily klines (BTC + top altcoins), live","service":"altseason-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/coins":"The altcoin universe measured against Bitcoin.","GET /v1/index":"The altcoin season index (0-100) with season label and out/under-performer counts (window=90).","GET /v1/leaderboard":"Alts ranked by excess return versus Bitcoin, with leaders and laggards (window=90)."},"description":"Altcoin Season Index — whether capital is rotating into altcoins or huddling in Bitcoin, live from Binance (no key, nothing stored). index returns the 0-100 altcoin-season index (share of top alts beating BTC over the window), the season label, BTC's return and the out/under-performer counts. leaderboard ranks the alts by excess return versus Bitcoin. coins lists the universe. The altcoin-season / alt-vs-BTC rotation cut — distinct from the market-cap-dominance and global-market APIs (BTC's share of cap, not relative performance), single-coin momentum and price APIs. It answers whether it is altseason.","universe_size":50,"upstream_status":"ok","altcoin_season_index":28},"meta":{"timestamp":"2026-06-12T10:35:23.453Z","request_id":"85c9a10b-4db7-4bde-b1f6-23204ba98d1f"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":950,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1144,"monthly_call_quota":23000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3366,"monthly_call_quota":115000,"rps_limit":18,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":7740,"monthly_call_quota":580000,"rps_limit":45,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/altseason-api"}