{"openapi":"3.0.3","info":{"title":"Crypto Data API","description":"Real-time crypto market intelligence API. Built for AI agents: gasless USDC payments via x402 protocol, one-call onboarding, and 180+ endpoints for prices, derivatives, funding, and sentiment.","version":"2026-07-10"},"paths":{"/api/v1/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Basic health check endpoint (no auth required).","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheckResponse"}}}}}},"head":{"tags":["Health"],"summary":"Health Check","description":"Basic health check endpoint (no auth required).","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheckResponse"}}}}}}},"/api/v1/auth/keys":{"post":{"tags":["Authentication"],"summary":"Create Api Key","description":"Create a new free-tier API key. The full key is only shown once.","operationId":"create_api_key_api_v1_auth_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Authentication"],"summary":"Revoke Api Key","description":"Revoke the current API key. 7-day cooldown before new key creation.","operationId":"revoke_api_key_api_v1_auth_keys_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Revoke Api Key Api V1 Auth Keys Delete"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/keys/me":{"get":{"tags":["Authentication"],"summary":"Get Current Key Info","description":"Get information about the current API key.","operationId":"get_current_key_info_api_v1_auth_keys_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyInfo"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/keys/rotate":{"post":{"tags":["Authentication"],"summary":"Rotate Api Key","description":"Rotate the current API key. Invalidates the old key.","operationId":"rotate_api_key_api_v1_auth_keys_rotate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyRotateResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/coins":{"get":{"tags":["Coins"],"summary":"List Coins","description":"List all coins, paginated by market cap rank.","operationId":"list_coins_api_v1_coins_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coins/search":{"get":{"tags":["Coins"],"summary":"Search Coins","description":"Search coins by name or symbol.","operationId":"search_coins_api_v1_coins_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coins/top":{"get":{"tags":["Coins"],"summary":"Top Coins","description":"Get top N coins by market cap.","operationId":"top_coins_api_v1_coins_top_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinTopResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coins/categories":{"get":{"tags":["Coins"],"summary":"Coin Categories","description":"Get all unique coin categories.","operationId":"coin_categories_api_v1_coins_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinCategoriesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/coins/category-groups":{"get":{"tags":["Coins"],"summary":"Coin Category Groups","description":"Curated coin-category themes (20+ major categories).\n\nCovers AI, Layer-1 / platform, Layer-2 & scaling, DeFi, DEX, lending, liquid\nstaking, stablecoins, exchange tokens, meme, privacy, RWA, NFT, gaming,\nmetaverse, DePIN, oracles, interoperability, storage, Bitcoin / Solana /\nCosmos ecosystems, PoW and derivatives. Each group carries a plain-English\ndescription and a resolved list of the tracked coins that belong to it (live\nprice, market cap, rank, 24h/7d change), sorted by market-cap rank. Unlike\n`/coins/categories` (raw CoinGecko tag names), this is an editorial set built\nfor the Coin Categories page.","operationId":"coin_category_groups_api_v1_coins_category_groups_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max coins per category group","default":25,"title":"Limit"},"description":"Max coins per category group"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinCategoryGroupsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coins/{symbol}":{"get":{"tags":["Coins"],"summary":"Get Coin","description":"Get a single coin profile by symbol (e.g., BTC, ETH).","operationId":"get_coin_api_v1_coins__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-health":{"get":{"tags":["Market Health"],"summary":"Get Market Health","description":"Full dual-score market health result with all 11 components.\n\n**`indicators` contract**\n\nTop-level `indicators` is a flat denormalization of the most-filtered values\nfrom `components.<x>.details`. Keys are **omitted entirely** when the source\nvalue is unavailable (never null) so consumers can safely use\n`dict.get(key, default)` for fallbacks. Committed key set:\n\n- `long_short_ratio` (float) — BTC long/short ratio (Binance perps)\n- `funding_rate` (float, %) — avg funding rate (aliased from `avg_funding_rate`)\n- `buy_ratio` (float, 0–1) — weighted taker-buy ratio across top spot pairs\n- `fear_greed_value` (int, 0–100) — averaged Fear & Greed index\n- `breadth_pct` (float, %) — share of top-30 coins above their 200D MA\n- `pct_from_200ma` (float, %) — BTC distance from 200D MA\n- `cross_status` (str) — Golden | Death | Neutral\n- `stablecoin_change_7d` (float) — 7-day stablecoin market-cap change\n\nHealth is computed cross-exchange (CoinGlass aggregate + Binance) and is not\nscoped by any per-exchange filter. The `long_short_ratio` is BTC-on-Binance,\nused as a market-wide sentiment signal.","operationId":"get_market_health_api_v1_market_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketHealthResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-health/summary":{"get":{"tags":["Market Health"],"summary":"Get Health Summary","description":"Scores + sentiment only (lightweight).","operationId":"get_health_summary_api_v1_market_health_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'markdown' for LLM-friendly plain text","title":"Format"},"description":"Response format: 'markdown' for LLM-friendly plain text"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketHealthSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-health/components":{"get":{"tags":["Market Health"],"summary":"Get Health Components","description":"All 11 component details.","operationId":"get_health_components_api_v1_market_health_components_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthComponentsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-health/component/{name}":{"get":{"tags":["Market Health"],"summary":"Get Health Component","description":"Get a single component by name.","operationId":"get_health_component_api_v1_market_health_component__name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentScoreSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-health/history":{"get":{"tags":["Market Health"],"summary":"Get Health History","description":"Health score history from database.","operationId":"get_health_history_api_v1_market_health_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-health/altcoin-breadth":{"get":{"tags":["Market Health"],"summary":"Altcoin Breadth","description":"Altcoin breadth - % of coins above their MA with per-coin detail.","operationId":"altcoin_breadth_api_v1_market_health_altcoin_breadth_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"ma_period","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":5,"default":200,"title":"Ma Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AltcoinBreadthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-health/refresh":{"post":{"tags":["Market Health"],"summary":"Force Refresh","description":"Force recalculate health score (Pro and Pro Plus tiers).","operationId":"force_refresh_api_v1_market_health_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/indicators/signum-rgg":{"get":{"tags":["Indicators"],"summary":"Get Signum Rgg","description":"SIGNUM_RGG trend radar across all Hyperliquid perps + top 100 Binance USDT pairs.\n\nEach asset gets a daily RED/GREY/GREEN color from ADX(14)+DMI with hysteresis,\nplus days-in-color, flip date, % change since flip, and (for grey) the 20-day\nconsolidation range.","operationId":"get_signum_rgg_api_v1_indicators_signum_rgg_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"color","in":"query","required":false,"schema":{"title":"Color","enum":["red","grey","green"],"type":"string","nullable":true}},{"name":"source","in":"query","required":false,"schema":{"title":"Source","enum":["binance_spot","hyperliquid_perp"],"type":"string","nullable":true}},{"name":"min_days","in":"query","required":false,"schema":{"title":"Min Days","type":"integer","minimum":0,"nullable":true}},{"name":"max_days","in":"query","required":false,"schema":{"title":"Max Days","type":"integer","minimum":0,"nullable":true}},{"name":"sort","in":"query","required":false,"schema":{"enum":["days_in_color","pct_change","adx","symbol"],"type":"string","default":"days_in_color","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignumRggResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indicators/signum-rgg/{symbol}":{"get":{"tags":["Indicators"],"summary":"Get Signum Rgg Symbol","description":"Per-asset SIGNUM_RGG detail with the last 60 days of color history.","operationId":"get_signum_rgg_symbol_api_v1_indicators_signum_rgg__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignumRggDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indicators/signum-rgg/refresh":{"post":{"tags":["Indicators"],"summary":"Refresh Signum Rgg","description":"Force recompute the SIGNUM_RGG cache (Pro tier).","operationId":"refresh_signum_rgg_api_v1_indicators_signum_rgg_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignumRggRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/indicators/technical":{"get":{"tags":["Indicators"],"summary":"Get Technical Regime","description":"Technical / Structural regime overlay (Regime #14, Pro tier).\n\nPer-asset price-structure state across the same universe as SIGNUM_RGG:\nmoving-average position (SMA-50/100/200 + last cross), Bollinger-band\nsqueeze + bandwidth percentile, 20d range position, and RSI(14) extremes\non daily + 1h timeframes.\n\nFilter via `ma_state`, `bb`, `range_zone`, `rsi` (each is optional and\nAND-combined). Example screener queries:\n\n  - `?bb=in_squeeze&sort=squeeze_days&order=desc` — assets compressed for longest\n  - `?rsi=oversold&min_days_in_state=2` — sustained oversold candidates\n  - `?ma_state=reclaim_200` — recent 200MA reclaims (last 10 days)\n  - `?range_zone=near_high&ma_state=above_200` — near-range-high + uptrend","operationId":"get_technical_regime_api_v1_indicators_technical_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"title":"Source","enum":["binance_spot","hyperliquid_perp"],"type":"string","nullable":true}},{"name":"ma_state","in":"query","required":false,"schema":{"description":"Filter by SMA-200 relationship","title":"Ma State","enum":["above_200","below_200","breakdown_200","reclaim_200"],"type":"string","nullable":true},"description":"Filter by SMA-200 relationship"},{"name":"bb","in":"query","required":false,"schema":{"description":"Filter by Bollinger band state","title":"Bb","enum":["in_squeeze","expanding"],"type":"string","nullable":true},"description":"Filter by Bollinger band state"},{"name":"range_zone","in":"query","required":false,"schema":{"description":"Filter by 20d range position","title":"Range Zone","enum":["near_low","mid","near_high"],"type":"string","nullable":true},"description":"Filter by 20d range position"},{"name":"rsi","in":"query","required":false,"schema":{"description":"Filter by daily RSI state","title":"Rsi","enum":["overbought","oversold","extreme"],"type":"string","nullable":true},"description":"Filter by daily RSI state"},{"name":"min_days_in_state","in":"query","required":false,"schema":{"description":"Min days in state (squeeze or RSI extreme); requires matching filter","title":"Min Days In State","type":"integer","minimum":0,"nullable":true},"description":"Min days in state (squeeze or RSI extreme); requires matching filter"},{"name":"sort","in":"query","required":false,"schema":{"enum":["symbol","price","rsi_1d","bb_bandwidth","squeeze_days","dist_from_200","position_in_range"],"type":"string","default":"symbol","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechnicalRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indicators/technical/{symbol}":{"get":{"tags":["Indicators"],"summary":"Get Technical Regime Symbol","description":"Per-asset Technical / Structural detail with 60d daily history.\n\n`history` contains compact daily bars (close, RSI-14, BB bandwidth, SMA-200,\nabove_200) suitable for sparkline rendering.","operationId":"get_technical_regime_symbol_api_v1_indicators_technical__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechnicalRegimeDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indicators/technical/refresh":{"post":{"tags":["Indicators"],"summary":"Refresh Technical Regime","description":"Force recompute the Technical / Structural cache (Pro tier).","operationId":"refresh_technical_regime_api_v1_indicators_technical_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechnicalRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/derivatives/binance/funding-rates":{"get":{"tags":["Derivatives"],"summary":"Binance Funding Rates","description":"Binance perpetual funding rate history.","operationId":"binance_funding_rates_api_v1_derivatives_binance_funding_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingRateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/binance/open-interest":{"get":{"tags":["Derivatives"],"summary":"Binance Open Interest","description":"Binance open interest + 30-day trend.","operationId":"binance_open_interest_api_v1_derivatives_binance_open_interest_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenInterestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/binance/long-short-ratio":{"get":{"tags":["Derivatives"],"summary":"Binance Long Short Ratio","description":"Binance long/short account ratio.","operationId":"binance_long_short_ratio_api_v1_derivatives_binance_long_short_ratio_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LongShortRatioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/binance/summary":{"get":{"tags":["Derivatives"],"summary":"Binance Derivatives Summary","description":"All-in-one Binance derivatives summary.","operationId":"binance_derivatives_summary_api_v1_derivatives_binance_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DerivativesSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/binance/history":{"get":{"tags":["Derivatives"],"summary":"Derivatives History","description":"Daily derivatives data (funding, OI, L/S) from remote source.","operationId":"derivatives_history_api_v1_derivatives_binance_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DerivativesHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/funding-rates":{"get":{"tags":["Derivatives"],"summary":"Cross Exchange Funding","description":"Funding rates across Binance + Hyperliquid.","operationId":"cross_exchange_funding_api_v1_derivatives_funding_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossExchangeFunding"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/open-interest":{"get":{"tags":["Derivatives"],"summary":"Cross Exchange Oi","description":"Open interest across Binance + Hyperliquid.","operationId":"cross_exchange_oi_api_v1_derivatives_open_interest_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossExchangeOI"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/derivatives/summary":{"get":{"tags":["Derivatives"],"summary":"Cross Exchange Summary","description":"Combined cross-exchange derivatives overview.","operationId":"cross_exchange_summary_api_v1_derivatives_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'markdown' for LLM-friendly plain text","title":"Format"},"description":"Response format: 'markdown' for LLM-friendly plain text"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossExchangeSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/meta":{"get":{"tags":["Hyperliquid"],"summary":"Get Meta","description":"Exchange metadata: assets, max leverage, specs.","operationId":"get_meta_api_v1_hyperliquid_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLMetaResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/prices":{"get":{"tags":["Hyperliquid"],"summary":"Get Prices","description":"All mid prices across Hyperliquid assets.","operationId":"get_prices_api_v1_hyperliquid_prices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLPricesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/funding-rates":{"get":{"tags":["Hyperliquid"],"summary":"Get Funding Rates","description":"Current + historical funding rates for a coin.","operationId":"get_funding_rates_api_v1_hyperliquid_funding_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLFundingRateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/open-interest":{"get":{"tags":["Hyperliquid"],"summary":"Get Open Interest","description":"Open interest across all Hyperliquid assets.","operationId":"get_open_interest_api_v1_hyperliquid_open_interest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLOpenInterestResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/candles":{"get":{"tags":["Hyperliquid"],"summary":"Get Candles","description":"OHLCV candles for a coin.","operationId":"get_candles_api_v1_hyperliquid_candles_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"1h","title":"Interval"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLCandleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/l2-book":{"get":{"tags":["Hyperliquid"],"summary":"Get L2 Book","description":"L2 order book snapshot.","operationId":"get_l2_book_api_v1_hyperliquid_l2_book_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLL2BookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/summary":{"get":{"tags":["Hyperliquid"],"summary":"Get Summary","description":"All-in-one perp data for a coin.","operationId":"get_summary_api_v1_hyperliquid_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","default":"BTC","title":"Coin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/top-traders":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Top Traders","description":"Scored leaderboard of top traders filtered by performance criteria.","operationId":"get_top_traders_api_v1_hyperliquid_top_traders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLTopTradersResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/wallet-positions":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Wallet Positions","description":"Current positions for tracked wallets. For non-tracked addresses, queries Hyperliquid on-demand.","operationId":"get_wallet_positions_api_v1_hyperliquid_wallet_positions_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"address","in":"query","required":false,"schema":{"description":"Filter by wallet address (0x...)","title":"Address","type":"string","nullable":true},"description":"Filter by wallet address (0x...)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWalletPositionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/wallet-signals":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Wallet Signals","description":"Position change signals: entries, exits, size increases/decreases.","operationId":"get_wallet_signals_api_v1_hyperliquid_wallet_signals_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"description":"Look-back window in minutes","default":10,"title":"Minutes"},"description":"Look-back window in minutes"},{"name":"address","in":"query","required":false,"schema":{"description":"Filter by wallet address (0x...). Comma-separated for multiple.","title":"Address","type":"string","nullable":true},"description":"Filter by wallet address (0x...). Comma-separated for multiple."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWalletSignalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/trader-profiles":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Trader Profiles","description":"Trade profiles with win rate, PnL, classification, and edges.","operationId":"get_trader_profiles_api_v1_hyperliquid_trader_profiles_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"address","in":"query","required":false,"schema":{"description":"Filter by wallet address (0x...)","title":"Address","type":"string","nullable":true},"description":"Filter by wallet address (0x...)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLTraderProfilesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/trader-profiles/refresh":{"post":{"tags":["Hyperliquid Traders"],"summary":"Refresh Trader Profiles","description":"Force a synchronous refresh of trade profiles for all tracked wallets.\n\nPro Plus tier — expensive (~15-30s, sequential Hyperliquid calls). Use after\na deploy or when cached profiles look stale; the daily 19:00 UTC scheduled\nrefresh covers normal operation.","operationId":"refresh_trader_profiles_api_v1_hyperliquid_trader_profiles_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/leaderboard/refresh":{"post":{"tags":["Hyperliquid Traders"],"summary":"Refresh Leaderboard","description":"Force a synchronous refresh of the Hyperliquid leaderboard cache.\n\nPro Plus tier — fetches a ~28 MB payload and takes ~25-30s. Use when\n/copy-signals or /wallets/search return 0 results and you suspect the\nin-memory leaderboard is empty (e.g. a startup fetch timed out). The\n2-min position refresh job will also auto-recover an empty leaderboard;\nthis endpoint is for forcing it sooner.","operationId":"refresh_leaderboard_api_v1_hyperliquid_leaderboard_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/wallets/search":{"get":{"tags":["Hyperliquid Traders"],"summary":"Search Wallets","description":"Search the cached top-leaderboard pool for wallets matching arbitrary gates.\n\nRead-only — does not modify the watchlist. Pool is the same ~50-wallet set\nthat auto-watchlist evaluation considers. Refreshed daily at 19:00 UTC.","operationId":"search_wallets_api_v1_hyperliquid_wallets_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":100,"minimum":0,"description":"Minimum top-trader score","default":0,"title":"Min Score"},"description":"Minimum top-trader score"},{"name":"min_win_rate","in":"query","required":false,"schema":{"description":"Minimum 30d win rate (0-1)","title":"Min Win Rate","type":"number","maximum":1,"minimum":0,"nullable":true},"description":"Minimum 30d win rate (0-1)"},{"name":"min_profit_factor","in":"query","required":false,"schema":{"description":"Minimum profit factor","title":"Min Profit Factor","type":"number","minimum":0,"nullable":true},"description":"Minimum profit factor"},{"name":"min_trades_30d","in":"query","required":false,"schema":{"description":"Minimum trades in 30d. Defaults to 30 to filter tiny-sample wallets. Pass 0 explicitly to disable.","title":"Min Trades 30D","type":"integer","minimum":0,"nullable":true},"description":"Minimum trades in 30d. Defaults to 30 to filter tiny-sample wallets. Pass 0 explicitly to disable."},{"name":"min_avg_duration_hours","in":"query","required":false,"schema":{"description":"Min avg trade duration (hours)","title":"Min Avg Duration Hours","type":"number","minimum":0,"nullable":true},"description":"Min avg trade duration (hours)"},{"name":"exclude_types","in":"query","required":false,"schema":{"description":"Comma-separated trader types to exclude, e.g. 'hft,scalper'","title":"Exclude Types","type":"string","nullable":true},"description":"Comma-separated trader types to exclude, e.g. 'hft,scalper'"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Max wallets to return","default":50,"title":"Limit"},"description":"Max wallets to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWalletSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/watchlist":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Watchlist","description":"List all watchlisted wallet addresses.","operationId":"get_watchlist_api_v1_hyperliquid_watchlist_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWatchlistResponse"}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Hyperliquid Traders"],"summary":"Add To Watchlist","description":"Add wallet addresses to the watchlist. Automatically starts tracking for signals.\n\nThe watchlist is a shared, collector-wide poll set, so mutations are gated to\nPro / Pro Plus — a free key must not be able to inflate or alter the set that\ndrives every consumer's wallet signals.","operationId":"add_to_watchlist_api_v1_hyperliquid_watchlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistAddDetailedRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWatchlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]},"delete":{"tags":["Hyperliquid Traders"],"summary":"Remove From Watchlist","description":"Remove wallet addresses from the watchlist.","operationId":"remove_from_watchlist_api_v1_hyperliquid_watchlist_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistRemoveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWatchlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/watchlist/auto":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Auto Watchlist","description":"Get current auto-managed watchlist configuration and status.","operationId":"get_auto_watchlist_api_v1_hyperliquid_watchlist_auto_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLAutoWatchlistResponse"}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Hyperliquid Traders"],"summary":"Create Auto Watchlist","description":"Auto-populate watchlist from top traders based on configurable criteria.","operationId":"create_auto_watchlist_api_v1_hyperliquid_watchlist_auto_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoWatchlistRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLAutoWatchlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]},"delete":{"tags":["Hyperliquid Traders"],"summary":"Delete Auto Watchlist","description":"Disable auto-management and remove all auto-managed entries.","operationId":"delete_auto_watchlist_api_v1_hyperliquid_watchlist_auto_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLAutoWatchlistResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hyperliquid/copy-signals":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Copy Signals","description":"Top traders with their recent signals in a single response.\n\nReplaces the 3-step workflow (top-traders → watchlist → signals) with one call.\nOnly returns traders that have signals in the given time window.\n\nProfile filters (min_win_rate, min_profit_factor, min_trades_30d,\nmin_avg_duration_hours, exclude_types) are optional and only applied when\npassed — preserves backward compatibility. Recommended: pass\nmin_trades_30d=30 to drop tiny-sample wallets.","operationId":"get_copy_signals_api_v1_hyperliquid_copy_signals_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"description":"Minimum trader score","default":80,"title":"Min Score"},"description":"Minimum trader score"},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"description":"Signal look-back window in minutes","default":60,"title":"Minutes"},"description":"Signal look-back window in minutes"},{"name":"min_win_rate","in":"query","required":false,"schema":{"description":"Minimum 30d win rate (0-1)","title":"Min Win Rate","type":"number","maximum":1,"minimum":0,"nullable":true},"description":"Minimum 30d win rate (0-1)"},{"name":"min_profit_factor","in":"query","required":false,"schema":{"description":"Minimum profit factor","title":"Min Profit Factor","type":"number","minimum":0,"nullable":true},"description":"Minimum profit factor"},{"name":"min_trades_30d","in":"query","required":false,"schema":{"description":"Minimum trades in 30d. Pass 30+ to filter tiny-sample wallets (e.g. '100% WR over 2 trades'). Not auto-defaulted here for backward compatibility.","title":"Min Trades 30D","type":"integer","minimum":0,"nullable":true},"description":"Minimum trades in 30d. Pass 30+ to filter tiny-sample wallets (e.g. '100% WR over 2 trades'). Not auto-defaulted here for backward compatibility."},{"name":"min_avg_duration_hours","in":"query","required":false,"schema":{"description":"Min avg trade duration (hours)","title":"Min Avg Duration Hours","type":"number","minimum":0,"nullable":true},"description":"Min avg trade duration (hours)"},{"name":"exclude_types","in":"query","required":false,"schema":{"description":"Comma-separated trader types to exclude, e.g. 'hft,scalper'","title":"Exclude Types","type":"string","nullable":true},"description":"Comma-separated trader types to exclude, e.g. 'hft,scalper'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLCopySignalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/trader-profile/{address}":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Trader Profile","description":"On-demand trade profile for ANY Hyperliquid address. Fetches fill history and computes stats.","operationId":"get_trader_profile_api_v1_hyperliquid_trader_profile__address__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Analysis period in days","default":30,"title":"Days"},"description":"Analysis period in days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLTraderProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hyperliquid/wallet-trades/{address}":{"get":{"tags":["Hyperliquid Traders"],"summary":"Get Wallet Trades","description":"Historical trades for any Hyperliquid address with summary statistics.","operationId":"get_wallet_trades_api_v1_hyperliquid_wallet_trades__address__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Trade history period in days","default":30,"title":"Days"},"description":"Trade history period in days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HLWalletTradesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/liquidity/depth":{"get":{"tags":["Liquidity / Market Depth"],"summary":"Get Depth","description":"Current per-coin depth/spread snapshot across the tracked universe.\n\nReturns one record per coin (top-25 HL perps by 24h volume):\nbid/ask depth in USD at {10, 25, 50, 100}bps from mid, spread in bps,\nbook imbalance within 10bps, and joined open interest.\n\nThe free tier is scoped to BTC; full-universe coverage is Pro and Pro Plus.","operationId":"get_depth_api_v1_liquidity_depth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepthResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/liquidity/oi-divergence":{"get":{"tags":["Liquidity / Market Depth"],"summary":"Get Oi Divergence","description":"OI vs price change across 1h/4h/24h windows, ranked by 4h divergence.\n\nPositive divergence (OI rising faster than price) = fragile positioning.\nCoins without enough history for a given window report null for that window.\n\nThe free tier is scoped to BTC; full-universe coverage is Pro and Pro Plus.","operationId":"get_oi_divergence_api_v1_liquidity_oi_divergence_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OIDivergenceResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/liquidity/regime":{"get":{"tags":["Liquidity / Market Depth"],"summary":"Get Regime","description":"Per-coin liquidity regime + market-wide aggregate + composite score.\n\nEach coin is classified into one of: ``deep_book``, ``oi_price_divergence``,\n``depth_withdrawal``, ``post_cascade_impaired``, or ``neutral``. The\ncomposite score (0-100) maps the regime mix into a single fragility read\n(higher = healthier market structure).\n\n**Forward-only — not historically backfillable.** Unlike ``technical_regime``\n(replayable from daily klines), the rules here depend on *intraday* L2 depth\ndeltas (10-min withdrawal, 12h depth baselines, depth/spread percentiles)\nthat only exist in the live per-minute sample buffer. There is no historical\nsource to reconstruct them from, so this signal accumulates forward from\ncollector start. The per-coin snapshot is archived daily so a backtestable\nhistory builds going forward; periods before collector deploy are unavailable.","operationId":"get_regime_api_v1_liquidity_regime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiquidityRegimeResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/liquidity/regime/score":{"get":{"tags":["Liquidity / Market Depth"],"summary":"Get Regime Score","description":"Composite liquidity fragility score (0-100) + sentiment band + aggregate breakdown.\n\nTrimmed companion to ``/liquidity/regime`` — same composite, no per-coin list.","operationId":"get_regime_score_api_v1_liquidity_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiquidityRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/liquidity/depth/{coin}":{"get":{"tags":["Liquidity / Market Depth"],"summary":"Get Depth For Coin","description":"Per-coin depth history (rolling, up to 24h). Free: BTC only; Pro + Pro Plus: any coin.","operationId":"get_depth_for_coin_api_v1_liquidity_depth__coin__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"coin","in":"path","required":true,"schema":{"type":"string","title":"Coin"}},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"description":"Trailing minutes of history (max 24h)","default":60,"title":"Minutes"},"description":"Trailing minutes of history (max 24h)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinDepthHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/market":{"get":{"tags":["Quant"],"summary":"Get Quant Market","description":"Whole-market regime + probability object (Pro).\n\nHMM-filtered posterior over the 6 market regimes (strong_trend_bull/bear,\nrange_low_vol, choppy_high_vol, vol_spike, squeeze) with calibrated\nprobability buckets for direction, volatility, liquidation risk, funding,\nbreadth, open interest and regime transitions at the requested horizon.\nThe market `liquidation_risk` bucket is depth-aware — driven by live\norder-book fragility (thin book + wide spread = higher forced-liquidation\nodds), not just realized volatility; the source is tagged in\n`explain.heads_provenance` (e.g. `depth_fragility:thin`).\nIncludes seeded Monte Carlo tomorrow-distribution stats on the 24h horizon\nand a full `explain` block. Refreshed every 15 minutes from hourly bars.\nMarket-wide and per-coin regime data (/quant/coins) are both Pro.","operationId":"get_quant_market_api_v1_quant_market_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"horizon","in":"query","required":false,"schema":{"enum":["4h","24h"],"type":"string","default":"24h","title":"Horizon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantProbabilityObject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/positioning":{"get":{"tags":["Quant"],"summary":"Get Quant Positioning","description":"Per-coin trader positioning by account type (Pro).\n\nAggregates the full HL account universe (every account >= $100k holding a\nposition; active accounts re-polled every liq-map cycle — 15 min on the\npublic path, 5 min once batch RPC is armed) into per-coin\nlong/short/net/gross notional split by\n**trader type** — `market_maker`, `whale`, `other`, and `all` — using a\nbehavioral classifier (turnover, market breadth, leverage, PnL consistency).\nThe `market_maker` bucket is the basis for the dealer-gamma view at\n`/quant/gex`. Each bucket also reports the distinct account count.","operationId":"get_quant_positioning_api_v1_quant_positioning_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"description":"Filter to one coin, e.g. BTC","title":"Symbol","type":"string","nullable":true},"description":"Filter to one coin, e.g. BTC"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/gex":{"get":{"tags":["Quant"],"summary":"Get Quant Gex","description":"Dealer positioning / Gamma Exposure — perp analog (Pro).\n\nBuilt from **market-maker** accounts (the perp \"dealers\"): per coin we report\n`mm_net_delta` (dealer inventory long/short), `gamma_profile` (the MM\nliquidation-density by price = where MM forced unwinds cluster, the\nshort-gamma acceleration zones) and `gamma_flip` (the price where MM\nlong-liq-below crosses short-liq-above — the inflection).\n\nNote: perps have no literal options gamma; this is a behavioral analog from\nmarket-maker inventory + liquidation-driven forced flow, not options dealer\ngamma. The MM set is a heuristic classification (turnover + breadth + known\ndesks), so treat it as a positioning signal, not an exact dealer book.\n\nEach coin also carries the composite **`regime`** flag — `amplify`\n(short-gamma analog: crowded book + dense clusters near mark → forced flow\nfollows through) vs `dampen` (balanced, mean-reverting) vs `transitional`\n(on the flip line) — joining the cluster profile with funding skew, OI\nrate-of-change, the realized-liquidation cascade signal and the\n`dist_to_flip_pct`. Every sub-signal is returned in `regime.inputs` so the\ncall is reproducible. `meta.maintenance_margin_tiers` gives the per-pair MM /\nmax-leverage ladder for context.\n\n**`distribution_context`** (per coin) puts today's readings in\ndistributional context: trailing-30-day percentile ranks of the near-mark\ncluster density, |distance to flip|, normalized MM skew\n(`mm_net_delta/mm_gross`), regime score and funding rate — e.g. \"BTC\nnear-mark fuel density is the 92nd percentile of 30d\". The history is\nforward-only (hourly samples, started 2026-07); `history_days` /\n`sample_count` report how much exists and every `*_pctile` is null while\n`status` is `warming` (< 2 days). `meta.distribution_legend` documents each\nfield. The same block is archived in the `gamma_exposure` snapshot type.\n\nRequires a Pro or Pro Plus key; full-universe (all perps) on both.","operationId":"get_quant_gex_api_v1_quant_gex_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"description":"Filter to one coin, e.g. BTC","title":"Symbol","type":"string","nullable":true},"description":"Filter to one coin, e.g. BTC"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/whales":{"get":{"tags":["Quant"],"summary":"Get Quant Whales","description":"Hyperliquid whale activity — the ≥$100k account universe (Pro).\n\nRolls every large Hyperliquid account (the same universe behind\n`/quant/positioning` and `/quant/gex`; active accounts re-polled every\nliq-map cycle — 15 min on the public path) up into a single read:\n\n* `summary` — accounts tracked, the behavioral-class split\n  (`market_maker` / `whale` / `other`), aggregate long vs short notional, the\n  long/short ratio and the whole-book `net_bias` (risk-on/risk-off).\n* `top_coins` — the cryptos whales hold the most, by total notional: per coin\n  the long/short/net/gross USD, distinct account counts, the dominant side and\n  `directional_net_usd` (net excluding market-maker liquidity = the conviction\n  read).\n\nScope: Hyperliquid **perpetuals** (the whale margin book). `meta.segment` is\n`perp` and `meta.spot_status` flags that spot-wallet balances are not yet\ncollected. The view is crypto-only (no tokenized equities).\n\nFull-universe (all coins) on Pro and Pro Plus. Historical whale positioning\nis on Pro Plus via `/quant/whales/history`.","operationId":"get_quant_whales_api_v1_quant_whales_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/quant/whales/history":{"get":{"tags":["Quant"],"summary":"Get Quant Whales History","description":"Historic whale-activity movement — daily long/short notional (Pro Plus).\n\nA daily time-series of aggregate whale positioning: per UTC day the total\n`long_usd` / `short_usd` / `net_usd` / `gross_usd` across the ≥$100k account\nbook, plus the day's top coins by net.\n\nFull-universe collection is recent, so the early part of the series is\n**modeled** (each point carries `source` = `seed` | `live` and `estimated`):\na seeded baseline anchored to the first live reading that is replaced by\nobserved snapshots as they accrue. `meta.seeded_count` / `live_count` report\nthe split so you can trust-but-verify.\n\nFull-universe aggregate history (not coin-scopable) — Pro Plus.","operationId":"get_quant_whales_history_api_v1_quant_whales_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":540,"minimum":7,"description":"Trailing window length in days","default":180,"title":"Days"},"description":"Trailing window length in days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/coins":{"get":{"tags":["Quant"],"summary":"Get Quant Coins","description":"All-coins regime summary — the heatmap feed (Pro).\n\nOne trimmed entry per active Hyperliquid perp: regime + confidence,\np_direction_up (sum of the two bullish buckets), most likely transition,\nand current OI. Coins with under 60 days of history carry\n`insufficient_history: true` with reduced confidence; brand-new listings\nshow `status: warming_up` until 30 days of bars exist. Full probability\nmatrices live at /quant/coins/{symbol}.","operationId":"get_quant_coins_api_v1_quant_coins_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"horizon","in":"query","required":false,"schema":{"enum":["4h","24h"],"type":"string","default":"24h","title":"Horizon"}},{"name":"regime","in":"query","required":false,"schema":{"description":"Filter by regime label, e.g. squeeze","title":"Regime","type":"string","nullable":true},"description":"Filter by regime label, e.g. squeeze"},{"name":"sort","in":"query","required":false,"schema":{"enum":["oi","confidence","symbol","p_up"],"type":"string","default":"oi","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":300,"minimum":1,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantCoinsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/coins/risk":{"get":{"tags":["Quant"],"summary":"Get Quant Coins Risk","description":"Bulk per-coin risk model for the whole universe (Pro).\n\nOne call that batches /quant/coins/{symbol} and /volatility/regime/{symbol}\nacross the full quant universe — majors (BTC/ETH/SOL) included — so consumers\ndon't fan out ~2 calls per perp. Each item carries the coin's regime +\nconfidence, the volatility / liquidation_risk / funding / open_interest\nprobability buckets (verbatim from /quant/coins/{symbol}), and the\nvol-sizing fields (vol_target_multiplier, vol_pctile_30, rv_24h) from the\nvolatility regime. Coins with insufficient history or brand-new listings\nstill appear, flagged in `meta`, so callers can mark them ineligible rather\nthan guess. Values match the per-symbol endpoints for the same\nsymbol/horizon — this is a batched view, not new modelling.","operationId":"get_quant_coins_risk_api_v1_quant_coins_risk_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"horizon","in":"query","required":false,"schema":{"enum":["4h","24h"],"type":"string","default":"24h","title":"Horizon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantCoinsRiskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/coins/{symbol}":{"get":{"tags":["Quant"],"summary":"Get Quant Coin","description":"Full per-coin probability object with explain block (Pro).\n\nEverything /quant/market provides, conditioned on the whole-market regime\n(the coin's transition matrix is the market-posterior-weighted mixture —\ninspect `explain.transition_mixture_weights`). `recent_regimes` carries the\nlast ~48 inference rows for sparkline rendering. Coins with under 60 days\nof history return the object flagged `insufficient_history` rather than 404.","operationId":"get_quant_coin_api_v1_quant_coins__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"horizon","in":"query","required":false,"schema":{"enum":["4h","24h"],"type":"string","default":"24h","title":"Horizon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantCoinDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/history":{"get":{"tags":["Quant"],"summary":"Get Quant History","description":"Past probability rows — the verification surface (Pro Plus).\n\nEvery row records what the model said at that moment, with `backfilled`\ndistinguishing live point-in-time inferences (15-minute cadence) from\nretro-computed history (1-hour cadence, written by the backfill script)\nand `model_version` pinning which artifact produced it. Use this to score\nour calls against what actually happened — black-box probabilities are\nworthless; auditable ones aren't.","operationId":"get_quant_history_api_v1_quant_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","description":"'market' or a coin symbol, e.g. BTC","default":"market","title":"Scope"},"description":"'market' or a coin symbol, e.g. BTC"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"ISO 8601 or unix ms","title":"Start"},"description":"ISO 8601 or unix ms"},{"name":"end","in":"query","required":false,"schema":{"title":"End","type":"string","nullable":true}},{"name":"horizon","in":"query","required":false,"schema":{"title":"Horizon","enum":["4h","24h"],"type":"string","nullable":true}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"enum":["json","csv"],"type":"string","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/regimes/history":{"get":{"tags":["Quant"],"summary":"Get Quant Regime History","description":"Bulk download: the full market 6-regime history Parquet (Pro Plus).\n\nOne hourly row per bar, **2020 → yesterday**, market scope, with the full\ndistribution over all 6 regimes at three horizons — **now, 4h, 24h**\n(`p_now_*`, `p_4h_*`, `p_24h_*`, keyed by regime id; see `regime_map`). The\ndeep history is the same model that serves live, run over the Binance public\narchive it trained on — no hindsight relabeling — stitched to the live tail\n(the `source` column marks the seam). Returns a pre-signed URL so you pull\nmulti-year history in one request instead of paginating `/quant/history`.\n\nRebuilt daily. `p_4h`/`p_24h` are exact `αᵀAⁿ` transition-matrix\nprojections of the current posterior, not realized outcomes.","operationId":"get_quant_regime_history_api_v1_quant_regimes_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantRegimeHistoryResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/quant/timeline":{"get":{"tags":["Quant"],"summary":"Get Quant Timeline","description":"Historic daily regime timeline, 2019 → now (Pro Plus).\n\nGenerated at training time by running the final model over its full\ntraining history — the COVID crash, 2021 bull, LUNA/FTX bear and 2024 ETF\nbull are all in here, labeled by the same model that serves live, with no\nhindsight relabeling. Regenerated on every retrain.","operationId":"get_quant_timeline_api_v1_quant_timeline_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start","in":"query","required":false,"schema":{"description":"ISO date filter, e.g. 2022-01-01","title":"Start","type":"string","nullable":true},"description":"ISO date filter, e.g. 2022-01-01"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantTimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quant/model":{"get":{"tags":["Quant"],"summary":"Get Quant Model Card","description":"Model card + runtime status — full transparency (any valid key).\n\nWhat the model is (family, states, features), when it was trained, how it\nvalidated (walk-forward fold metrics from the artifact), its sha256, and\nlive runtime health (universe coverage, drift monitor vs training\nbaseline). `loaded: false` means data endpoints are 503 (no model deployed\nyet, or stub plumbing only).","operationId":"get_quant_model_card_api_v1_quant_model_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantModelCardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/quant/regimes":{"get":{"tags":["Quant"],"summary":"Get Quant Regimes","description":"The 6-regime taxonomy reference (any valid key).\n\nStable vocabulary for all quant endpoints: id, label, display name,\ndescription and the suggested algo-basket stance per regime. Raw HMM\nstates map many-to-one onto these labels; the labels are the API contract.","operationId":"get_quant_regimes_api_v1_quant_regimes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantRegimesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/quant/refresh":{"post":{"tags":["Quant"],"summary":"Refresh Quant","description":"Force an immediate inference cycle (Pro Plus).","operationId":"refresh_quant_api_v1_quant_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuantRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/regimes":{"get":{"tags":["Regimes"],"summary":"Get Regimes","description":"The 10-state long-horizon regime model + the current detected regime.\n\n``regimes`` is the stable taxonomy (id, machine ``regime`` id, display name,\ndescription, typical duration and directional bias). ``current`` is the live\nclassification with a ``rationale``, the inspectable ``signals`` that drove\nit, and — where applicable — an internal ``stage`` (Distribution) or\n``euphoria_score`` (Speculative Euphoria).","operationId":"get_regimes_api_v1_regimes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/regimes/current":{"get":{"tags":["Regimes"],"summary":"Get Current","description":"Just the current long-horizon regime — the trimmed companion to ``/regimes``.\n\nSame classification as the ``current`` block above, without the taxonomy.","operationId":"get_current_api_v1_regimes_current_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentRegime"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/trading-strategy-baskets":{"get":{"tags":["Strategy Baskets"],"summary":"Get Trading Strategy Baskets","description":"The 50-strategy meta-basket catalogue across 6 groups.\n\nEach basket carries a stable ``slug`` (the API contract, matching the web\npage anchor), a display ``name`` and a one-line ``description``. This is the\ntop-level taxonomy; finer setups live as sub-strategies beneath each basket.","operationId":"get_trading_strategy_baskets_api_v1_trading_strategy_baskets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyBasketsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/volatility/regime":{"get":{"tags":["Volatility Regime"],"summary":"Get Volatility Regime","description":"Per-asset realized-volatility regime across the SIGNUM_RGG universe.\n\nEach asset is classified into one of ``vol_shock``, ``expanding``,\n``compressed``, ``mean_reverting``, or ``normal`` from realized vol (close-to-\nclose, Parkinson, Garman-Klass) on daily klines. Each entry carries 7d/30d\nvol, the 90d vol percentile, term structure (7d/30d), and a vol-target\nposition-size multiplier (``target_vol / current_vol``, capped).\n\n**Backfillable** — replayable from daily klines (unlike the intraday-only\nliquidity regime). The ``vol.rv_1h`` field is live-only and lands null on\nhistorically backfilled days.\n\nExample screens: `?regime=compressed&sort=days_compressed` (longest dry\ntinder), `?regime=vol_shock` (acute spikes), `?sort=vol_target_multiplier&\norder=desc` (assets a vol-targeter would size up).","operationId":"get_volatility_regime_api_v1_volatility_regime_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"title":"Source","enum":["binance_spot","hyperliquid_perp"],"type":"string","nullable":true}},{"name":"regime","in":"query","required":false,"schema":{"description":"Filter by volatility regime","title":"Regime","enum":["vol_shock","expanding","compressed","mean_reverting","normal"],"type":"string","nullable":true},"description":"Filter by volatility regime"},{"name":"sort","in":"query","required":false,"schema":{"enum":["symbol","rv_gk_30","rv_gk_7","vol_pctile_30","term_structure_ratio","vol_target_multiplier","days_compressed"],"type":"string","default":"vol_pctile_30","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolatilityRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/volatility/regime/score":{"get":{"tags":["Volatility Regime"],"summary":"Get Volatility Regime Score","description":"Market-wide volatility-stress composite (0-100) + sentiment + regime mix.\n\nHigher score = more market-wide volatility stress (size down). Sentiment\nbands: stressed (≥70), elevated (55-69), normal (45-54), calm (30-44),\ndormant (<30) — where ``dormant`` is the dangerously-quiet, compressed-vol\nstate. Trimmed companion to ``/volatility/regime`` — no per-coin list.","operationId":"get_volatility_regime_score_api_v1_volatility_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolatilityRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/volatility/regime/{symbol}":{"get":{"tags":["Volatility Regime"],"summary":"Get Volatility Regime Symbol","description":"Per-asset Volatility regime detail with 60d daily history (Pro+).\n\n`history` contains compact daily bars (close, 30d close-to-close vol, 30d\nGarman-Klass vol) suitable for sparkline rendering.","operationId":"get_volatility_regime_symbol_api_v1_volatility_regime__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolatilityRegimeDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/volatility/regime/refresh":{"post":{"tags":["Volatility Regime"],"summary":"Refresh Volatility Regime","description":"Force recompute the Volatility regime cache (Pro+).","operationId":"refresh_volatility_regime_api_v1_volatility_regime_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolatilityRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/meme/regime":{"get":{"tags":["Meme Regime"],"summary":"Get Meme Regime","description":"Per-asset Meme / Speculative regime across the curated meme universe.\n\nEach asset is classified into one of ``euphoric``, ``distribution``,\n``ignition``, ``bleeding``, or ``dormant`` from trailing returns, a\nvolume-spike ratio, 30d realized-vol percentile, SMA-20 extension, and live\nHyperliquid funding. Aimed at systematic perps trading: the label implies a\nholding duration, leverage level, and funding-cost tolerance.\n\n**Partly backfillable** — price/volume/vol features replay from daily klines;\nthe ``meme.funding_rate`` / ``meme.oi_usd`` fields are live-only and land\nnull on historically backfilled days (so ``distribution`` only appears live).\n\nExample screens: `?regime=ignition&sort=vol_spike` (early movers),\n`?regime=euphoric&sort=ret_7d` (hottest blow-offs), `?regime=bleeding`\n(unwinds to avoid).","operationId":"get_meme_regime_api_v1_meme_regime_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"title":"Source","enum":["binance_spot","hyperliquid_perp"],"type":"string","nullable":true}},{"name":"regime","in":"query","required":false,"schema":{"description":"Filter by meme regime","title":"Regime","enum":["euphoric","distribution","ignition","bleeding","dormant"],"type":"string","nullable":true},"description":"Filter by meme regime"},{"name":"sort","in":"query","required":false,"schema":{"enum":["symbol","ret_7d","ret_30d","vol_spike","vol_pctile_30","sma20_extension_pct","funding_rate","oi_usd"],"type":"string","default":"ret_7d","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemeRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/meme/regime/score":{"get":{"tags":["Meme Regime"],"summary":"Get Meme Regime Score","description":"Market-wide meme-hype composite (0-100) + sentiment + regime mix.\n\nHigher score = frothier / more speculative heat. Sentiment bands: euphoric\n(≥70), heating (55-69), neutral (45-54), cooling (30-44), dormant (<30).\nCarries the cross-meme co-movement correlation and a ``meme_season`` flag\n(broad heating + correlated pack move). Trimmed companion to ``/meme/regime``\n— no per-coin list.","operationId":"get_meme_regime_score_api_v1_meme_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemeRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/meme/regime/{symbol}":{"get":{"tags":["Meme Regime"],"summary":"Get Meme Regime Symbol","description":"Per-asset Meme regime detail with 60d daily history (Pro+).\n\n`history` contains compact daily bars (close, 30d Garman-Klass vol) suitable\nfor sparkline rendering.","operationId":"get_meme_regime_symbol_api_v1_meme_regime__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemeRegimeDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/meme/regime/refresh":{"post":{"tags":["Meme Regime"],"summary":"Refresh Meme Regime","description":"Force recompute the Meme regime cache (Pro+).","operationId":"refresh_meme_regime_api_v1_meme_regime_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemeRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/event/regime":{"get":{"tags":["Event / Catalyst Regime"],"summary":"Get Event Regime","description":"Forward catalyst calendar — dated token unlocks, macro prints, and depegs.\n\nThe main Event/Catalyst payload: every catalyst in the next ``window_days``\n(default 7) with its directional bias and magnitude, plus the market-wide\nEvent Risk score. Unlocks bias short (supply overhang); macro prints are\n``risk_flag`` (the surprise is unknown ahead of time); major depegs bias\nshort. Use `/event/calendar` for richer filtering, `/event/regime/score` for\nthe composite alone.\n\n**Partly backfillable** — unlocks / macro / depeg replay from schedule + price\nhistory; the ``sector_rotation`` sidecar on `/event/regime/score` is\nlive-only and lands null on backfilled days.","operationId":"get_event_regime_api_v1_event_regime_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Forward horizon for the calendar","default":7,"title":"Window Days"},"description":"Forward horizon for the calendar"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/event/regime/score":{"get":{"tags":["Event / Catalyst Regime"],"summary":"Get Event Regime Score","description":"Market-wide Event Risk composite (0-100) + sub-scores + live-only sidecars.\n\nBaseline 0 (event risk is absence-by-default). Bands: dormant (<10), quiet\n(10-29), elevated (30-54), heavy (55-79), critical (≥80). Composite =\n0.40·unlock + 0.25·macro + 0.35·depeg, re-normalized over available feeds\n(``partial``/``inputs_available`` flag which were live). The\n``sector_rotation`` (CoinGecko categories) sidecar is live-only and\nexcluded from the composite.","operationId":"get_event_regime_score_api_v1_event_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/event/calendar":{"get":{"tags":["Event / Catalyst Regime"],"summary":"Get Event Calendar","description":"Filterable / queryable forward catalyst calendar (up to 30d out).\n\nThe query surface for the calendar: narrow by catalyst ``type``, affected\n``symbol``, ``bias``, ``min_magnitude``, and ``window_days``.","operationId":"get_event_calendar_api_v1_event_calendar_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"title":"Type","enum":["unlock","macro_print","depeg"],"type":"string","nullable":true}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":30,"title":"Window Days"}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Filter to catalysts affecting this ticker","title":"Symbol","type":"string","nullable":true},"description":"Filter to catalysts affecting this ticker"},{"name":"bias","in":"query","required":false,"schema":{"title":"Bias","enum":["long","short","neutral","risk_flag"],"type":"string","nullable":true}},{"name":"min_magnitude","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.0,"title":"Min Magnitude"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/event/regime/refresh":{"post":{"tags":["Event / Catalyst Regime"],"summary":"Refresh Event Regime","description":"Force recompute the Event / Catalyst regime cache (Pro+).","operationId":"refresh_event_regime_api_v1_event_regime_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/event/regime/{symbol}":{"get":{"tags":["Event / Catalyst Regime"],"summary":"Get Event Regime Symbol","description":"Per-symbol catalyst overlay — pending catalysts (≤7d) + net bias (Pro+).","operationId":"get_event_regime_symbol_api_v1_event_regime__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventSymbolOverlayResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/security/regime":{"get":{"tags":["Security / Black Swan Regime"],"summary":"Get Security Regime","description":"Recent security events — confirmed hacks/exploits + live stablecoin depegs.\n\nThe main Security/Black Swan payload: every security event in the last\n``window_days`` (default 10) with its affected symbols, severity, and acute\nshort bias, plus the market-wide Security Stress score. Use\n`/security/regime/score` for the composite alone.\n\n**Partly backfillable** — the hack / flow-stress / depeg subscores replay from\nthe dated DefiLlama hacks registry, archived net flows, and price history; the\n``security_headlines`` RSS sidecar on `/security/regime/score` is live-only and\nlands null on backfilled days.","operationId":"get_security_regime_api_v1_security_regime_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"Lookback for recent security events","default":10,"title":"Window Days"},"description":"Lookback for recent security events"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/security/regime/score":{"get":{"tags":["Security / Black Swan Regime"],"summary":"Get Security Regime Score","description":"Market-wide Security Stress composite (0-100) + sub-scores + live sidecar.\n\nBaseline 0 (security stress is absence-by-default). Bands: dormant (<10),\nquiet (10-29), elevated (30-54), heavy (55-79), critical (≥80). Composite =\n0.45·hack + 0.30·flow + 0.25·depeg, re-normalized over available feeds\n(``partial``/``inputs_available`` flag which were live). The\n``security_headlines`` sidecar (classified rekt/SlowMist RSS) is live-only and\nexcluded from the composite.","operationId":"get_security_regime_score_api_v1_security_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/security/events":{"get":{"tags":["Security / Black Swan Regime"],"summary":"Get Security Events","description":"Filterable recent security-events list (up to 10d back).\n\nNarrow by event ``type``, affected ``symbol``, and ``min_severity``.","operationId":"get_security_events_api_v1_security_events_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"title":"Type","enum":["hack","depeg"],"type":"string","nullable":true}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":10,"title":"Window Days"}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Filter to events affecting this ticker","title":"Symbol","type":"string","nullable":true},"description":"Filter to events affecting this ticker"},{"name":"min_severity","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.0,"title":"Min Severity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/security/regime/refresh":{"post":{"tags":["Security / Black Swan Regime"],"summary":"Refresh Security Regime","description":"Force recompute the Security / Black Swan regime cache (Pro+).","operationId":"refresh_security_regime_api_v1_security_regime_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/security/regime/{symbol}":{"get":{"tags":["Security / Black Swan Regime"],"summary":"Get Security Regime Symbol","description":"Per-symbol security overlay — implicating events + acute bias (Pro+).","operationId":"get_security_regime_symbol_api_v1_security_regime__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySymbolOverlayResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/policy/regime":{"get":{"tags":["Geopolitical / Policy Shock Regime"],"summary":"Get Policy Regime","description":"Policy Risk score + signed tilt + upcoming rate catalysts.\n\nThe main Geopolitical / Policy Shock payload: the market-wide Policy Risk\ncomposite, the signed ``policy_tilt`` (pro-crypto vs restrictive), and the\nscheduled rate decisions within ``window_days``. Use `/policy/regime/score`\nfor the full sub-score breakdown and `/policy/headlines` for the live\nUS-regulatory headline feed.\n\n**Partly backfillable** — the gdelt / cross-asset / rate subscores replay from\nGDELT's dated series, the archived macro block, and the rate schedule; the\n``policy_headlines`` sidecar is live-only (null on backfill).","operationId":"get_policy_regime_api_v1_policy_regime_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":45,"minimum":1,"description":"Forward horizon for rate catalysts","default":45,"title":"Window Days"},"description":"Forward horizon for rate catalysts"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRegimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/policy/regime/score":{"get":{"tags":["Geopolitical / Policy Shock Regime"],"summary":"Get Policy Regime Score","description":"Market-wide Policy Risk composite (0-100) + sub-scores + tilt + sidecars.\n\nBaseline 0 (policy shock is absence-by-default). Bands: dormant (<10), quiet\n(10-29), elevated (30-54), heavy (55-79), critical (≥80). Composite =\n0.40·gdelt + 0.35·cross_asset + 0.25·rate, re-normalized over available feeds.\n``policy_tilt`` (signed) comes from GDELT coverage tone. The\n``policy_headlines`` (Federal Register / SEC / CFTC) sidecar is live-only\nand excluded from the composite.","operationId":"get_policy_regime_score_api_v1_policy_regime_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRegimeScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/policy/headlines":{"get":{"tags":["Geopolitical / Policy Shock Regime"],"summary":"Get Policy Headlines","description":"Live classified US-regulatory headlines (Federal Register / SEC / CFTC).\n\nThe breaking-news sidecar: recent policy headlines classified pro-crypto vs\nrestrictive, with an aggregate ``regulatory_pressure`` magnitude and a signed\n``headline_tilt``. Live-only — not part of any backfillable composite.","operationId":"get_policy_headlines_api_v1_policy_headlines_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyHeadlinesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/policy/regime/refresh":{"post":{"tags":["Geopolitical / Policy Shock Regime"],"summary":"Refresh Policy Regime","description":"Force recompute the Geopolitical / Policy Shock regime cache (Pro+).","operationId":"refresh_policy_regime_api_v1_policy_regime_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRegimeRefreshResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/sentiment/fear-greed":{"get":{"tags":["Sentiment & Macro"],"summary":"Get Fear Greed","description":"Fear & Greed index (multi-source averaged).","operationId":"get_fear_greed_api_v1_sentiment_fear_greed_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'markdown' for LLM-friendly plain text","title":"Format"},"description":"Response format: 'markdown' for LLM-friendly plain text"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FearGreedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentiment/macro":{"get":{"tags":["Sentiment & Macro"],"summary":"Get Macro","description":"Macro indicators: EUR/USD, gold, treasury yields.","operationId":"get_macro_api_v1_sentiment_macro_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MacroResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/sentiment/stablecoins":{"get":{"tags":["Sentiment & Macro"],"summary":"Get Stablecoins","description":"Stablecoin market cap + 14d/90d flows.","operationId":"get_stablecoins_api_v1_sentiment_stablecoins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StablecoinResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/sentiment/stablecoins/remote-history":{"get":{"tags":["Sentiment & Macro"],"summary":"Get Remote Stablecoin History","description":"Daily stablecoin mcap + inflows from remote source.","operationId":"get_remote_stablecoin_history_api_v1_sentiment_stablecoins_remote_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteStablecoinHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentiment/stablecoins/history":{"get":{"tags":["Sentiment & Macro"],"summary":"Get Stablecoin History","description":"Raw stablecoin market cap history timeseries.","operationId":"get_stablecoin_history_api_v1_sentiment_stablecoins_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StablecoinHistoryResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-data/klines":{"get":{"tags":["Market Data"],"summary":"Get Klines","description":"OHLCV klines from Binance Spot.","operationId":"get_klines_api_v1_market_data_klines_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"1d","title":"Interval"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-data/ticker/24hr":{"get":{"tags":["Market Data"],"summary":"Get Ticker 24Hr","description":"24hr ticker stats from Binance Spot.","operationId":"get_ticker_24hr_api_v1_market_data_ticker_24hr_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TickerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-data/ticker/price":{"get":{"tags":["Market Data"],"summary":"Get Ticker Price","description":"Current price from Binance Spot.","operationId":"get_ticker_price_api_v1_market_data_ticker_price_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-data/btc-price-history":{"get":{"tags":["Market Data"],"summary":"Btc Price History","description":"BTC price history with 200D MA.","operationId":"btc_price_history_api_v1_market_data_btc_price_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BtcPriceHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-data/volume-history":{"get":{"tags":["Market Data"],"summary":"Volume History","description":"Daily volume + buy ratio from remote source.","operationId":"volume_history_api_v1_market_data_volume_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolumeHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-data/short-term-price":{"get":{"tags":["Market Data"],"summary":"Short Term Price","description":"Short-term BTC price momentum metrics (on-demand computation).","operationId":"short_term_price_api_v1_market_data_short_term_price_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortTermPriceResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-data/exchange-info":{"get":{"tags":["Market Data"],"summary":"Get Exchange Info","description":"Exchange pair info from Binance Spot.","operationId":"get_exchange_info_api_v1_market_data_exchange_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","default":"BTCUSDT","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/btc/cycle-indicators":{"get":{"tags":["Market Intelligence"],"summary":"Btc Cycle Indicators","description":"All 8 BTC cycle indicators.","operationId":"btc_cycle_indicators_api_v1_market_intelligence_btc_cycle_indicators_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of daily entries to return (0 = all, default 30)","default":30,"title":"Days"},"description":"Number of daily entries to return (0 = all, default 30)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleIndicatorsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/btc/cycle-indicators/{indicator}":{"get":{"tags":["Market Intelligence"],"summary":"Btc Cycle Indicator By Name","description":"Single BTC cycle indicator by name.","operationId":"btc_cycle_indicator_by_name_api_v1_market_intelligence_btc_cycle_indicators__indicator__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Indicator name","title":"Indicator"},"description":"Indicator name"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of daily entries to return (0 = all, default 30)","default":30,"title":"Days"},"description":"Number of daily entries to return (0 = all, default 30)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleIndicatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/etf/btc/aum":{"get":{"tags":["Market Intelligence"],"summary":"Etf Btc Aum","description":"BTC ETF total assets under management.","operationId":"etf_btc_aum_api_v1_market_intelligence_etf_btc_aum_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/etf/{asset}/flows":{"get":{"tags":["Market Intelligence"],"summary":"Etf Flows","description":"BTC, ETH, SOL, or XRP ETF flow history.","operationId":"etf_flows_api_v1_market_intelligence_etf__asset__flows_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"asset","in":"path","required":true,"schema":{"type":"string","description":"Asset: btc, eth, sol, or xrp","title":"Asset"},"description":"Asset: btc, eth, sol, or xrp"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ETFFlowsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/liquidations":{"get":{"tags":["Market Intelligence"],"summary":"Liquidations","description":"Cross-exchange liquidation data. Defaults to Hyperliquid perps coins only.\n\n**Filter semantics:** ``exchange=`` is a **coin-set filter**, not an\nexchange-data filter. With ``exchange=hyperliquid`` you get the coins\nlisted on Hyperliquid, but the liquidation values inside each entry are\nCoinGlass cross-exchange aggregates (Binance, OKX, Bybit, …). For\nHyperliquid's own per-asset trading data use ``/daily/hyperliquid``.\n\n**AsterDEX coverage:** With ``exchange=asterdex`` the response is the union\nof (a) CoinGlass cross-exchange aggregate rows whose symbol is also listed\non AsterDEX and (b) AsterDEX venue-native rows (``source: \"asterdex\"``)\nfor AsterDEX-only symbols (e.g. LAB, ASTEROID). Native rows depend on\nAsterDEX's force-order feed, which is intermittently disabled upstream;\nwhen unavailable, only the CoinGlass-aggregate rows are returned.\n\nThe free tier is scoped to BTC; full-universe coverage is Pro and Pro Plus.","operationId":"liquidations_api_v1_market_intelligence_liquidations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter to a single coin (e.g. BTC)","title":"Symbol"},"description":"Filter to a single coin (e.g. BTC)"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all","default":"hyperliquid","title":"Exchange"},"description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all"},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Instrument type (perps)","default":"perps","title":"Type"},"description":"Instrument type (perps)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max coins to return (default 250)","default":250,"title":"Limit"},"description":"Max coins to return (default 250)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/options":{"get":{"tags":["Market Intelligence"],"summary":"Options Data","description":"BTC options data (OI, volume, max pain).","operationId":"options_data_api_v1_market_intelligence_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceOptionsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/exchange-balance":{"get":{"tags":["Market Intelligence"],"summary":"Exchange Balance","description":"Exchange BTC balance and flow data.","operationId":"exchange_balance_api_v1_market_intelligence_exchange_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/coinbase-premium":{"get":{"tags":["Market Intelligence"],"summary":"Coinbase Premium","description":"Coinbase premium index.","operationId":"coinbase_premium_api_v1_market_intelligence_coinbase_premium_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/funding-rates":{"get":{"tags":["Market Intelligence"],"summary":"Funding Rates","description":"Cross-exchange funding rates. Defaults to Hyperliquid perps coins only.\n\n**Filter semantics:** ``exchange=`` is a **coin-set filter**, not an\nexchange-data filter. With ``exchange=hyperliquid`` you get the coins\nlisted on Hyperliquid, but each entry's ``stablecoin_margin_list`` /\n``token_margin_list`` still shows funding rates from every exchange\n(Binance, OKX, Bybit, …). For Hyperliquid's own per-asset funding rate\nuse ``/daily/hyperliquid``.","operationId":"funding_rates_api_v1_market_intelligence_funding_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter to a single coin (e.g. BTC)","title":"Symbol"},"description":"Filter to a single coin (e.g. BTC)"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all","default":"hyperliquid","title":"Exchange"},"description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all"},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Instrument type (perps)","default":"perps","title":"Type"},"description":"Instrument type (perps)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max coins to return (default 250)","default":250,"title":"Limit"},"description":"Max coins to return (default 250)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/open-interest":{"get":{"tags":["Market Intelligence"],"summary":"Open Interest","description":"Cross-exchange open interest.\n\nReturns multi-symbol data (top ~25 perps) when available, falling back to\nBTC-only from the fast-refresh cache.\n\n**Filter semantics:** ``exchange=`` is a **coin-set filter**, not an\nexchange-data filter. With ``exchange=hyperliquid`` you get the coins\nlisted on Hyperliquid, but each entry's ``exchange_list`` still aggregates\nopen interest across all CEXes. For Hyperliquid's own per-asset OI use\n``/daily/hyperliquid`` — note that ``open_interest`` there is in base-coin\nunits, with ``open_interest_usd`` as a derived USD notional.","operationId":"open_interest_api_v1_market_intelligence_open_interest_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter to a single coin (e.g. BTC)","title":"Symbol"},"description":"Filter to a single coin (e.g. BTC)"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all","default":"hyperliquid","title":"Exchange"},"description":"Filter to coins on exchange: hyperliquid, binance_spot, asterdex, or all"},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Instrument type (perps)","default":"perps","title":"Type"},"description":"Instrument type (perps)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max coins to return (default 250)","default":250,"title":"Limit"},"description":"Max coins to return (default 250)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/grayscale/holdings":{"get":{"tags":["Market Intelligence"],"summary":"Grayscale Holdings","description":"Grayscale fund holdings.","operationId":"grayscale_holdings_api_v1_market_intelligence_grayscale_holdings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/grayscale/premium":{"get":{"tags":["Market Intelligence"],"summary":"Grayscale Premium","description":"Grayscale BTC premium/discount history.\n\n**Note:** GBTC converted from a closed-end fund to a spot Bitcoin ETF on\n2024-01-11.  CoinGlass stopped updating premium data after conversion, so\nthis endpoint returns historical data only (through ~Jan 2024).","operationId":"grayscale_premium_api_v1_market_intelligence_grayscale_premium_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/taker-buy-sell":{"get":{"tags":["Market Intelligence"],"summary":"Taker Buy Sell","description":"Taker buy/sell volume ratio by exchange, per coin (4h window).","operationId":"taker_buy_sell_api_v1_market_intelligence_taker_buy_sell_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter by symbol (BTC, ETH, SOL, DOGE, XRP, ADA). Omit for all.","title":"Symbol"},"description":"Filter by symbol (BTC, ETH, SOL, DOGE, XRP, ADA). Omit for all."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market-intelligence/liquidations/by-exchange":{"get":{"tags":["Market Intelligence"],"summary":"Liquidations By Exchange","description":"Liquidations broken down by exchange (BTC, 4h).","operationId":"liquidations_by_exchange_api_v1_market_intelligence_liquidations_by_exchange_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/borrow-interest":{"get":{"tags":["Market Intelligence"],"summary":"Borrow Interest","description":"Margin borrow interest rate history (BTC, Binance, 4h).","operationId":"borrow_interest_api_v1_market_intelligence_borrow_interest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/fear-greed-history":{"get":{"tags":["Market Intelligence"],"summary":"Fear Greed History","description":"Fear & Greed index history with dated entries.","operationId":"fear_greed_history_api_v1_market_intelligence_fear_greed_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FearGreedHistoryResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/stablecoin-history":{"get":{"tags":["Market Intelligence"],"summary":"Stablecoin History","description":"Stablecoin market cap history timeseries.","operationId":"stablecoin_history_api_v1_market_intelligence_stablecoin_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceDataResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/market-intelligence/status":{"get":{"tags":["Market Intelligence"],"summary":"Market Intelligence Status","description":"Market intelligence collector status and rate usage.","operationId":"market_intelligence_status_api_v1_market_intelligence_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketIntelligenceStatusResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/daily":{"get":{"tags":["Daily Snapshot"],"summary":"Get Daily Snapshot","description":"Full daily snapshot of all current (non-history) data in one response.\n\nExcludes Binance spot prices and Hyperliquid data which are available\nvia dedicated ``/daily/prices`` and ``/daily/hyperliquid`` endpoints.\n\n**Market health block (`market_health`)**\n\nDual-score architecture: 4 long-term components (Price Trend, Market Breadth,\nStablecoin Flow 90d, Macro/DXY) + 7 short-term components (Volume Quality,\nFear & Greed, Derivatives, Market Breadth Short, Volatility, Short-Term Price,\nStablecoin Flow 14d). Combined score = 0.5·LT + 0.5·ST.\n\n- `market_health.total_score` / `long_term_score` / `short_term_score`: int 0–100\n- `market_health.sentiment` / `long_term_sentiment` / `short_term_sentiment`: BULLISH | NEUTRAL | BEARISH\n- `market_health.components`: `{name: {score, weight}}` (per-component details\n  are stripped from `/daily`; hit `/market-health` for component `.details`)\n- `market_health.indicators`: flat denormalization for quick consumption (below)\n\n**`market_health.indicators` contract**\n\nA flat dict of the most-filtered values from `components.<x>.details`. Keys are\n**omitted entirely** when the source value is unavailable (never null) so consumers\ncan safely use `dict.get(key, default)` for fallbacks. Committed key set:\n\n- `long_short_ratio` (float) — BTC long/short ratio (Binance perps)\n- `funding_rate` (float, %) — avg funding rate (aliased from `avg_funding_rate`;\n  CoinGlass cross-exchange when available, Binance fallback)\n- `buy_ratio` (float, 0–1) — weighted taker-buy ratio across top spot pairs\n- `fear_greed_value` (int, 0–100) — averaged Fear & Greed index\n- `breadth_pct` (float, %) — share of top-30 coins above their 200D MA\n- `pct_from_200ma` (float, %) — BTC distance from 200D MA\n- `cross_status` (str) — Golden | Death | Neutral\n- `stablecoin_change_7d` (float) — 7-day stablecoin market-cap change\n\n**Cross-exchange scope**\n\n`market_health` is computed cross-exchange (CoinGlass aggregate + Binance) and\nis **not** scoped by the `exchange` query param. The `exchange` filter only\ntrims the `coins`, `coinglass.funding`, and `coinglass.liquidations` lists.\nIn particular `indicators.long_short_ratio` is BTC-on-Binance, used as a\nmarket-wide sentiment signal — not a per-exchange Hyperliquid metric.\n\n**Payload trimming and filter-source readiness**\n\nTo keep responses small, `coinglass.funding` and `coinglass.liquidations` are\nalways capped at the top 100 entries (sorted by max absolute funding rate\nand 24h liquidation USD respectively) regardless of the `exchange` filter.\nThe full long tail is available at the dedicated\n`/market-intelligence/funding-rates` and `/market-intelligence/liquidations`\nendpoints. When `exchange` is set to a specific venue whose coin set has\nnot yet loaded after server start, this endpoint returns `503` rather than\nsilently emitting the unfiltered payload.\n\n**Technical / Structural regime block (`technical_regime`)**\n\nUniverse-wide counts (`above_200ma`, `in_squeeze`, `overbought_1d`, …) plus\ntop-N symbol lists (`top_in_squeeze`, `top_overbought`, `top_oversold`,\n`top_near_high`, `top_near_low`) as a macro overlay. The full per-symbol map\n(`by_symbol`, keyed by ticker, each entry carrying the `ma` / `bollinger` /\n`range_state` / `rsi` blocks) is **omitted by default** to keep this payload\ncompact — pass `technical_detail=true` to include it here, or read it\npoint-in-time from `/backtesting/daily-snapshots/{date}` where it is always\npresent. Per-symbol `rsi.*_1h` fields are only meaningful in the live\nsnapshot; backfilled historical days have no intraday series.\n\n**Volatility regime block (`volatility_regime`)**\n\nRealized-vol risk-sizing overlay (Regime #13): regime counts + shares\n(`compressed`, `expanding`, `vol_shock`, `mean_reverting`, `normal`), a\n0-100 `composite_score` (higher = more market-wide vol stress) with\n`sentiment`, `median_vol_pctile_30`, and top-N lists (`top_compressed`,\n`top_vol_shock`, `top_expanding`). The full per-symbol map (`by_symbol`,\neach entry carrying the `regime` + `vol` metrics incl. the vol-target\nmultiplier) is **omitted by default** — pass `volatility_detail=true` to\ninclude it, or read it point-in-time from `/backtesting/daily-snapshots/\n{date}`. Per-symbol `vol.rv_1h` is live-only; backfilled days land null.\n\n**SIGNUM_RGG directional trend radar (`signum_rgg`)**\n\nDaily RED/GREY/GREEN trend classifier (ADX(14)+DMI with hysteresis) across the\nfull HL-perp ∪ top-Binance-spot universe — Regime #14's directional companion.\nUniverse summary: `green`/`grey`/`red` counts + shares, a directional\n`net_breadth_pct` = (green−red)/n·100, `mean_trend_score`, a\nBULLISH/NEUTRAL/BEARISH `sentiment`, and `top_green`/`top_red` (most strongly\ntrending). The full per-symbol map (`by_symbol`, keyed by bare ticker, each\ncarrying `color`, a signed `score` (+ADX green / −ADX red / 0 grey),\n`adx`/`plus_di`/`minus_di`, `days_in_color`, and the `hl_symbol` join key) is\n**omitted by default** — pass `signum_detail=true` to include it, or read it\npoint-in-time from `/backtesting/daily-snapshots/{date}`. Per-symbol\n`intraday_*` are live-only; backfilled historical days land null.","operationId":"get_daily_snapshot_api_v1_daily_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter coins by exchange: hyperliquid, binance_spot, asterdex, or 'all' for unfiltered","default":"hyperliquid","title":"Exchange"},"description":"Filter coins by exchange: hyperliquid, binance_spot, asterdex, or 'all' for unfiltered"},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'markdown' for LLM-friendly plain text","title":"Format"},"description":"Response format: 'markdown' for LLM-friendly plain text"},{"name":"technical_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol technical_regime.by_symbol map (keyed by ticker). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Technical Detail"},"description":"Include the full per-symbol technical_regime.by_symbol map (keyed by ticker). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."},{"name":"volatility_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol volatility_regime.by_symbol map (keyed by ticker; regime + vol metrics per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Volatility Detail"},"description":"Include the full per-symbol volatility_regime.by_symbol map (keyed by ticker; regime + vol metrics per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."},{"name":"meme_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol meme_regime.by_symbol map (keyed by ticker; regime + meme metrics per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Meme Detail"},"description":"Include the full per-symbol meme_regime.by_symbol map (keyed by ticker; regime + meme metrics per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."},{"name":"event_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol event_regime.by_symbol overlay (keyed by ticker; pending catalysts + net bias per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Event Detail"},"description":"Include the full per-symbol event_regime.by_symbol overlay (keyed by ticker; pending catalysts + net bias per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."},{"name":"security_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol security_regime.by_symbol overlay (keyed by ticker; implicating hacks/depegs + acute bias per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Security Detail"},"description":"Include the full per-symbol security_regime.by_symbol overlay (keyed by ticker; implicating hacks/depegs + acute bias per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."},{"name":"signum_detail","in":"query","required":false,"schema":{"type":"boolean","description":"Include the full per-symbol signum_rgg.by_symbol map (keyed by ticker; RED/GREY/GREEN color + signed trend score + ADX/DMI + hl_symbol join key per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}.","default":false,"title":"Signum Detail"},"description":"Include the full per-symbol signum_rgg.by_symbol map (keyed by ticker; RED/GREY/GREEN color + signed trend score + ADX/DMI + hl_symbol join key per coin). Off by default to keep the payload compact; always available point-in-time via /backtesting/daily-snapshots/{date}."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/daily/prices":{"get":{"tags":["Daily Snapshot"],"summary":"Get Daily Prices","description":"All Binance spot price pairs (~2,500 symbols).","operationId":"get_daily_prices_api_v1_daily_prices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/daily/hyperliquid":{"get":{"tags":["Daily Snapshot"],"summary":"Get Daily Hyperliquid","description":"Hyperliquid perpetuals: prices, funding rates, and open interest (~230 assets).\n\nEach entry in ``funding_oi`` contains both raw and derived fields:\n\n- ``funding_rate`` — Hyperliquid's own funding rate, per HL funding interval\n  (1h on HL by default). Negative values indicate shorts paying longs.\n  This is **Hyperliquid-specific**; cross-exchange averaged funding\n  lives in ``/market-health`` and ``/market-intelligence/funding-rates``.\n- ``open_interest`` — **in base-coin units** (number of contracts), mirroring\n  the Hyperliquid API. For BTC this might be ``28846.42`` meaning ~28.8K BTC.\n  Use this when comparing across exchanges that quote OI in the same units.\n- ``open_interest_usd`` — derived notional in USD = ``open_interest * mark_price``.\n  Use this for \"is this market large enough to trade?\" thresholds.\n- ``mark_price`` / ``oracle_price`` — both USD.\n- ``day_ntl_vlm`` — 24h notional volume, **already USD-denominated**.\n\nCoverage: every active HL perp (~230). Refresh cadence: 1 minute. Note that\nthinly-traded perps may emit ``open_interest = 0`` legitimately when no\npositions are open.","operationId":"get_daily_hyperliquid_api_v1_daily_hyperliquid_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/daily/hl-traders":{"get":{"tags":["Daily Snapshot"],"summary":"Get Daily Hl Traders","description":"Top trader leaderboard, wallet positions, and tracking metadata.","operationId":"get_daily_hl_traders_api_v1_daily_hl_traders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/dex/trending":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get Trending Pools","description":"Trending DEX pools across chains. High-frequency discovery data for meme coin alpha.","operationId":"get_trending_pools_api_v1_dex_trending_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"chain","in":"query","required":false,"schema":{"description":"Filter by chain: solana, ethereum, base, bsc, arbitrum","title":"Chain","type":"string","nullable":true},"description":"Filter by chain: solana, ethereum, base, bsc, arbitrum"},{"name":"universe","in":"query","required":false,"schema":{"description":"Filter to token universe: hl_perps","title":"Universe","type":"string","nullable":true},"description":"Filter to token universe: hl_perps"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/new-pools":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get New Pools","description":"Newest DEX pools — early discovery of new token launches.","operationId":"get_new_pools_api_v1_dex_new_pools_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"chain","in":"query","required":false,"schema":{"description":"Filter by chain: solana, ethereum, base, bsc, arbitrum","title":"Chain","type":"string","nullable":true},"description":"Filter by chain: solana, ethereum, base, bsc, arbitrum"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/token/{chain}/{address}":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get Token Info","description":"Token info + top pools for a specific token on a chain.","operationId":"get_token_info_api_v1_dex_token__chain___address__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dex/promoted":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get Promoted Tokens","description":"Recently promoted/boosted tokens — marketing spend signal.","operationId":"get_promoted_tokens_api_v1_dex_promoted_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/dex/promoted/top":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get Top Promoted Tokens","description":"Top promoted tokens ranked by promotion spend.","operationId":"get_top_promoted_tokens_api_v1_dex_promoted_top_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/dex/security/{chain}/{address}":{"get":{"tags":["DEX & Meme Coins"],"summary":"Get Token Security","description":"Token security report — rug detection, honeypot check, risk scoring.","operationId":"get_token_security_api_v1_dex_security__chain___address__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/daily-snapshots":{"get":{"tags":["Backtesting"],"summary":"List Daily Snapshots","description":"List dates with an archived daily snapshot available (YYYY-MM-DD).\n\nSnapshots are produced once per day at 20:00 UTC (and on server startup).\nEach archived snapshot contains everything `/api/v1/daily` returns —\nhealth score, derivatives, sentiment, macro, ETF flows, cycle indicators,\non-chain composite score, all on-chain collector states.\n\nPass ``start``/``end`` (YYYY-MM-DD, inclusive) to bound the date range.","operationId":"list_daily_snapshots_api_v1_backtesting_daily_snapshots_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start","in":"query","required":false,"schema":{"type":"string","description":"Earliest date to include (YYYY-MM-DD, inclusive).","title":"Start"},"description":"Earliest date to include (YYYY-MM-DD, inclusive)."},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"Latest date to include (YYYY-MM-DD, inclusive).","title":"End"},"description":"Latest date to include (YYYY-MM-DD, inclusive)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotArchiveListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/daily-snapshots/{date}":{"get":{"tags":["Backtesting"],"summary":"Get Daily Snapshot By Date","description":"Retrieve an archived daily snapshot for `date` (YYYY-MM-DD UTC).\n\nReturns the full snapshot identical in shape to `/api/v1/daily`, including\nthe new `onchain_health_score` field. Use this to build historical\nregime-tagged backtests without re-computing per-day signals yourself.","operationId":"get_daily_snapshot_by_date_api_v1_backtesting_daily_snapshots__date__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySnapshotArchiveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/klines":{"get":{"tags":["Backtesting"],"summary":"Get Klines","description":"Query historical 1-minute OHLCV klines for backtesting.","operationId":"get_klines_api_v1_backtesting_klines_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","description":"Trading pair, e.g. BTCUSDT (Binance) or BTC (Hyperliquid)","title":"Symbol"},"description":"Trading pair, e.g. BTCUSDT (Binance) or BTC (Hyperliquid)"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"binance or hyperliquid","default":"binance","title":"Exchange"},"description":"binance or hyperliquid"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start time (ISO 8601 or unix ms)","title":"Start"},"description":"Start time (ISO 8601 or unix ms)"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time (ISO 8601 or unix ms, defaults to now)","title":"End"},"description":"End time (ISO 8601 or unix ms, defaults to now)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: json or csv","default":"json","title":"Format"},"description":"Response format: json or csv"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestKlinesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/funding":{"get":{"tags":["Backtesting"],"summary":"Get Funding","description":"Query historical funding rates and open interest.","operationId":"get_funding_api_v1_backtesting_funding_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","description":"Symbol, e.g. BTC or BTCUSDT","title":"Symbol"},"description":"Symbol, e.g. BTC or BTCUSDT"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"binance or hyperliquid","default":"hyperliquid","title":"Exchange"},"description":"binance or hyperliquid"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start time (ISO 8601 or unix ms)","title":"Start"},"description":"Start time (ISO 8601 or unix ms)"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time","title":"End"},"description":"End time"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestFundingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/liquidations":{"get":{"tags":["Backtesting"],"summary":"Get Liquidations","description":"Query historical liquidation data.","operationId":"get_liquidations_api_v1_backtesting_liquidations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter by symbol, or omit for all","title":"Symbol"},"description":"Filter by symbol, or omit for all"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start time (ISO 8601 or unix ms)","title":"Start"},"description":"Start time (ISO 8601 or unix ms)"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time","title":"End"},"description":"End time"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestLiquidationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/snapshots":{"get":{"tags":["Backtesting"],"summary":"Get Snapshots","description":"Query historical JSON snapshots for a data type.\n\nStreamed row-by-row so peak memory stays ~one row regardless of ``limit``.\nA limit=1000 pull of fat types (coinglass_oi / coinglass_funding /\nstablecoins) otherwise decompressed ~300MB and ballooned ~1GB through\nserialization, OOM-looping the 2.5GiB container. The JSON response shape is\nunchanged, so consumers need no changes. Streaming also means bytes start\nflowing immediately — no more 60s nginx 504 on large pulls. No heavy-read\nsemaphore needed here: memory is now bounded by the stream itself, and the\nrequest rate is bounded by nginx/Cloudflare on the /backtesting route.","operationId":"get_snapshots_api_v1_backtesting_snapshots_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"data_type","in":"query","required":true,"schema":{"type":"string","description":"Snapshot type, e.g. market_health, fear_greed, coinglass_etf_flows","title":"Data Type"},"description":"Snapshot type, e.g. market_health, fear_greed, coinglass_etf_flows"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start time (ISO 8601 or unix ms)","title":"Start"},"description":"Start time (ISO 8601 or unix ms)"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time","title":"End"},"description":"End time"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"universe","in":"query","required":false,"schema":{"description":"For dex_trending: filter to hl_perps","title":"Universe","type":"string","nullable":true},"description":"For dex_trending: filter to hl_perps"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestSnapshotsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/snapshots/types":{"get":{"tags":["Backtesting"],"summary":"Get Snapshot Types","description":"List all available snapshot data types with row counts and date ranges.","operationId":"get_snapshot_types_api_v1_backtesting_snapshots_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestSnapshotTypesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/backtesting/symbols":{"get":{"tags":["Backtesting"],"summary":"Get Symbols","description":"List all tracked symbols with available date ranges.","operationId":"get_symbols_api_v1_backtesting_symbols_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter by exchange: binance or hyperliquid","title":"Exchange"},"description":"Filter by exchange: binance or hyperliquid"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestSymbolsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/status":{"get":{"tags":["Backtesting"],"summary":"Get Status","description":"Get backtesting storage statistics.","operationId":"get_status_api_v1_backtesting_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestStatusResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/backtesting/export":{"get":{"tags":["Backtesting"],"summary":"Export Data","description":"Export kline data as streaming CSV download.","operationId":"export_data_api_v1_backtesting_export_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","description":"Symbol to export","title":"Symbol"},"description":"Symbol to export"},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"binance or hyperliquid","default":"binance","title":"Exchange"},"description":"binance or hyperliquid"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start time (ISO 8601 or unix ms)","title":"Start"},"description":"Start time (ISO 8601 or unix ms)"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time","title":"End"},"description":"End time"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/archives/index":{"get":{"tags":["Backtesting"],"summary":"Get Archive Index","description":"Return the backtesting archive index — a compact summary of all\navailable data types, symbols, exchanges, and date ranges.\n\nConsumers should call this once to discover what's available, then\nuse ``/archives/download`` to fetch specific files.","operationId":"get_archive_index_api_v1_backtesting_archives_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/backtesting/archives":{"get":{"tags":["Backtesting"],"summary":"List Archives","description":"List archived files available for download from cold storage.\n\nUse ``data_type=daily`` for consolidated Parquet files containing all\nsymbols for an exchange in a single file (recommended for bulk downloads).\n\n``data_type=klines_deep`` / ``funding_deep`` expose the deep monthly cold\nhistory (one Parquet per symbol per month) — much further back than the\nrolling daily files. ``klines_deep`` is coarse OHLCV (``interval`` 1h/4h/1d);\n``funding_deep`` is hourly ``funding_rate`` only (no historical OI/mark).\n\nPass ``start``/``end`` (YYYY-MM-DD; YYYY-MM for deep tiers) to filter by date\nserver-side — strongly recommended for high-volume types where the unfiltered\nlisting can be large enough to time out.","operationId":"list_archives_api_v1_backtesting_archives_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"data_type","in":"query","required":false,"schema":{"type":"string","description":"Data type: daily, klines, funding, liquidations, snapshots, klines_deep, or funding_deep. Use 'daily' for consolidated per-exchange bundles; the '*_deep' tiers are monthly cold history (see /archives/index).","default":"klines","title":"Data Type"},"description":"Data type: daily, klines, funding, liquidations, snapshots, klines_deep, or funding_deep. Use 'daily' for consolidated per-exchange bundles; the '*_deep' tiers are monthly cold history (see /archives/index)."},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Filter by exchange (klines/funding/daily/klines_deep/funding_deep only)","title":"Exchange"},"description":"Filter by exchange (klines/funding/daily/klines_deep/funding_deep only)"},{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Filter by symbol, or snapshot type name for snapshots","title":"Symbol"},"description":"Filter by symbol, or snapshot type name for snapshots"},{"name":"start","in":"query","required":false,"schema":{"type":"string","description":"Earliest archive date to include (YYYY-MM-DD, inclusive; YYYY-MM for '*_deep' tiers). Recommended for large types like liquidations to avoid listing timeouts.","title":"Start"},"description":"Earliest archive date to include (YYYY-MM-DD, inclusive; YYYY-MM for '*_deep' tiers). Recommended for large types like liquidations to avoid listing timeouts."},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"Latest archive date to include (YYYY-MM-DD, inclusive; YYYY-MM for '*_deep' tiers).","title":"End"},"description":"Latest archive date to include (YYYY-MM-DD, inclusive; YYYY-MM for '*_deep' tiers)."},{"name":"interval","in":"query","required":false,"schema":{"type":"string","description":"Candle interval for klines_deep only: 1h, 4h, or 1d (ignored for other types).","title":"Interval"},"description":"Candle interval for klines_deep only: 1h, 4h, or 1d (ignored for other types)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestArchivesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/backtesting/archives/download":{"get":{"tags":["Backtesting"],"summary":"Download Archives","description":"Generate pre-signed download URLs for archived files.\n\nUse ``data_type=daily`` for consolidated Parquet files (one per exchange)\ninstead of individual per-symbol files.\n\n``data_type=klines_deep`` (with ``interval`` 1h/4h/1d) and ``funding_deep``\nserve the deep monthly cold history — one Parquet per symbol per month,\nreaching far past the rolling daily files (1d klines back to HL's 2023\nlaunch). For deep tiers ``start``/``end`` match the file's YYYY-MM token, so\npass month-granular bounds (e.g. ``start=2023-06``).","operationId":"download_archives_api_v1_backtesting_archives_download_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start date (YYYY-MM-DD; YYYY-MM for '*_deep' tiers)","title":"Start"},"description":"Start date (YYYY-MM-DD; YYYY-MM for '*_deep' tiers)"},{"name":"data_type","in":"query","required":false,"schema":{"type":"string","description":"Data type: daily, klines, funding, liquidations, snapshots, klines_deep, or funding_deep. Use 'daily' for consolidated bundles; '*_deep' for deep monthly cold history.","default":"klines","title":"Data Type"},"description":"Data type: daily, klines, funding, liquidations, snapshots, klines_deep, or funding_deep. Use 'daily' for consolidated bundles; '*_deep' for deep monthly cold history."},{"name":"exchange","in":"query","required":false,"schema":{"type":"string","description":"Exchange filter (klines/funding/daily/klines_deep/funding_deep)","title":"Exchange"},"description":"Exchange filter (klines/funding/daily/klines_deep/funding_deep)"},{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Symbol, or snapshot type name for snapshots","title":"Symbol"},"description":"Symbol, or snapshot type name for snapshots"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End date (YYYY-MM-DD, defaults to today; YYYY-MM for '*_deep' tiers)","title":"End"},"description":"End date (YYYY-MM-DD, defaults to today; YYYY-MM for '*_deep' tiers)"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","description":"Candle interval for klines_deep only: 1h, 4h, or 1d (ignored for other types).","title":"Interval"},"description":"Candle interval for klines_deep only: 1h, 4h, or 1d (ignored for other types)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestArchiveDownloadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nfts/overview":{"get":{"tags":["NFTs"],"summary":"Get Nft Overview","description":"Headline NFT trade volume — total + per-chain / per-tier / per-category series, top collections, marketplaces.","operationId":"get_nft_overview_api_v1_nfts_overview_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":7,"description":"Days of history to return","default":90,"title":"Days"},"description":"Days of history to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFTOverviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nfts/collections":{"get":{"tags":["NFTs"],"summary":"List Nft Collections","description":"Seeded NFT collection taxonomy — slug, name, chain, category, tier, launch month.","operationId":"list_nft_collections_api_v1_nfts_collections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/nfts/collections/{slug}":{"get":{"tags":["NFTs"],"summary":"Get Nft Collection","description":"Per-collection daily volume time-series.","operationId":"get_nft_collection_api_v1_nfts_collections__slug__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":7,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFTCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nfts/chains":{"get":{"tags":["NFTs"],"summary":"List Nft Chains","description":"Chain breakdown — each chain plus the count of seeded collections on it.","operationId":"list_nft_chains_api_v1_nfts_chains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NFTChainCount"},"type":"array","title":"Response List Nft Chains Api V1 Nfts Chains Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/nfts/categories":{"get":{"tags":["NFTs"],"summary":"List Nft Categories","description":"Category taxonomy — fixed buckets (pfp/art/gaming/collectible/music/domain/metaverse/ordinal/other).","operationId":"list_nft_categories_api_v1_nfts_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NFTCategoryCount"},"type":"array","title":"Response List Nft Categories Api V1 Nfts Categories Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/nfts/volume":{"get":{"tags":["NFTs"],"summary":"Get Nft Volume","description":"Daily NFT volume buckets — choose `by=chain|tier|category|collection`.\n\nPro tier. The collection breakdown can return many series; consumers\nshould expect a wide list when calling with `by=collection`.","operationId":"get_nft_volume_api_v1_nfts_volume_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"by","in":"query","required":false,"schema":{"enum":["chain","tier","category","collection"],"type":"string","default":"chain","title":"By"}},{"name":"from","in":"query","required":false,"schema":{"description":"ISO date (YYYY-MM-DD)","title":"From","type":"string","nullable":true},"description":"ISO date (YYYY-MM-DD)"},{"name":"to","in":"query","required":false,"schema":{"description":"ISO date (YYYY-MM-DD)","title":"To","type":"string","nullable":true},"description":"ISO date (YYYY-MM-DD)"},{"name":"granularity","in":"query","required":false,"schema":{"const":"daily","type":"string","default":"daily","title":"Granularity","enum":["daily"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFTVolumeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nfts/correlations":{"get":{"tags":["NFTs"],"summary":"Get Nft Correlations","description":"Pearson correlation of daily NFT total volume vs daily log-returns of vs= assets.\n\nPro Plus tier. Window is a trailing window ending today. Returns one\ncoefficient per asset plus the number of overlapping days actually used.","operationId":"get_nft_correlations_api_v1_nfts_correlations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"vs","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated asset symbols","default":"btc,eth,sol","title":"Vs"},"description":"Comma-separated asset symbols"},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":14,"default":90,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFTCorrelationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/on-chain/stablecoin-reserves":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Stablecoin Reserves","description":"CEX stablecoin reserves across ETH/Tron/BSC.\n\nAggregate USDT/USDC/etc. balances held in known hot/cold wallets of the\ntop centralized exchanges. Rising = dry powder accumulating (bullish);\nfalling = capital deployed (often follows rallies).","operationId":"get_stablecoin_reserves_api_v1_on_chain_stablecoin_reserves_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StablecoinReservesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/stablecoin-reserves/dry-powder":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Dry Powder Score","description":"Dry-powder signal: z-score of current reserves vs 30d baseline.\n\nSignal interpretation:\n- **accumulating** (z > +1): institutional capital staging on exchanges\n- **depleting** (z < -1): capital deployed or off-ramped\n- **neutral**: within normal range\n\nReturns 'unknown' until ≥8 historical snapshots have been collected.","operationId":"get_dry_powder_score_api_v1_on_chain_stablecoin_reserves_dry_powder_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DryPowderScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/exchange-flows/spike-alerts":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Spike Alerts","description":"Recent large transfers (≥ `min_amount`) to/from tracked CEX wallets.\n\nUseful for catching whale-sized deposits in real time. Currently surfaces\nonly EVM-chain Transfer events (ETH/BSC); BTC large-tx detection lands in\nPhase 2 with miner flow tracking.","operationId":"get_spike_alerts_api_v1_on_chain_exchange_flows_spike_alerts_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_amount","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"Minimum transfer size in token units (default $1M)","default":1000000,"title":"Min Amount"},"description":"Minimum transfer size in token units (default $1M)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpikeAlertsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/on-chain/miners/reserves":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Miner Reserves","description":"BTC miner pool reserves + 24h/7d/30d net flow per pool.\n\nTracks reward addresses for Foundry USA, AntPool, F2Pool, ViaBTC, and\nBinance Pool. Most pools sweep balances immediately (low standing balance\nis normal); the meaningful signal is the cumulative funded/spent delta\nover rolling windows.\n\nNet flow interpretation:\n- **Negative net** (heavy spending): miners selling — bearish pressure\n- **Positive net** (accumulation): miners holding — historically late-bear\n- Windows show as `available: false` until enough snapshots have accrued","operationId":"get_miner_reserves_api_v1_on_chain_miners_reserves_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MinerReservesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/miners/hash-ribbon":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Hash Ribbon","description":"Hash Ribbon indicator: 30dMA vs 60dMA of BTC hashrate.\n\nStates:\n- **capitulation**: 30dMA < 60dMA — miners shutting off rigs\n- **recovery**: 30dMA just crossed back above 60dMA (within 14d) —\n  historically the strongest BTC bottom signal\n- **normal**: standard configuration with no recent crossover\n\nSource: mempool.space hashrate index (3y daily history).","operationId":"get_hash_ribbon_api_v1_on_chain_miners_hash_ribbon_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HashRibbonResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/dormancy/btc":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Btc Dormancy","description":"BTC supply-shock / dormancy signals via CoinMetrics Community API.\n\nReturns:\n- **MVRV** (market cap / realized cap) — the canonical supply-shock indicator\n  with zone classification (capitulation → accumulation → neutral →\n  elevated → euphoria)\n- **Active addresses** — network health + adoption proxy\n- **Issuance USD/24h** — direct miner pressure proxy\n- **Exchange net flow USD/24h** — independent cross-check of QuickNode\n  derived ERC-20 flows","operationId":"get_btc_dormancy_api_v1_on_chain_dormancy_btc_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DormancyResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/whales/accumulation-score":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Whale Accumulation Score","description":"🚧 **Coming soon** (temporarily disabled). Aggregate whale accumulation\nsignal across all tracked ERC-20s.\n\nReturns counts of `accumulating` / `neutral` / `distributing` / `unknown`\nacross USDT/USDC/WBTC/WETH and a directional verdict.\n\nSignals turn from `unknown` to actionable once the collector has ≥7d of\nhistory (so non-CEX top-holder balance deltas can be computed).","operationId":"get_whale_accumulation_score_api_v1_on_chain_whales_accumulation_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhaleAccumulationScoreResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/whales/accumulation-score/{symbol}":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Whale Accumulation Score For Symbol","description":"🚧 **Coming soon** (temporarily disabled). Whale accumulation signal for a single ERC-20 token (USDT/USDC/WBTC/WETH).","operationId":"get_whale_accumulation_score_for_symbol_api_v1_on_chain_whales_accumulation_score__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhaleAccumulationScoreResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/on-chain/whales/{symbol}":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Whales For Symbol","description":"🚧 **Coming soon** (temporarily disabled). Top non-CEX holders of `symbol` with 7d/30d balance deltas.\n\nReturns up to top-5 holders by current balance (full top-100 is internal\nstate used for aggregation). Aggregate balance, share-of-supply, and\ndeltas reflect the full top-100 minus known CEX wallets.","operationId":"get_whales_for_symbol_api_v1_on_chain_whales__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhaleSymbolEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/on-chain/whales":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get All Whales","description":"🚧 **Coming soon** (temporarily disabled). Top non-CEX holders across all tracked tokens — full snapshot.","operationId":"get_all_whales_api_v1_on_chain_whales_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhalesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/score":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Onchain Health Score","description":"Composite 0-100 on-chain health score with per-component breakdown.\n\nSynthesizes Hash Ribbon, MVRV, stablecoin dry-powder, whale accumulation,\nexchange flow direction, and miner net flow into a single directional read.\n\nSentiment bands:\n- **bullish** (≥70): broad on-chain confluence of accumulation signals\n- **leaning_bullish** (55-69): tilted positive but mixed\n- **neutral** (45-54)\n- **leaning_bearish** (30-44)\n- **bearish** (<30): broad distribution + miner stress + flow into CEXs\n\nKept separate from `/market-health` for v1. Components with no data yet\ncontribute a neutral 50 (rather than being excluded) so the score stays\nstable across cold deploys.","operationId":"get_onchain_health_score_api_v1_on_chain_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnChainHealthResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/on-chain/exchange-flows/{symbol}":{"get":{"tags":["On-Chain Intelligence"],"summary":"Get Exchange Flows","description":"Net Transfer flow to/from CEX wallets for `symbol`, across windows.\n\nSymbol must be a token tracked by the exchange-flows collector across the\nsupported chains (ETH, BSC, Base, Arbitrum, Optimism, Tron, Solana). The\nsame symbol can be tracked on multiple chains; see `by_chain`.\n\nThe 1h/6h/24h/7d windows show inflow, outflow, and net. Positive net = more\ndeposits to CEXs (often bearish — incoming sell-side liquidity). Negative\nnet = withdrawals from CEXs (often bullish).\n\n`by_chain` breaks the same windows down per chain (only chains with data for\nthis symbol are present) and `chains_covered` lists them — matching the\ndaily-archive shape so live and backfilled snapshots line up.\n\n`spike_zscore_1h` flags the latest 1h vs the prior hour's baseline; values\n> 2 indicate a statistically unusual spike.","operationId":"get_exchange_flows_api_v1_on_chain_exchange_flows__symbol__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"exchange","in":"query","required":false,"schema":{"description":"Filter to one exchange (e.g. 'binance')","title":"Exchange","type":"string","nullable":true},"description":"Filter to one exchange (e.g. 'binance')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeFlowsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/plans":{"get":{"tags":["Payments"],"summary":"Get Plans","description":"Return plan pricing and supported networks. No auth required.","operationId":"get_plans_api_v1_payments_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlansResponse"}}}}}}},"/api/v1/payments/subscribe":{"post":{"tags":["Payments"],"summary":"Subscribe","description":"Subscribe to a pro plan via x402 payment.\n\nFlow:\n1. If active subscription with >7 days remaining → return it (no charge).\n2. If no x-payment header → return 402 with payment options.\n3. If x-payment header → verify, settle, upgrade key, create subscription + invoice.","operationId":"subscribe_api_v1_payments_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/payments/subscription":{"get":{"tags":["Payments"],"summary":"Get Subscription","description":"Return current subscription status.","operationId":"get_subscription_api_v1_payments_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatusResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/payments/invoices":{"get":{"tags":["Payments"],"summary":"List Invoices","description":"List all invoices for this API key's email.","operationId":"list_invoices_api_v1_payments_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceListResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/payments/invoices/{number}":{"get":{"tags":["Payments"],"summary":"Get Invoice","description":"Get a single invoice. JSON by default, ?format=html for printable, ?format=pdf for download.","operationId":"get_invoice_api_v1_payments_invoices__number__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|html|pdf)$","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/validate-code":{"post":{"tags":["Payments"],"summary":"Validate Code","description":"Validate a discount code and return the discounted price per plan.\n\nPublic (checkout UIs call it pre-auth). Every failure mode returns the\nidentical `{\"valid\": false}` — unknown, inactive, expired, and exhausted\nare indistinguishable, and email binding is never revealed here (it\nsurfaces only at pay time) — so codes can't be enumerated or probed.\nRate-limited per IP.","operationId":"validate_code_api_v1_payments_validate_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/agent-subscribe":{"post":{"tags":["Payments"],"summary":"Agent Subscribe (x402 Gasless Payment)","description":"Gasless one-shot onboarding for AI agents. Pay with USDC on Base via x402 -- no ETH gas needed.\n\n**How it works (2 HTTP calls):**\n\n1. **Call with no payment header** -- receive 402 with payment options (facilitator URL, price, networks).\n2. **Sign the USDC payment with your wallet** (off-chain EIP-712 signature, zero gas).\n3. **Call again with `x-payment` header** -- facilitator settles on-chain, you get an API key + PRO subscription.\n\n**Supported networks:** Base (USDC), Ethereum (USDC), Solana (USDC).\nRecommended: **Base** for lowest settlement cost.\n\n**Pricing:**\n- Pro:      Monthly $49 USDC  (real-time data, derivatives, on-chain analytics)\n- Pro Plus: Monthly $199 USDC (adds quant/regime engine, historical data & Parquet downloads)\n\n**Key resolution on repeat calls:**\n- Include `X-API-Key` header to renew that key's subscription.\n- No key header: looks up existing key by your wallet address, or creates a new one.\n- New API keys are returned **once** -- save it immediately.","operationId":"agent_subscribe_api_v1_payments_agent_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSubscribeRequest"}}},"required":true},"responses":{"200":{"description":"API key and PRO subscription details","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"List Webhooks","description":"List the webhook endpoints owned by the caller's API key.","operationId":"list_webhooks_api_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WebhookOut"},"type":"array","title":"Response List Webhooks Api V1 Webhooks Get"}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Webhooks"],"summary":"Create Webhook","description":"Register a new webhook endpoint with optional address and event filters.","operationId":"create_webhook_api_v1_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/webhooks/{label}":{"patch":{"tags":["Webhooks"],"summary":"Update Webhook","description":"Update a webhook endpoint by label (must be owned by the caller).","operationId":"update_webhook_api_v1_webhooks__label__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"Delete Webhook","description":"Delete a webhook endpoint by label (must be owned by the caller).","operationId":"delete_webhook_api_v1_webhooks__label__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/challenge":{"post":{"tags":["Wallet Auth"],"summary":"Create Challenge","description":"Generate an EIP-191 sign-in challenge for a wallet address.","operationId":"create_challenge_api_v1_wallet_challenge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/verify":{"post":{"tags":["Wallet Auth"],"summary":"Verify Signature","description":"Verify an EIP-191 signature and return/create an API key.","operationId":"verify_signature_api_v1_wallet_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/session":{"get":{"tags":["Wallet Auth"],"summary":"Get Session","description":"Get wallet session info for the current API key.","operationId":"get_session_api_v1_wallet_session_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/wallet/upgrade":{"post":{"tags":["Wallet Payments"],"summary":"Upgrade Plan","description":"Verify a USDC transfer on-chain and upgrade the API key to pro.","operationId":"upgrade_plan_api_v1_wallet_upgrade_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/wallet/invoices":{"get":{"tags":["Wallet Payments"],"summary":"List Invoices","description":"List all invoices for the current wallet.","operationId":"list_invoices_api_v1_wallet_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/wallet/invoices/{number}":{"get":{"tags":["Wallet Payments"],"summary":"Download Invoice","description":"Download a single invoice as PDF.","operationId":"download_invoice_api_v1_wallet_invoices__number__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/config":{"get":{"tags":["Wallet Payments"],"summary":"Wallet Config","description":"Return public wallet config (treasury addresses, supported networks).","operationId":"wallet_config_api_v1_wallet_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/wallet/create-solana-tx":{"post":{"tags":["Wallet Payments"],"summary":"Create Solana Tx","description":"Build a Solana SPL USDC transfer transaction and return base64 bytes.\n\nCreates a payment intent binding the sender to the caller's API key.\nThe frontend passes these bytes to Phantom which deserializes, simulates,\nand signs using its own @solana/web3.js — avoiding cross-module issues.","operationId":"create_solana_tx_api_v1_wallet_create_solana_tx_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolanaTxRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/wallet/solana-blockhash":{"get":{"tags":["Wallet Payments"],"summary":"Solana Blockhash","description":"Proxy: get latest Solana blockhash (avoids CORS issues with public RPCs).","operationId":"solana_blockhash_api_v1_wallet_solana_blockhash_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/wallet/solana-confirm/{signature}":{"get":{"tags":["Wallet Payments"],"summary":"Solana Confirm","description":"Proxy: check Solana transaction confirmation status.","operationId":"solana_confirm_api_v1_wallet_solana_confirm__signature__get","parameters":[{"name":"signature","in":"path","required":true,"schema":{"type":"string","title":"Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"APIKeyCreate":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"APIKeyCreate","description":"Request body for creating an API key."},"APIKeyInfo":{"properties":{"key_prefix":{"type":"string","title":"Key Prefix"},"email":{"type":"string","title":"Email"},"tier":{"type":"string","title":"Tier"},"is_active":{"type":"boolean","title":"Is Active"},"requests_today":{"type":"integer","title":"Requests Today"},"daily_limit":{"title":"Daily Limit","type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"title":"Expires At","type":"string","format":"date-time","nullable":true}},"type":"object","required":["key_prefix","email","tier","is_active","requests_today","daily_limit","created_at","expires_at"],"title":"APIKeyInfo","description":"API key information (without the full key)."},"APIKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"key_prefix":{"type":"string","title":"Key Prefix"},"email":{"type":"string","title":"Email"},"tier":{"type":"string","title":"Tier"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"message":{"type":"string","title":"Message","default":"Save this API key securely. It will not be shown again."}},"type":"object","required":["api_key","key_prefix","email","tier","created_at"],"title":"APIKeyResponse","description":"Response after creating an API key (only time full key is shown)."},"APIKeyRotateResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"key_prefix":{"type":"string","title":"Key Prefix"},"message":{"type":"string","title":"Message","default":"Your old API key has been invalidated. Save this new key securely."}},"type":"object","required":["api_key","key_prefix"],"title":"APIKeyRotateResponse","description":"Response after rotating an API key."},"AgentSubscribeRequest":{"properties":{"plan":{"type":"string","enum":["monthly","monthly_plus","annual","annual_plus"],"title":"Plan"},"discount_code":{"title":"Discount Code","type":"string","nullable":true}},"type":"object","required":["plan"],"title":"AgentSubscribeRequest","description":"Request body for agent subscription (no API key required)."},"AltcoinBreadthResponse":{"properties":{"coins":{"items":{"$ref":"#/components/schemas/AltcoinDetail"},"type":"array","title":"Coins"},"breadth_pct":{"type":"integer","title":"Breadth Pct"},"ma_period":{"type":"integer","title":"Ma Period"}},"type":"object","required":["coins","breadth_pct","ma_period"],"title":"AltcoinBreadthResponse","description":"Altcoin breadth with per-coin detail."},"AltcoinDetail":{"properties":{"symbol":{"type":"string","title":"Symbol"},"price":{"type":"number","title":"Price"},"ma":{"type":"number","title":"Ma"},"pct_from_ma":{"type":"number","title":"Pct From Ma"},"above_ma":{"type":"boolean","title":"Above Ma"}},"type":"object","required":["symbol","price","ma","pct_from_ma","above_ma"],"title":"AltcoinDetail","description":"Per-coin altcoin breadth detail."},"ArchiveDownloadLink":{"properties":{"date":{"type":"string","title":"Date"},"url":{"type":"string","title":"Url"},"size_bytes":{"type":"integer","title":"Size Bytes"},"expires_in":{"type":"integer","title":"Expires In","default":3600}},"type":"object","required":["date","url","size_bytes"],"title":"ArchiveDownloadLink"},"ArchiveFileInfo":{"properties":{"exchange":{"title":"Exchange","type":"string","nullable":true},"symbol":{"title":"Symbol","type":"string","nullable":true},"date":{"type":"string","title":"Date"},"size_mb":{"type":"number","title":"Size Mb"},"bars_total":{"title":"Bars Total","type":"integer","nullable":true},"bars_raw":{"title":"Bars Raw","type":"integer","nullable":true},"completeness":{"title":"Completeness","type":"number","nullable":true}},"type":"object","required":["date","size_mb"],"title":"ArchiveFileInfo"},"AutoWatchlistFilters":{"properties":{"min_win_rate":{"title":"Min Win Rate","description":"Minimum 30d win rate (0-1)","type":"number","maximum":1.0,"minimum":0.0,"nullable":true},"min_profit_factor":{"title":"Min Profit Factor","description":"Minimum profit factor","type":"number","minimum":0.0,"nullable":true},"min_trades_30d":{"title":"Min Trades 30D","description":"Minimum trades in 30d. Defaults to 30 when filters are provided, to prevent tiny-sample wallets (e.g. '100% WR over 2 trades') from passing. Pass 0 explicitly to disable.","type":"integer","minimum":0.0,"nullable":true},"min_avg_duration_hours":{"title":"Min Avg Duration Hours","description":"Min avg trade duration (hours)","type":"number","minimum":0.0,"nullable":true},"exclude_types":{"title":"Exclude Types","description":"Trader types to exclude, e.g. ['hft','scalper']","items":{"type":"string"},"type":"array","nullable":true}},"type":"object","title":"AutoWatchlistFilters"},"AutoWatchlistRequest":{"properties":{"mode":{"type":"string","title":"Mode","description":"Source mode (currently only 'top_traders')","default":"top_traders"},"max_wallets":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Wallets","description":"Max wallets in auto-managed set","default":15},"min_score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Min Score","description":"Minimum top-trader score","default":80},"filters":{"$ref":"#/components/schemas/AutoWatchlistFilters","nullable":true},"auto_refresh":{"type":"boolean","title":"Auto Refresh","description":"Re-evaluate daily and update automatically","default":true}},"type":"object","title":"AutoWatchlistRequest"},"BacktestArchiveDownloadResponse":{"properties":{"exchange":{"title":"Exchange","type":"string","nullable":true},"symbol":{"title":"Symbol","type":"string","nullable":true},"files":{"items":{"$ref":"#/components/schemas/ArchiveDownloadLink"},"type":"array","title":"Files"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["files","count"],"title":"BacktestArchiveDownloadResponse"},"BacktestArchivesResponse":{"properties":{"files":{"items":{"$ref":"#/components/schemas/ArchiveFileInfo"},"type":"array","title":"Files"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["files","count"],"title":"BacktestArchivesResponse"},"BacktestFundingEntry":{"properties":{"time":{"type":"integer","title":"Time"},"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange"},"funding_rate":{"title":"Funding Rate","type":"number","nullable":true},"open_interest":{"title":"Open Interest","type":"number","nullable":true},"mark_price":{"title":"Mark Price","type":"number","nullable":true}},"type":"object","required":["time","symbol","exchange"],"title":"BacktestFundingEntry"},"BacktestFundingResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange"},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/BacktestFundingEntry"},"type":"array","title":"Data"}},"type":"object","required":["symbol","exchange","count","data"],"title":"BacktestFundingResponse"},"BacktestKline":{"properties":{"t":{"type":"integer","title":"T"},"o":{"type":"number","title":"O"},"h":{"type":"number","title":"H"},"l":{"type":"number","title":"L"},"c":{"type":"number","title":"C"},"v":{"type":"number","title":"V"},"qv":{"title":"Qv","type":"number","nullable":true}},"type":"object","required":["t","o","h","l","c","v"],"title":"BacktestKline"},"BacktestKlinesResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange"},"interval":{"type":"string","title":"Interval"},"count":{"type":"integer","title":"Count"},"klines":{"items":{"$ref":"#/components/schemas/BacktestKline"},"type":"array","title":"Klines"}},"type":"object","required":["symbol","exchange","interval","count","klines"],"title":"BacktestKlinesResponse"},"BacktestLiquidationEntry":{"properties":{"time":{"type":"integer","title":"Time"},"symbol":{"type":"string","title":"Symbol"},"long_liq_usd":{"title":"Long Liq Usd","type":"number","nullable":true},"short_liq_usd":{"title":"Short Liq Usd","type":"number","nullable":true},"total_liq_usd":{"title":"Total Liq Usd","type":"number","nullable":true}},"type":"object","required":["time","symbol"],"title":"BacktestLiquidationEntry"},"BacktestLiquidationsResponse":{"properties":{"symbol":{"title":"Symbol","type":"string","nullable":true},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/BacktestLiquidationEntry"},"type":"array","title":"Data"}},"type":"object","required":["symbol","count","data"],"title":"BacktestLiquidationsResponse"},"BacktestSnapshotEntry":{"properties":{"time":{"type":"integer","title":"Time"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Data"}},"type":"object","required":["time"],"title":"BacktestSnapshotEntry"},"BacktestSnapshotTypeInfo":{"properties":{"data_type":{"type":"string","title":"Data Type"},"count":{"type":"integer","title":"Count"},"earliest":{"title":"Earliest","type":"integer","nullable":true},"latest":{"title":"Latest","type":"integer","nullable":true}},"type":"object","required":["data_type","count"],"title":"BacktestSnapshotTypeInfo"},"BacktestSnapshotTypesResponse":{"properties":{"types":{"items":{"$ref":"#/components/schemas/BacktestSnapshotTypeInfo"},"type":"array","title":"Types"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["types","count"],"title":"BacktestSnapshotTypesResponse"},"BacktestSnapshotsResponse":{"properties":{"data_type":{"type":"string","title":"Data Type"},"count":{"type":"integer","title":"Count"},"snapshots":{"items":{"$ref":"#/components/schemas/BacktestSnapshotEntry"},"type":"array","title":"Snapshots"}},"type":"object","required":["data_type","count","snapshots"],"title":"BacktestSnapshotsResponse"},"BacktestStatusResponse":{"properties":{"bt_klines_rows":{"type":"integer","title":"Bt Klines Rows","default":0},"bt_funding_rows":{"type":"integer","title":"Bt Funding Rows","default":0},"bt_liquidations_rows":{"type":"integer","title":"Bt Liquidations Rows","default":0},"bt_snapshots_rows":{"type":"integer","title":"Bt Snapshots Rows","default":0},"klines_earliest":{"title":"Klines Earliest","type":"integer","nullable":true},"klines_latest":{"title":"Klines Latest","type":"integer","nullable":true},"db_size_mb":{"type":"number","title":"Db Size Mb","default":0},"tracked_symbols":{"type":"integer","title":"Tracked Symbols","default":0}},"type":"object","title":"BacktestStatusResponse"},"BacktestSymbolInfo":{"properties":{"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange"},"is_active":{"type":"boolean","title":"Is Active","default":true},"earliest":{"title":"Earliest","type":"integer","nullable":true},"latest":{"title":"Latest","type":"integer","nullable":true}},"type":"object","required":["symbol","exchange"],"title":"BacktestSymbolInfo"},"BacktestSymbolsResponse":{"properties":{"symbols":{"items":{"$ref":"#/components/schemas/BacktestSymbolInfo"},"type":"array","title":"Symbols"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["symbols","count"],"title":"BacktestSymbolsResponse"},"BasketGroup":{"properties":{"id":{"type":"string","title":"Id","description":"Group letter A-F"},"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","description":"Display emoji for the group","default":""},"description":{"type":"string","title":"Description","description":"One-line summary of the group","default":""},"baskets":{"items":{"$ref":"#/components/schemas/BasketInfo"},"type":"array","title":"Baskets"}},"type":"object","required":["id","name","baskets"],"title":"BasketGroup","description":"A thematic group of meta-baskets (A-F)."},"BasketInfo":{"properties":{"slug":{"type":"string","title":"Slug","description":"Stable id (matches the web-page anchor)"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["slug","name","description"],"title":"BasketInfo","description":"One top-level strategy meta-basket."},"BollingerStateModel":{"properties":{"middle":{"title":"Middle","type":"number","nullable":true},"upper":{"title":"Upper","type":"number","nullable":true},"lower":{"title":"Lower","type":"number","nullable":true},"bandwidth_pct":{"title":"Bandwidth Pct","type":"number","nullable":true},"squeeze_percentile":{"title":"Squeeze Percentile","type":"number","nullable":true},"in_squeeze":{"type":"boolean","title":"In Squeeze","default":false},"days_in_squeeze":{"type":"integer","title":"Days In Squeeze","default":0},"expanding":{"type":"boolean","title":"Expanding","default":false}},"type":"object","title":"BollingerStateModel"},"BtcPriceHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"price":{"type":"number","title":"Price"},"ma200":{"title":"Ma200","type":"number","nullable":true}},"type":"object","required":["date","price"],"title":"BtcPriceHistoryEntry","description":"Single entry in BTC price history."},"BtcPriceHistoryResponse":{"properties":{"history":{"items":{"$ref":"#/components/schemas/BtcPriceHistoryEntry"},"type":"array","title":"History"}},"type":"object","required":["history"],"title":"BtcPriceHistoryResponse","description":"BTC price history with 200D MA."},"CacheStatus":{"properties":{"has_data":{"type":"boolean","title":"Has Data"},"age_seconds":{"title":"Age Seconds","type":"number","nullable":true}},"type":"object","required":["has_data"],"title":"CacheStatus","description":"Status of a single cache entry."},"CategoryCoin":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name","default":""},"current_price":{"title":"Current Price","type":"number","nullable":true},"market_cap":{"type":"number","title":"Market Cap","default":0},"market_cap_rank":{"type":"integer","title":"Market Cap Rank","default":0},"total_volume":{"type":"number","title":"Total Volume","default":0},"price_change_24h_pct":{"type":"number","title":"Price Change 24H Pct","default":0},"price_change_7d_pct":{"type":"number","title":"Price Change 7D Pct","default":0},"image_url":{"type":"string","title":"Image Url","default":""}},"type":"object","required":["symbol"],"title":"CategoryCoin","description":"Compact coin record inside a curated category group."},"ChallengeRequest":{"properties":{"wallet_address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","title":"Wallet Address"}},"type":"object","required":["wallet_address"],"title":"ChallengeRequest"},"ChallengeResponse":{"properties":{"message":{"type":"string","title":"Message"},"nonce":{"type":"string","title":"Nonce"}},"type":"object","required":["message","nonce"],"title":"ChallengeResponse"},"CoinCategoriesResponse":{"properties":{"categories":{"items":{"type":"string"},"type":"array","title":"Categories"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["categories","count"],"title":"CoinCategoriesResponse","description":"All unique coin categories."},"CoinCategoryGroup":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"coin_count":{"type":"integer","title":"Coin Count"},"coins":{"items":{"$ref":"#/components/schemas/CategoryCoin"},"type":"array","title":"Coins"}},"type":"object","required":["id","name","description","coin_count","coins"],"title":"CoinCategoryGroup","description":"A single curated category theme with its resolved coins."},"CoinCategoryGroupsResponse":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/CoinCategoryGroup"},"type":"array","title":"Categories"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["categories","count"],"title":"CoinCategoryGroupsResponse","description":"Curated category groups (AI, Platform, Privacy, RWA, NFT, ...)."},"CoinDepthHistoryResponse":{"properties":{"coin":{"type":"string","title":"Coin"},"minutes":{"type":"integer","title":"Minutes"},"count":{"type":"integer","title":"Count"},"history":{"items":{"$ref":"#/components/schemas/CoinDepthSnapshot"},"type":"array","title":"History"}},"type":"object","required":["coin","minutes","count","history"],"title":"CoinDepthHistoryResponse"},"CoinDepthSnapshot":{"properties":{"coin":{"type":"string","title":"Coin"},"ts":{"type":"integer","title":"Ts"},"mid_price":{"type":"number","title":"Mid Price"},"spread_bps":{"type":"number","title":"Spread Bps"},"bid_levels":{"type":"integer","title":"Bid Levels"},"ask_levels":{"type":"integer","title":"Ask Levels"},"depth_usd":{"$ref":"#/components/schemas/DepthBuckets"},"total_depth_25bps_usd":{"type":"number","title":"Total Depth 25Bps Usd"},"imbalance_10bps":{"type":"number","title":"Imbalance 10Bps"},"open_interest_usd":{"title":"Open Interest Usd","type":"number","nullable":true}},"type":"object","required":["coin","ts","mid_price","spread_bps","bid_levels","ask_levels","depth_usd","total_depth_25bps_usd","imbalance_10bps"],"title":"CoinDepthSnapshot"},"CoinListResponse":{"properties":{"coins":{"items":{"$ref":"#/components/schemas/CoinProfile"},"type":"array","title":"Coins"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["coins","total","page","per_page"],"title":"CoinListResponse","description":"Paginated coin list response."},"CoinProfile":{"properties":{"coingecko_id":{"type":"string","title":"Coingecko Id","default":""},"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name"},"current_price":{"title":"Current Price","type":"number","nullable":true},"market_cap":{"type":"number","title":"Market Cap","default":0},"market_cap_rank":{"type":"integer","title":"Market Cap Rank","default":0},"circulating_supply":{"type":"number","title":"Circulating Supply","default":0},"max_supply":{"title":"Max Supply","type":"number","nullable":true},"total_supply":{"type":"number","title":"Total Supply","default":0},"total_volume":{"type":"number","title":"Total Volume","default":0},"price_change_24h_pct":{"type":"number","title":"Price Change 24H Pct","default":0},"price_change_7d_pct":{"type":"number","title":"Price Change 7D Pct","default":0},"price_change_30d_pct":{"type":"number","title":"Price Change 30D Pct","default":0},"ath":{"type":"number","title":"Ath","default":0},"ath_change_pct":{"type":"number","title":"Ath Change Pct","default":0},"ath_date":{"type":"string","title":"Ath Date","default":""},"atl":{"type":"number","title":"Atl","default":0},"atl_change_pct":{"type":"number","title":"Atl Change Pct","default":0},"atl_date":{"type":"string","title":"Atl Date","default":""},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"description":{"type":"string","title":"Description","default":""},"image_url":{"type":"string","title":"Image Url","default":""},"last_updated":{"type":"string","title":"Last Updated","default":""},"cap_tier":{"type":"string","title":"Cap Tier","default":""}},"type":"object","required":["symbol","name"],"title":"CoinProfile","description":"Full coin profile."},"CoinRegimeEntry":{"properties":{"coin":{"type":"string","title":"Coin"},"regime":{"type":"string","title":"Regime","description":"deep_book | oi_price_divergence | depth_withdrawal | post_cascade_impaired | neutral"},"confidence":{"type":"number","title":"Confidence","default":0.0},"low_confidence":{"type":"boolean","title":"Low Confidence","default":false},"baseline_minutes":{"type":"integer","title":"Baseline Minutes","default":0},"signals":{"additionalProperties":true,"type":"object","title":"Signals"}},"type":"object","required":["coin","regime"],"title":"CoinRegimeEntry"},"CoinSearchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/CoinProfile"},"type":"array","title":"Results"},"query":{"type":"string","title":"Query"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["results","query","count"],"title":"CoinSearchResponse","description":"Search results."},"CoinTopResponse":{"properties":{"coins":{"items":{"$ref":"#/components/schemas/CoinProfile"},"type":"array","title":"Coins"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["coins","count"],"title":"CoinTopResponse","description":"Top coins by market cap."},"ComponentScoreSchema":{"properties":{"name":{"type":"string","title":"Name"},"score":{"type":"integer","title":"Score"},"weight":{"type":"number","title":"Weight"},"description":{"type":"string","title":"Description"},"details":{"additionalProperties":true,"type":"object","title":"Details","default":{}}},"type":"object","required":["name","score","weight","description"],"title":"ComponentScoreSchema","description":"Individual component score."},"Credentials":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"Credentials"},"CrossExchangeFunding":{"properties":{"coin":{"type":"string","title":"Coin"},"binance":{"additionalProperties":true,"type":"object","title":"Binance","default":{}},"hyperliquid":{"additionalProperties":true,"type":"object","title":"Hyperliquid","default":{}},"cross_exchange":{"title":"Cross Exchange","nullable":true}},"type":"object","required":["coin"],"title":"CrossExchangeFunding","description":"Cross-exchange funding rate comparison."},"CrossExchangeOI":{"properties":{"coin":{"type":"string","title":"Coin"},"binance":{"additionalProperties":true,"type":"object","title":"Binance","default":{}},"hyperliquid":{"additionalProperties":true,"type":"object","title":"Hyperliquid","default":{}},"cross_exchange":{"title":"Cross Exchange","nullable":true}},"type":"object","required":["coin"],"title":"CrossExchangeOI","description":"Cross-exchange open interest comparison."},"CrossExchangeSummary":{"properties":{"coin":{"type":"string","title":"Coin"},"binance":{"additionalProperties":true,"type":"object","title":"Binance","default":{}},"hyperliquid":{"additionalProperties":true,"type":"object","title":"Hyperliquid","default":{}},"cross_exchange":{"title":"Cross Exchange","nullable":true}},"type":"object","required":["coin"],"title":"CrossExchangeSummary","description":"Combined cross-exchange derivatives overview."},"CurrentRegime":{"properties":{"regime":{"title":"Regime","description":"Machine id, null on cold start","type":"string","nullable":true},"id":{"title":"Id","type":"integer","nullable":true},"anchor":{"title":"Anchor","type":"string","nullable":true},"name":{"title":"Name","type":"string","nullable":true},"rationale":{"title":"Rationale","description":"Why this regime was selected","type":"string","nullable":true},"stage":{"title":"Stage","description":"Sub-stage for Distribution (early_distribution|active_deleveraging) and Speculative Euphoria (alt_expansion|blow_off)","type":"string","nullable":true},"stage_label":{"title":"Stage Label","description":"Human label for the sub-stage","type":"string","nullable":true},"euphoria_score":{"title":"Euphoria Score","description":"0-100 froth gauge, present only for Speculative Euphoria","type":"integer","nullable":true},"signals":{"additionalProperties":true,"type":"object","title":"Signals","description":"The classifier inputs (health scores, condition, BTC dominance, volatility / meme / security overlays, OI, liquidations) — transparency"},"as_of":{"title":"As Of","description":"ISO-8601 timestamp of the classification","type":"string","nullable":true},"in_regime_since":{"title":"In Regime Since","description":"ISO-8601 ts the current committed regime was ENTERED — advances only when the regime actually changes, so consumers can show how long it has held","type":"string","nullable":true},"pending":{"description":"Candidate regime awaiting confirmation by the anti-churn dwell gate, or null","$ref":"#/components/schemas/PendingRegime","nullable":true}},"type":"object","title":"CurrentRegime","description":"The single regime the market is currently classified into."},"CycleIndicatorResponse":{"properties":{"indicator":{"type":"string","title":"Indicator"},"data":{"title":"Data"}},"type":"object","required":["indicator","data"],"title":"CycleIndicatorResponse","description":"Single BTC cycle indicator."},"CycleIndicatorsResponse":{"properties":{"indicators":{"additionalProperties":true,"type":"object","title":"Indicators"},"available":{"items":{"type":"string"},"type":"array","title":"Available"}},"type":"object","required":["indicators","available"],"title":"CycleIndicatorsResponse","description":"All BTC cycle indicators."},"DailySnapshotArchiveListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"dates":{"items":{"type":"string"},"type":"array","title":"Dates"}},"type":"object","required":["count","dates"],"title":"DailySnapshotArchiveListResponse"},"DailySnapshotArchiveResponse":{"properties":{"date":{"type":"string","title":"Date"},"snapshot":{"additionalProperties":true,"type":"object","title":"Snapshot"}},"type":"object","required":["date","snapshot"],"title":"DailySnapshotArchiveResponse"},"DailySnapshotResponse":{"properties":{"available_sections":{"items":{"type":"string"},"type":"array","title":"Available Sections","default":[]},"market_health":{"additionalProperties":true,"type":"object","title":"Market Health","default":{}}},"additionalProperties":true,"type":"object","title":"DailySnapshotResponse","description":"Full daily snapshot containing all current data from all collectors.\n\nKeys are collector names (e.g., binance_spot, hyperliquid, fear_greed, etc.)\nwith their respective daily data payloads."},"DepthBuckets":{"properties":{"bid":{"additionalProperties":{"type":"number"},"type":"object","title":"Bid"},"ask":{"additionalProperties":{"type":"number"},"type":"object","title":"Ask"}},"type":"object","title":"DepthBuckets","description":"Cumulative bid/ask notional within bps buckets from mid."},"DepthResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"universe_size":{"type":"integer","title":"Universe Size"},"coins":{"items":{"$ref":"#/components/schemas/CoinDepthSnapshot"},"type":"array","title":"Coins"}},"type":"object","required":["as_of","universe_size","coins"],"title":"DepthResponse"},"DerivativesHistoryResponse":{"properties":{"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History"}},"type":"object","required":["history"],"title":"DerivativesHistoryResponse","description":"Derivatives daily history from remote source."},"DerivativesSummary":{"properties":{"symbol":{"type":"string","title":"Symbol"},"funding":{"additionalProperties":true,"type":"object","title":"Funding","default":{}},"open_interest":{"additionalProperties":true,"type":"object","title":"Open Interest","default":{}},"long_short":{"additionalProperties":true,"type":"object","title":"Long Short","default":{}}},"type":"object","required":["symbol"],"title":"DerivativesSummary","description":"All-in-one derivatives summary."},"DormancyMetrics":{"properties":{"mvrv":{"title":"Mvrv","type":"number","nullable":true},"mvrv_7d_change_pct":{"title":"Mvrv 7D Change Pct","type":"number","nullable":true},"mvrv_30d_change_pct":{"title":"Mvrv 30D Change Pct","type":"number","nullable":true},"active_addresses":{"title":"Active Addresses","type":"number","nullable":true},"active_addresses_7d_change_pct":{"title":"Active Addresses 7D Change Pct","type":"number","nullable":true},"total_nonzero_addresses":{"title":"Total Nonzero Addresses","type":"number","nullable":true},"issuance_usd_24h":{"title":"Issuance Usd 24H","type":"number","nullable":true},"exchange_inflow_usd_24h":{"title":"Exchange Inflow Usd 24H","type":"number","nullable":true},"exchange_outflow_usd_24h":{"title":"Exchange Outflow Usd 24H","type":"number","nullable":true},"exchange_net_flow_usd_24h":{"title":"Exchange Net Flow Usd 24H","type":"number","nullable":true},"price_usd":{"title":"Price Usd","type":"number","nullable":true}},"type":"object","title":"DormancyMetrics"},"DormancyResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"as_of_date":{"type":"string","title":"As Of Date"},"metrics":{"$ref":"#/components/schemas/DormancyMetrics"},"mvrv_signal":{"$ref":"#/components/schemas/MVRVSignal"},"samples":{"type":"integer","title":"Samples"}},"type":"object","required":["as_of","as_of_date","metrics","mvrv_signal","samples"],"title":"DormancyResponse"},"DryPowderScoreResponse":{"properties":{"current_usd":{"title":"Current Usd","type":"number","nullable":true},"mean_30d":{"title":"Mean 30D","type":"number","nullable":true},"stdev_30d":{"title":"Stdev 30D","type":"number","nullable":true},"zscore":{"title":"Zscore","type":"number","nullable":true},"samples":{"title":"Samples","type":"integer","nullable":true},"signal":{"type":"string","title":"Signal","description":"accumulating | neutral | depleting | unknown"},"reason":{"title":"Reason","type":"string","nullable":true}},"type":"object","required":["signal"],"title":"DryPowderScoreResponse"},"ETFFlowsResponse":{"properties":{"asset":{"type":"string","title":"Asset"},"flows":{"title":"Flows"}},"type":"object","required":["asset","flows"],"title":"ETFFlowsResponse","description":"ETF flow history."},"EventCatalystModel":{"properties":{"event_type":{"type":"string","enum":["unlock","macro_print","depeg"],"title":"Event Type"},"title":{"type":"string","title":"Title"},"date":{"type":"string","title":"Date"},"days_until":{"type":"integer","title":"Days Until"},"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols","default":[]},"bias":{"type":"string","enum":["long","short","neutral","risk_flag","mixed"],"title":"Bias"},"magnitude":{"title":"Magnitude","type":"number","nullable":true},"unlocked_value_usd":{"title":"Unlocked Value Usd","type":"number","nullable":true},"pct_of_fdv":{"title":"Pct Of Fdv","type":"number","nullable":true},"deviation_bps":{"title":"Deviation Bps","type":"number","nullable":true},"macro_class":{"title":"Macro Class","type":"string","nullable":true},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["event_type","title","date","days_until","bias"],"title":"EventCatalystModel"},"EventPendingItem":{"properties":{"event_type":{"type":"string","enum":["unlock","macro_print","depeg"],"title":"Event Type"},"date":{"type":"string","title":"Date"},"days_until":{"type":"integer","title":"Days Until"},"bias":{"type":"string","enum":["long","short","neutral","risk_flag","mixed"],"title":"Bias"},"magnitude":{"title":"Magnitude","type":"number","nullable":true}},"type":"object","required":["event_type","date","days_until","bias"],"title":"EventPendingItem"},"EventRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"events":{"type":"integer","title":"Events"},"event_risk_score":{"type":"number","title":"Event Risk Score"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","events","event_risk_score","timestamp"],"title":"EventRegimeRefreshResponse"},"EventRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EventCatalystModel"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"window_days":{"type":"integer","title":"Window Days"},"event_risk_score":{"type":"number","title":"Event Risk Score"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","window_days","event_risk_score","band","timestamp"],"title":"EventRegimeResponse","description":"Forward event calendar — the main /event/regime payload."},"EventRegimeScoreResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"event_risk_score":{"type":"number","title":"Event Risk Score","description":"0-100; baseline 0 (absence = no event risk)"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"unlock_subscore":{"type":"number","title":"Unlock Subscore","default":0.0},"macro_subscore":{"type":"number","title":"Macro Subscore","default":0.0},"depeg_subscore":{"type":"number","title":"Depeg Subscore","default":0.0},"events_7d":{"type":"integer","title":"Events 7D","default":0},"events_30d":{"type":"integer","title":"Events 30D","default":0},"counts":{"additionalProperties":true,"type":"object","title":"Counts"},"partial":{"type":"boolean","title":"Partial","default":false},"inputs_available":{"items":{"type":"string"},"type":"array","title":"Inputs Available","default":[]},"sector_rotation":{"title":"Sector Rotation","description":"Live-only CoinGecko sector leaders/laggards; null on backfill","additionalProperties":true,"type":"object","nullable":true}},"type":"object","required":["as_of","event_risk_score","band"],"title":"EventRegimeScoreResponse","description":"Market-wide Event Risk composite + sub-scores + live-only sidecars."},"EventSymbolOverlayResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"hl_symbol":{"title":"Hl Symbol","type":"string","nullable":true},"pending":{"items":{"$ref":"#/components/schemas/EventPendingItem"},"type":"array","title":"Pending","default":[]},"net_bias":{"type":"string","enum":["long","short","neutral","risk_flag","mixed"],"title":"Net Bias","default":"neutral"},"net_magnitude":{"type":"number","title":"Net Magnitude","default":0.0},"nearest_event_days":{"title":"Nearest Event Days","type":"integer","nullable":true},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","timestamp"],"title":"EventSymbolOverlayResponse","description":"Per-symbol catalyst overlay (Pro+)."},"ExchangeBreakdown":{"properties":{"symbols":{"additionalProperties":{"type":"number"},"type":"object","title":"Symbols","description":"Balance by stablecoin symbol"},"chains":{"additionalProperties":{"type":"number"},"type":"object","title":"Chains","description":"Balance by chain"},"total_usd":{"type":"number","title":"Total Usd"}},"type":"object","required":["total_usd"],"title":"ExchangeBreakdown"},"ExchangeFlowsResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"exchange_filter":{"title":"Exchange Filter","type":"string","nullable":true},"as_of":{"type":"integer","title":"As Of"},"windows":{"additionalProperties":{"$ref":"#/components/schemas/WindowFlow"},"type":"object","title":"Windows"},"per_exchange_24h":{"additionalProperties":{"$ref":"#/components/schemas/WindowFlow"},"type":"object","title":"Per Exchange 24H"},"by_chain":{"additionalProperties":{"additionalProperties":{"$ref":"#/components/schemas/WindowFlow"},"type":"object"},"type":"object","title":"By Chain","default":{}},"chains_covered":{"items":{"type":"string"},"type":"array","title":"Chains Covered","default":[]},"spike_zscore_1h":{"title":"Spike Zscore 1H","type":"number","nullable":true},"spike_zscore_24h":{"title":"Spike Zscore 24H","type":"number","nullable":true}},"type":"object","required":["symbol","as_of","windows","per_exchange_24h"],"title":"ExchangeFlowsResponse"},"ExchangeInfoResponse":{"properties":{"symbol":{"type":"string","title":"Symbol","default":""},"status":{"type":"string","title":"Status","default":""},"base_asset":{"type":"string","title":"Base Asset","default":""},"quote_asset":{"type":"string","title":"Quote Asset","default":""},"base_precision":{"type":"integer","title":"Base Precision","default":0},"quote_precision":{"type":"integer","title":"Quote Precision","default":0}},"type":"object","title":"ExchangeInfoResponse","description":"Exchange pair info."},"FearGreedHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"value":{"type":"integer","title":"Value"},"classification":{"type":"string","title":"Classification"}},"type":"object","required":["date","value","classification"],"title":"FearGreedHistoryEntry","description":"Single entry in Fear & Greed history."},"FearGreedHistoryResponse":{"properties":{"history":{"items":{"$ref":"#/components/schemas/FearGreedHistoryEntry"},"type":"array","title":"History"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["history","count"],"title":"FearGreedHistoryResponse","description":"Fear & Greed history with dated entries."},"FearGreedResponse":{"properties":{"value":{"type":"integer","title":"Value"},"classification":{"type":"string","title":"Classification"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","default":[]},"individual_values":{"additionalProperties":{"type":"integer"},"type":"object","title":"Individual Values","default":{}}},"type":"object","required":["value","classification"],"title":"FearGreedResponse","description":"Fear & Greed index."},"FundingRateResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"current_rate":{"type":"number","title":"Current Rate","default":0},"avg_rate":{"type":"number","title":"Avg Rate","default":0},"rates":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rates","default":[]},"count":{"type":"integer","title":"Count","default":0}},"type":"object","required":["symbol"],"title":"FundingRateResponse","description":"Funding rate data."},"HLAutoWatchlistResponse":{"properties":{"managed":{"type":"boolean","title":"Managed"},"wallet_count":{"type":"integer","title":"Wallet Count"},"wallets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Wallets"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"next_refresh":{"title":"Next Refresh","type":"string","nullable":true},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["managed","wallet_count","wallets","config"],"title":"HLAutoWatchlistResponse","description":"Auto-managed watchlist result."},"HLCandleResponse":{"properties":{"coin":{"type":"string","title":"Coin"},"interval":{"type":"string","title":"Interval"},"candles":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Candles"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["coin","interval","candles","count"],"title":"HLCandleResponse","description":"Hyperliquid OHLCV candles."},"HLCopySignalsResponse":{"properties":{"traders":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traders"},"window_minutes":{"type":"integer","title":"Window Minutes"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["traders","window_minutes"],"title":"HLCopySignalsResponse","description":"Top traders with their recent signals in a single response."},"HLFundingRateResponse":{"properties":{"coin":{"type":"string","title":"Coin"},"current_rate":{"title":"Current Rate","type":"number","nullable":true},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History","default":[]}},"type":"object","required":["coin"],"title":"HLFundingRateResponse","description":"Hyperliquid funding rate data."},"HLL2BookResponse":{"properties":{"coin":{"type":"string","title":"Coin"},"bids":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bids","default":[]},"asks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Asks","default":[]}},"type":"object","required":["coin"],"title":"HLL2BookResponse","description":"Hyperliquid L2 order book."},"HLMetaResponse":{"properties":{"universe":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Universe","default":[]}},"type":"object","title":"HLMetaResponse","description":"Hyperliquid exchange metadata."},"HLOpenInterestResponse":{"properties":{"assets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Assets"},"total_oi":{"type":"number","title":"Total Oi","default":0}},"type":"object","required":["assets"],"title":"HLOpenInterestResponse","description":"Hyperliquid open interest across all assets."},"HLPricesResponse":{"properties":{"prices":{"additionalProperties":{"type":"number"},"type":"object","title":"Prices"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["prices","count"],"title":"HLPricesResponse","description":"All Hyperliquid mid prices."},"HLSummaryResponse":{"properties":{"coin":{"type":"string","title":"Coin"},"price":{"title":"Price","type":"number","nullable":true},"funding_rate":{"title":"Funding Rate","type":"number","nullable":true},"open_interest":{"title":"Open Interest","type":"number","nullable":true},"mark_price":{"title":"Mark Price","type":"number","nullable":true},"oracle_price":{"title":"Oracle Price","type":"number","nullable":true},"day_volume":{"title":"Day Volume","type":"number","nullable":true},"funding_history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Funding History","default":[]}},"type":"object","required":["coin"],"title":"HLSummaryResponse","description":"All-in-one Hyperliquid perp data."},"HLTopTradersResponse":{"properties":{"traders":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traders"},"total_leaderboard_size":{"type":"integer","title":"Total Leaderboard Size","default":0},"after_filter":{"type":"integer","title":"After Filter","default":0},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["traders"],"title":"HLTopTradersResponse","description":"Scored leaderboard of top Hyperliquid traders."},"HLTraderProfileResponse":{"properties":{"profile":{"additionalProperties":true,"type":"object","title":"Profile"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["profile"],"title":"HLTraderProfileResponse","description":"Single trader profile (on-demand for any address)."},"HLTraderProfilesResponse":{"properties":{"profiles":{"additionalProperties":true,"type":"object","title":"Profiles"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["profiles"],"title":"HLTraderProfilesResponse","description":"Trade profiles with win rate, PnL stats, and classification."},"HLWalletPositionsResponse":{"properties":{"wallets":{"additionalProperties":true,"type":"object","title":"Wallets"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["wallets"],"title":"HLWalletPositionsResponse","description":"Current positions for tracked wallets."},"HLWalletSearchResponse":{"properties":{"wallets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Wallets"},"count":{"type":"integer","title":"Count"},"filters":{"additionalProperties":true,"type":"object","title":"Filters"},"pool_size":{"type":"integer","title":"Pool Size"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["wallets","count","filters","pool_size"],"title":"HLWalletSearchResponse","description":"Wallets from the cached top-leaderboard pool that satisfy the given gates."},"HLWalletSignalsResponse":{"properties":{"signals":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Signals"},"window_minutes":{"type":"integer","title":"Window Minutes"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["signals","window_minutes"],"title":"HLWalletSignalsResponse","description":"Position change signals (entry/exit/increase/decrease)."},"HLWalletTradesResponse":{"properties":{"address":{"type":"string","title":"Address"},"trades":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Trades"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["address","trades","summary"],"title":"HLWalletTradesResponse","description":"Historical trades for a wallet with summary statistics."},"HLWatchlistResponse":{"properties":{"addresses":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Addresses"},"count":{"type":"integer","title":"Count"},"updated_at":{"title":"Updated At","type":"string","nullable":true}},"type":"object","required":["addresses","count"],"title":"HLWatchlistResponse","description":"Current watchlist addresses."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HashRibbonResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"state":{"type":"string","title":"State","description":"capitulation | recovery | normal"},"days_in_state":{"type":"integer","title":"Days In State"},"last_crossover_ts":{"type":"integer","title":"Last Crossover Ts"},"hashrate_eh":{"type":"number","title":"Hashrate Eh"},"ma30_eh":{"type":"number","title":"Ma30 Eh"},"ma60_eh":{"type":"number","title":"Ma60 Eh"},"ratio_ma30_over_ma60":{"title":"Ratio Ma30 Over Ma60","type":"number","nullable":true},"compressed":{"type":"boolean","title":"Compressed"},"history_days":{"type":"integer","title":"History Days"}},"type":"object","required":["as_of","state","days_in_state","last_crossover_ts","hashrate_eh","ma30_eh","ma60_eh","compressed","history_days"],"title":"HashRibbonResponse"},"HealthCheckResponse":{"properties":{"status":{"type":"string","title":"Status"},"service":{"type":"string","title":"Service"}},"type":"object","required":["status","service"],"title":"HealthCheckResponse","description":"Health check response."},"HealthComponent":{"properties":{"name":{"type":"string","title":"Name"},"score":{"type":"number","title":"Score"},"weight":{"type":"number","title":"Weight"},"reason":{"type":"string","title":"Reason"},"raw":{"title":"Raw","additionalProperties":true,"type":"object","nullable":true}},"type":"object","required":["name","score","weight","reason"],"title":"HealthComponent"},"HealthComponentsResponse":{"properties":{"components":{"items":{"$ref":"#/components/schemas/ComponentScoreSchema"},"type":"array","title":"Components"}},"type":"object","required":["components"],"title":"HealthComponentsResponse","description":"All component details."},"HealthHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"score":{"type":"integer","title":"Score"},"long_term_score":{"type":"integer","title":"Long Term Score"},"short_term_score":{"type":"integer","title":"Short Term Score"},"components":{"additionalProperties":true,"type":"object","title":"Components","default":{}}},"type":"object","required":["date","score","long_term_score","short_term_score"],"title":"HealthHistoryEntry","description":"Single entry in health score history."},"HealthHistoryResponse":{"properties":{"history":{"items":{"$ref":"#/components/schemas/HealthHistoryEntry"},"type":"array","title":"History"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["history","count"],"title":"HealthHistoryResponse","description":"Health score history."},"HealthRefreshResponse":{"properties":{"total_score":{"type":"integer","title":"Total Score"},"long_term_score":{"type":"integer","title":"Long Term Score"},"short_term_score":{"type":"integer","title":"Short Term Score"},"state":{"type":"string","title":"State"},"sentiment":{"type":"string","title":"Sentiment"},"refreshed":{"type":"boolean","title":"Refreshed"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["total_score","long_term_score","short_term_score","state","sentiment","refreshed","timestamp"],"title":"HealthRefreshResponse","description":"Response after force-refreshing health score."},"InvoiceListResponse":{"properties":{"invoices":{"items":{"$ref":"#/components/schemas/InvoiceResponse"},"type":"array","title":"Invoices"}},"type":"object","required":["invoices"],"title":"InvoiceListResponse"},"InvoiceResponse":{"properties":{"invoice_number":{"type":"string","title":"Invoice Number"},"plan":{"type":"string","title":"Plan"},"amount_usd":{"type":"number","title":"Amount Usd"},"amount_usdc":{"type":"number","title":"Amount Usdc"},"network":{"type":"string","title":"Network"},"tx_hash":{"type":"string","title":"Tx Hash"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["invoice_number","plan","amount_usd","amount_usdc","network","tx_hash","created_at"],"title":"InvoiceResponse"},"KlineResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"interval":{"type":"string","title":"Interval"},"klines":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Klines"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["symbol","interval","klines","count"],"title":"KlineResponse","description":"OHLCV kline data."},"LiquidityRegimeResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"universe_size":{"type":"integer","title":"Universe Size"},"coins":{"items":{"$ref":"#/components/schemas/CoinRegimeEntry"},"type":"array","title":"Coins"},"aggregate":{"$ref":"#/components/schemas/RegimeAggregate"},"composite_score":{"type":"number","title":"Composite Score","description":"0-100; higher = healthier market structure"},"sentiment":{"type":"string","title":"Sentiment","description":"healthy | leaning_healthy | neutral | leaning_fragile | fragile"}},"type":"object","required":["as_of","universe_size","coins","aggregate","composite_score","sentiment"],"title":"LiquidityRegimeResponse"},"LiquidityRegimeScoreResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"composite_score":{"type":"number","title":"Composite Score"},"sentiment":{"type":"string","title":"Sentiment"},"aggregate":{"$ref":"#/components/schemas/RegimeAggregate"}},"type":"object","required":["as_of","composite_score","sentiment","aggregate"],"title":"LiquidityRegimeScoreResponse"},"LongShortRatioResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"long_short_ratio":{"type":"number","title":"Long Short Ratio","default":1.0},"long_account_pct":{"type":"number","title":"Long Account Pct","default":50},"short_account_pct":{"type":"number","title":"Short Account Pct","default":50},"top_trader_long_short_ratio":{"type":"number","title":"Top Trader Long Short Ratio","default":1.0},"top_trader_long_pct":{"type":"number","title":"Top Trader Long Pct","default":50},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History","default":[]}},"type":"object","required":["symbol"],"title":"LongShortRatioResponse","description":"Long/short ratio data."},"MVRVSignal":{"properties":{"zone":{"type":"string","title":"Zone","description":"capitulation | accumulation | neutral | elevated | euphoria | unknown"},"value":{"title":"Value","type":"number","nullable":true},"interpretation":{"title":"Interpretation","type":"string","nullable":true},"reason":{"title":"Reason","type":"string","nullable":true}},"type":"object","required":["zone"],"title":"MVRVSignal"},"MacroResponse":{"properties":{"eur_usd_latest":{"title":"Eur Usd Latest","type":"number","nullable":true},"eur_usd_30d_change_pct":{"title":"Eur Usd 30D Change Pct","type":"number","nullable":true},"eur_usd_7d_change_pct":{"title":"Eur Usd 7D Change Pct","type":"number","nullable":true},"gold_price_usd":{"title":"Gold Price Usd","type":"number","nullable":true},"treasury_yield":{"title":"Treasury Yield","type":"number","nullable":true}},"type":"object","title":"MacroResponse","description":"Macro indicators."},"MarketHealthResponse":{"properties":{"total_score":{"type":"integer","title":"Total Score"},"long_term_score":{"type":"integer","title":"Long Term Score"},"short_term_score":{"type":"integer","title":"Short Term Score"},"state":{"type":"string","title":"State"},"sentiment":{"type":"string","title":"Sentiment"},"long_term_sentiment":{"type":"string","title":"Long Term Sentiment"},"short_term_sentiment":{"type":"string","title":"Short Term Sentiment"},"components":{"items":{"$ref":"#/components/schemas/ComponentScoreSchema"},"type":"array","title":"Components"},"long_term_components":{"items":{"$ref":"#/components/schemas/ComponentScoreSchema"},"type":"array","title":"Long Term Components"},"short_term_components":{"items":{"$ref":"#/components/schemas/ComponentScoreSchema"},"type":"array","title":"Short Term Components"},"details":{"additionalProperties":true,"type":"object","title":"Details","default":{}},"indicators":{"title":"Indicators","additionalProperties":true,"type":"object","nullable":true},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["total_score","long_term_score","short_term_score","state","sentiment","long_term_sentiment","short_term_sentiment","components","long_term_components","short_term_components","timestamp"],"title":"MarketHealthResponse","description":"Full market health score response."},"MarketHealthSummary":{"properties":{"total_score":{"type":"integer","title":"Total Score"},"long_term_score":{"type":"integer","title":"Long Term Score"},"short_term_score":{"type":"integer","title":"Short Term Score"},"state":{"type":"string","title":"State"},"sentiment":{"type":"string","title":"Sentiment"},"long_term_sentiment":{"type":"string","title":"Long Term Sentiment"},"short_term_sentiment":{"type":"string","title":"Short Term Sentiment"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["total_score","long_term_score","short_term_score","state","sentiment","long_term_sentiment","short_term_sentiment","timestamp"],"title":"MarketHealthSummary","description":"Summary scores + sentiment only."},"MarketIntelligenceDataResponse":{"properties":{"data":{"title":"Data"}},"type":"object","required":["data"],"title":"MarketIntelligenceDataResponse","description":"Generic market intelligence data wrapper."},"MarketIntelligenceOptionsResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"data":{"title":"Data"}},"type":"object","required":["symbol","data"],"title":"MarketIntelligenceOptionsResponse","description":"BTC options data."},"MarketIntelligenceStatusResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"rate_usage":{"additionalProperties":true,"type":"object","title":"Rate Usage","default":{}},"caches":{"additionalProperties":{"$ref":"#/components/schemas/CacheStatus"},"type":"object","title":"Caches","default":{}}},"type":"object","title":"MarketIntelligenceStatusResponse","description":"Market intelligence collector status and rate usage."},"MemeHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"close":{"type":"number","title":"Close"},"rv_gk_30":{"title":"Rv Gk 30","type":"number","nullable":true}},"type":"object","required":["date","close"],"title":"MemeHistoryEntry"},"MemeMetricsModel":{"properties":{"ret_1d":{"title":"Ret 1D","type":"number","nullable":true},"ret_7d":{"title":"Ret 7D","type":"number","nullable":true},"ret_30d":{"title":"Ret 30D","type":"number","nullable":true},"vol_spike":{"title":"Vol Spike","type":"number","nullable":true},"rv_gk_30":{"title":"Rv Gk 30","type":"number","nullable":true},"vol_pctile_30":{"title":"Vol Pctile 30","type":"number","nullable":true},"sma20_extension_pct":{"title":"Sma20 Extension Pct","type":"number","nullable":true},"funding_rate":{"title":"Funding Rate","type":"number","nullable":true},"funding_extreme":{"type":"boolean","title":"Funding Extreme","default":false},"oi_usd":{"title":"Oi Usd","type":"number","nullable":true},"days_in_regime":{"type":"integer","title":"Days In Regime","default":0},"prev_regime":{"title":"Prev Regime","type":"string","enum":["euphoric","distribution","ignition","bleeding","dormant"],"nullable":true},"regime_changed":{"type":"boolean","title":"Regime Changed","default":false}},"type":"object","title":"MemeMetricsModel"},"MemeRegimeDetailResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"regime":{"type":"string","enum":["euphoric","distribution","ignition","bleeding","dormant"],"title":"Regime"},"hl_symbol":{"title":"Hl Symbol","type":"string","nullable":true},"meme":{"$ref":"#/components/schemas/MemeMetricsModel"},"history":{"items":{"$ref":"#/components/schemas/MemeHistoryEntry"},"type":"array","title":"History","default":[]},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","source","price","regime","meme","timestamp"],"title":"MemeRegimeDetailResponse"},"MemeRegimeItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"regime":{"type":"string","enum":["euphoric","distribution","ignition","bleeding","dormant"],"title":"Regime"},"hl_symbol":{"title":"Hl Symbol","type":"string","nullable":true},"meme":{"$ref":"#/components/schemas/MemeMetricsModel"}},"type":"object","required":["symbol","source","price","regime","meme"],"title":"MemeRegimeItem"},"MemeRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"count":{"type":"integer","title":"Count"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","count","timestamp"],"title":"MemeRegimeRefreshResponse"},"MemeRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MemeRegimeItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","universe_size","timestamp"],"title":"MemeRegimeResponse"},"MemeRegimeScoreResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"composite_score":{"type":"number","title":"Composite Score"},"sentiment":{"type":"string","title":"Sentiment"},"breadth_heating_pct":{"type":"number","title":"Breadth Heating Pct","default":0.0},"mean_pairwise_correlation":{"title":"Mean Pairwise Correlation","type":"number","nullable":true},"meme_season":{"type":"boolean","title":"Meme Season","default":false},"median_funding_rate":{"title":"Median Funding Rate","type":"number","nullable":true},"fresh_issuance":{"title":"Fresh Issuance","description":"Live-only fresh-issuance froth gauge (DEX-promotion breadth/spend + GoPlus rug density): froth_score, promoted_count, total_promotion_spend, rug_sampled, rug_high_risk_pct, avg_security_score. Null if unavailable.","additionalProperties":true,"type":"object","nullable":true},"aggregate":{"additionalProperties":true,"type":"object","title":"Aggregate","description":"Regime counts + pct shares across the tracked meme universe"}},"type":"object","required":["as_of","composite_score","sentiment"],"title":"MemeRegimeScoreResponse","description":"Trimmed composite-only companion to /meme/regime."},"MinerFlowWindow":{"properties":{"available":{"type":"boolean","title":"Available"},"per_pool":{"title":"Per Pool","additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","nullable":true},"total_funded_btc":{"title":"Total Funded Btc","type":"number","nullable":true},"total_spent_btc":{"title":"Total Spent Btc","type":"number","nullable":true},"total_net_btc":{"title":"Total Net Btc","type":"number","nullable":true}},"type":"object","required":["available"],"title":"MinerFlowWindow"},"MinerPoolEntry":{"properties":{"balance_btc":{"type":"number","title":"Balance Btc"},"funded_sats_total":{"type":"integer","title":"Funded Sats Total"},"spent_sats_total":{"type":"integer","title":"Spent Sats Total"},"tx_count":{"type":"integer","title":"Tx Count"},"addresses":{"items":{"type":"string"},"type":"array","title":"Addresses"}},"type":"object","required":["balance_btc","funded_sats_total","spent_sats_total","tx_count","addresses"],"title":"MinerPoolEntry"},"MinerReservesResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"total_balance_btc":{"type":"number","title":"Total Balance Btc"},"total_funded_btc_cumulative":{"type":"number","title":"Total Funded Btc Cumulative"},"total_spent_btc_cumulative":{"type":"number","title":"Total Spent Btc Cumulative"},"by_pool":{"additionalProperties":{"$ref":"#/components/schemas/MinerPoolEntry"},"type":"object","title":"By Pool"},"flows":{"additionalProperties":{"$ref":"#/components/schemas/MinerFlowWindow"},"type":"object","title":"Flows"},"tracked_pools":{"items":{"type":"string"},"type":"array","title":"Tracked Pools"}},"type":"object","required":["as_of","total_balance_btc","total_funded_btc_cumulative","total_spent_btc_cumulative","by_pool","flows","tracked_pools"],"title":"MinerReservesResponse"},"MovingAverageStateModel":{"properties":{"sma_50":{"title":"Sma 50","type":"number","nullable":true},"sma_100":{"title":"Sma 100","type":"number","nullable":true},"sma_200":{"title":"Sma 200","type":"number","nullable":true},"above_50":{"title":"Above 50","type":"boolean","nullable":true},"above_100":{"title":"Above 100","type":"boolean","nullable":true},"above_200":{"title":"Above 200","type":"boolean","nullable":true},"dist_from_50_pct":{"title":"Dist From 50 Pct","type":"number","nullable":true},"dist_from_100_pct":{"title":"Dist From 100 Pct","type":"number","nullable":true},"dist_from_200_pct":{"title":"Dist From 200 Pct","type":"number","nullable":true},"last_cross_200":{"title":"Last Cross 200","type":"string","enum":["golden","death"],"nullable":true},"days_since_cross_200":{"title":"Days Since Cross 200","type":"integer","nullable":true},"last_cross_50_100":{"title":"Last Cross 50 100","type":"string","enum":["golden","death"],"nullable":true},"days_since_cross_50_100":{"title":"Days Since Cross 50 100","type":"integer","nullable":true}},"type":"object","title":"MovingAverageStateModel"},"NFTCategoryCount":{"properties":{"category":{"type":"string","title":"Category"},"collection_count":{"type":"integer","title":"Collection Count"}},"type":"object","required":["category","collection_count"],"title":"NFTCategoryCount"},"NFTChainCount":{"properties":{"chain":{"type":"string","title":"Chain"},"collection_count":{"type":"integer","title":"Collection Count"}},"type":"object","required":["chain","collection_count"],"title":"NFTChainCount"},"NFTCollection":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"chain":{"type":"string","title":"Chain"},"contract":{"title":"Contract","type":"string","nullable":true},"category":{"type":"string","title":"Category"},"tier":{"type":"string","title":"Tier"},"launched":{"title":"Launched","type":"string","nullable":true}},"type":"object","required":["slug","name","chain","category","tier"],"title":"NFTCollection"},"NFTCollectionResponse":{"properties":{"meta":{"$ref":"#/components/schemas/NFTCollection"},"series":{"items":{"$ref":"#/components/schemas/NFTCollectionTimeseriesPoint"},"type":"array","title":"Series"}},"type":"object","required":["meta","series"],"title":"NFTCollectionResponse"},"NFTCollectionTimeseriesPoint":{"properties":{"date":{"type":"string","title":"Date"},"volume_usd":{"title":"Volume Usd","type":"number","nullable":true},"trades":{"title":"Trades","type":"integer","nullable":true}},"type":"object","required":["date"],"title":"NFTCollectionTimeseriesPoint"},"NFTCorrelationEntry":{"properties":{"asset":{"type":"string","title":"Asset"},"correlation":{"title":"Correlation","type":"number","nullable":true},"window_days":{"type":"integer","title":"Window Days"},"overlapping_days":{"type":"integer","title":"Overlapping Days"}},"type":"object","required":["asset","window_days","overlapping_days"],"title":"NFTCorrelationEntry"},"NFTCorrelationsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NFTCorrelationEntry"},"type":"array","title":"Items"},"window_days":{"type":"integer","title":"Window Days"},"method":{"type":"string","title":"Method"},"notes":{"type":"string","title":"Notes"}},"type":"object","required":["items","window_days","method","notes"],"title":"NFTCorrelationsResponse"},"NFTMarketplace":{"properties":{"name":{"type":"string","title":"Name"},"volume_usd_24h":{"type":"number","title":"Volume Usd 24H"},"volume_usd_7d":{"type":"number","title":"Volume Usd 7D"},"trades_24h":{"type":"integer","title":"Trades 24H"},"trades_7d":{"type":"integer","title":"Trades 7D"},"pct_of_total":{"type":"number","title":"Pct Of Total"},"weekly_change":{"type":"number","title":"Weekly Change"}},"type":"object","required":["name","volume_usd_24h","volume_usd_7d","trades_24h","trades_7d","pct_of_total","weekly_change"],"title":"NFTMarketplace"},"NFTOverviewResponse":{"properties":{"total_series":{"items":{"$ref":"#/components/schemas/NFTSeriesPoint"},"type":"array","title":"Total Series"},"by_chain":{"additionalProperties":{"items":{"$ref":"#/components/schemas/NFTSeriesPoint"},"type":"array"},"type":"object","title":"By Chain"},"by_tier":{"additionalProperties":{"items":{"$ref":"#/components/schemas/NFTSeriesPoint"},"type":"array"},"type":"object","title":"By Tier"},"by_category":{"additionalProperties":{"items":{"$ref":"#/components/schemas/NFTSeriesPoint"},"type":"array"},"type":"object","title":"By Category"},"totals":{"$ref":"#/components/schemas/NFTOverviewTotals"},"top_collections":{"items":{"$ref":"#/components/schemas/NFTTopCollection"},"type":"array","title":"Top Collections"},"marketplaces":{"items":{"$ref":"#/components/schemas/NFTMarketplace"},"type":"array","title":"Marketplaces"},"refreshed_at":{"title":"Refreshed At","type":"string","nullable":true},"history_days":{"type":"integer","title":"History Days"}},"type":"object","required":["total_series","by_chain","by_tier","by_category","totals","top_collections","marketplaces","history_days"],"title":"NFTOverviewResponse"},"NFTOverviewTotals":{"properties":{"volume_usd_24h":{"type":"number","title":"Volume Usd 24H"},"volume_usd_7d":{"type":"number","title":"Volume Usd 7D"},"volume_usd_30d":{"type":"number","title":"Volume Usd 30D"},"volume_usd_90d":{"type":"number","title":"Volume Usd 90D"}},"type":"object","required":["volume_usd_24h","volume_usd_7d","volume_usd_30d","volume_usd_90d"],"title":"NFTOverviewTotals"},"NFTSeriesPoint":{"properties":{"date":{"type":"string","title":"Date"},"volume_usd":{"type":"number","title":"Volume Usd"}},"type":"object","required":["date","volume_usd"],"title":"NFTSeriesPoint"},"NFTTopCollection":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"chain":{"type":"string","title":"Chain"},"contract":{"title":"Contract","type":"string","nullable":true},"category":{"type":"string","title":"Category"},"tier":{"type":"string","title":"Tier"},"volume_eth_24h":{"title":"Volume Eth 24H","type":"number","nullable":true},"volume_usd_24h":{"title":"Volume Usd 24H","type":"number","nullable":true},"volume_eth_7d":{"title":"Volume Eth 7D","type":"number","nullable":true},"trades_24h":{"type":"integer","title":"Trades 24H"}},"type":"object","required":["slug","name","chain","category","tier","trades_24h"],"title":"NFTTopCollection"},"NFTVolumePoint":{"properties":{"date":{"type":"string","title":"Date"},"bucket":{"type":"string","title":"Bucket"},"volume_usd":{"type":"number","title":"Volume Usd"}},"type":"object","required":["date","bucket","volume_usd"],"title":"NFTVolumePoint"},"NFTVolumeResponse":{"properties":{"by":{"type":"string","title":"By"},"granularity":{"type":"string","title":"Granularity"},"points":{"items":{"$ref":"#/components/schemas/NFTVolumePoint"},"type":"array","title":"Points"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"}},"type":"object","required":["by","granularity","points","start_date","end_date"],"title":"NFTVolumeResponse"},"OIDivergenceResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"universe_size":{"type":"integer","title":"Universe Size"},"rows":{"items":{"$ref":"#/components/schemas/OIDivergenceRow"},"type":"array","title":"Rows"}},"type":"object","required":["as_of","universe_size","rows"],"title":"OIDivergenceResponse"},"OIDivergenceRow":{"properties":{"coin":{"type":"string","title":"Coin"},"price":{"title":"Price","type":"number","nullable":true},"open_interest_usd":{"title":"Open Interest Usd","type":"number","nullable":true},"price_change_1h_pct":{"title":"Price Change 1H Pct","type":"number","nullable":true},"price_change_4h_pct":{"title":"Price Change 4H Pct","type":"number","nullable":true},"price_change_24h_pct":{"title":"Price Change 24H Pct","type":"number","nullable":true},"oi_change_1h_pct":{"title":"Oi Change 1H Pct","type":"number","nullable":true},"oi_change_4h_pct":{"title":"Oi Change 4H Pct","type":"number","nullable":true},"oi_change_24h_pct":{"title":"Oi Change 24H Pct","type":"number","nullable":true},"divergence_4h":{"title":"Divergence 4H","description":"oi_change_4h_pct - price_change_4h_pct (positive = OI rising faster than price)","type":"number","nullable":true}},"type":"object","required":["coin"],"title":"OIDivergenceRow"},"OnChainHealthResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"score":{"type":"number","title":"Score"},"sentiment":{"type":"string","title":"Sentiment","description":"bullish | leaning_bullish | neutral | leaning_bearish | bearish"},"components":{"items":{"$ref":"#/components/schemas/HealthComponent"},"type":"array","title":"Components"},"weights_version":{"type":"string","title":"Weights Version"}},"type":"object","required":["as_of","score","sentiment","components","weights_version"],"title":"OnChainHealthResponse"},"OpenInterestResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"current_oi":{"type":"number","title":"Current Oi","default":0},"oi_trend_30d_pct":{"type":"number","title":"Oi Trend 30D Pct","default":0},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History","default":[]}},"type":"object","required":["symbol"],"title":"OpenInterestResponse","description":"Open interest data."},"PaymentVerifyRequest":{"properties":{"tx_hash":{"type":"string","maxLength":120,"minLength":10,"title":"Tx Hash"},"network":{"type":"string","pattern":"^(base|ethereum|solana)$","title":"Network"},"plan":{"type":"string","pattern":"^(monthly|monthly_plus|annual|annual_plus)$","title":"Plan"},"intent_id":{"title":"Intent Id","type":"string","nullable":true},"discount_code":{"title":"Discount Code","type":"string","nullable":true}},"type":"object","required":["tx_hash","network","plan"],"title":"PaymentVerifyRequest"},"PaymentVerifyResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"subscription":{"title":"Subscription","additionalProperties":true,"type":"object","nullable":true},"invoice_number":{"title":"Invoice Number","type":"string","nullable":true}},"type":"object","required":["success"],"title":"PaymentVerifyResponse"},"PendingRegime":{"properties":{"anchor":{"type":"string","title":"Anchor"},"regime":{"type":"string","title":"Regime"},"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count","description":"Consecutive raw samples seen so far"},"needed":{"type":"integer","title":"Needed","description":"Consecutive samples required to commit"},"since":{"title":"Since","description":"ISO ts the candidate first appeared","type":"string","nullable":true}},"type":"object","required":["anchor","regime","name","count","needed"],"title":"PendingRegime","description":"A candidate regime accumulating confirmations but not yet committed.\n\nSurfaced so a consumer can see a turn brewing before the committed regime\nactually changes (the anti-churn dwell gate requires ``needed`` consecutive\nsamples before a switch)."},"PlanInfo":{"properties":{"price_usd":{"type":"number","title":"Price Usd"},"price_usdc":{"type":"string","title":"Price Usdc"},"savings":{"title":"Savings","type":"string","nullable":true},"tier":{"title":"Tier","type":"string","nullable":true}},"type":"object","required":["price_usd","price_usdc"],"title":"PlanInfo"},"PlansResponse":{"properties":{"plans":{"additionalProperties":{"$ref":"#/components/schemas/PlanInfo"},"type":"object","title":"Plans"},"networks":{"items":{"type":"string"},"type":"array","title":"Networks"},"token":{"type":"string","title":"Token","default":"USDC"}},"type":"object","required":["plans","networks"],"title":"PlansResponse"},"PolicyEventModel":{"properties":{"event_type":{"type":"string","title":"Event Type"},"title":{"type":"string","title":"Title"},"date":{"type":"string","title":"Date"},"days_until":{"type":"integer","title":"Days Until"},"macro_class":{"title":"Macro Class","type":"string","nullable":true},"bias":{"type":"string","title":"Bias"},"magnitude":{"title":"Magnitude","type":"number","nullable":true},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["event_type","title","date","days_until","bias"],"title":"PolicyEventModel"},"PolicyHeadlinesResponse":{"properties":{"regulatory_pressure":{"type":"number","title":"Regulatory Pressure","default":0.0},"headline_tilt":{"type":"number","title":"Headline Tilt","default":0.0},"headline_count":{"type":"integer","title":"Headline Count","default":0},"top_headlines":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Headlines","default":[]},"sources_ok":{"additionalProperties":true,"type":"object","title":"Sources Ok","default":{}},"as_of":{"type":"string","title":"As Of"}},"type":"object","required":["as_of"],"title":"PolicyHeadlinesResponse","description":"Live classified US-regulatory headlines (Federal Register / SEC / CFTC)."},"PolicyRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"events":{"type":"integer","title":"Events"},"policy_risk_score":{"type":"number","title":"Policy Risk Score"},"policy_tilt":{"type":"number","title":"Policy Tilt"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","events","policy_risk_score","policy_tilt","timestamp"],"title":"PolicyRegimeRefreshResponse"},"PolicyRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PolicyEventModel"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"window_days":{"type":"integer","title":"Window Days"},"policy_risk_score":{"type":"number","title":"Policy Risk Score"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"policy_tilt":{"type":"number","title":"Policy Tilt","description":"-1 restrictive/risk-off … +1 pro-crypto/risk-on"},"tilt_label":{"type":"string","enum":["pro_crypto","restrictive","neutral"],"title":"Tilt Label"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","window_days","policy_risk_score","band","policy_tilt","tilt_label","timestamp"],"title":"PolicyRegimeResponse","description":"Upcoming rate catalysts + market-wide policy risk — the main payload."},"PolicyRegimeScoreResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"policy_risk_score":{"type":"number","title":"Policy Risk Score","description":"0-100; baseline 0 (absence = no policy shock)"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"policy_tilt":{"type":"number","title":"Policy Tilt","default":0.0},"tilt_label":{"type":"string","enum":["pro_crypto","restrictive","neutral"],"title":"Tilt Label","default":"neutral"},"gdelt_subscore":{"type":"number","title":"Gdelt Subscore","default":0.0},"cross_asset_subscore":{"type":"number","title":"Cross Asset Subscore","default":0.0},"rate_subscore":{"type":"number","title":"Rate Subscore","default":0.0},"gdelt_volume_z":{"title":"Gdelt Volume Z","type":"number","nullable":true},"gdelt_tone":{"title":"Gdelt Tone","type":"number","nullable":true},"cross_asset_z":{"additionalProperties":true,"type":"object","title":"Cross Asset Z"},"next_rate_days":{"title":"Next Rate Days","type":"integer","nullable":true},"events_count":{"type":"integer","title":"Events Count","default":0},"partial":{"type":"boolean","title":"Partial","default":false},"inputs_available":{"items":{"type":"string"},"type":"array","title":"Inputs Available","default":[]},"policy_headlines":{"title":"Policy Headlines","description":"Live-only classified US-regulatory headlines; null on backfill","additionalProperties":true,"type":"object","nullable":true}},"type":"object","required":["as_of","policy_risk_score","band"],"title":"PolicyRegimeScoreResponse","description":"Market-wide Policy Risk composite + sub-scores + tilt + live-only sidecars."},"PriceResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"price":{"type":"number","title":"Price"}},"type":"object","required":["symbol","price"],"title":"PriceResponse","description":"Current price."},"QuantCoinDetailResponse":{"properties":{"scope":{"type":"string","title":"Scope"},"symbol":{"title":"Symbol","type":"string","nullable":true},"timestamp":{"type":"string","title":"Timestamp"},"horizon":{"type":"string","title":"Horizon"},"regime":{"$ref":"#/components/schemas/QuantRegimeState","nullable":true},"probabilities":{"title":"Probabilities","additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","nullable":true},"tomorrow":{"title":"Tomorrow","description":"Seeded Monte Carlo tomorrow stats (24h horizon only)","additionalProperties":true,"type":"object","nullable":true},"meta":{"$ref":"#/components/schemas/QuantMeta"},"explain":{"title":"Explain","description":"Feature z-scores, posteriors, hysteresis state, calibration — every adjustment inspectable","additionalProperties":true,"type":"object","nullable":true},"recent_regimes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Recent Regimes","description":"Recent inference rows {timestamp, regime_id, regime_label, confidence} for sparkline rendering (newest last)"}},"type":"object","required":["scope","timestamp","horizon","meta"],"title":"QuantCoinDetailResponse"},"QuantCoinRisk":{"properties":{"symbol":{"type":"string","title":"Symbol"},"regime":{"$ref":"#/components/schemas/QuantCoinRiskRegime","nullable":true},"vol_target_multiplier":{"title":"Vol Target Multiplier","description":"Position-size multiplier from /volatility/regime (0.25–3.0)","type":"number","nullable":true},"vol_pctile_30":{"title":"Vol Pctile 30","description":"30d realized-vol percentile within the trailing 90d","type":"number","nullable":true},"rv_24h":{"title":"Rv 24H","description":"Live intraday realized vol (volatility regime `rv_1h`, annualized %); null on backfilled/illiquid coins","type":"number","nullable":true},"probabilities":{"title":"Probabilities","description":"volatility / liquidation_risk / funding / open_interest buckets, verbatim from /quant/coins/{symbol}.probabilities (null while warming up)","additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","nullable":true},"meta":{"$ref":"#/components/schemas/QuantCoinRiskMeta"}},"type":"object","required":["symbol","meta"],"title":"QuantCoinRisk","description":"One coin's batched risk-model view.\n\nA verbatim batched join of /quant/coins/{symbol} (regime, probability\nbuckets, meta) and /volatility/regime/{symbol} (vol-sizing fields) for the\nsame symbol/horizon — not new modelling."},"QuantCoinRiskMeta":{"properties":{"status":{"type":"string","title":"Status","description":"ok | degraded | warming_up"},"insufficient_history":{"type":"boolean","title":"Insufficient History","default":false},"new_listing":{"type":"boolean","title":"New Listing","default":false}},"type":"object","required":["status"],"title":"QuantCoinRiskMeta"},"QuantCoinRiskRegime":{"properties":{"label":{"type":"string","title":"Label"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["label","confidence"],"title":"QuantCoinRiskRegime","description":"Trimmed regime view for the bulk risk feed (label + confidence only)."},"QuantCoinSummary":{"properties":{"symbol":{"type":"string","title":"Symbol"},"regime":{"$ref":"#/components/schemas/QuantRegimeState","nullable":true},"status":{"type":"string","title":"Status"},"p_direction_up":{"title":"P Direction Up","description":"P(mild_up) + P(strong_up) at the requested horizon","type":"number","nullable":true},"p_direction_down":{"title":"P Direction Down","description":"P(mild_down) + P(strong_down) at the requested horizon. Note up + down + flat = 1 — never treat 1 - p_up as fall odds.","type":"number","nullable":true},"top_transition":{"title":"Top Transition","description":"Most likely regime change: {to, p}","additionalProperties":true,"type":"object","nullable":true},"oi_usd":{"title":"Oi Usd","type":"number","nullable":true},"insufficient_history":{"type":"boolean","title":"Insufficient History","default":false},"new_listing":{"type":"boolean","title":"New Listing","default":false}},"type":"object","required":["symbol","status"],"title":"QuantCoinSummary","description":"Trimmed per-coin entry for the heatmap feed."},"QuantCoinsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/QuantCoinSummary"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"},"horizon":{"type":"string","title":"Horizon"},"model_version":{"type":"string","title":"Model Version"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","universe_size","horizon","model_version","timestamp"],"title":"QuantCoinsResponse"},"QuantCoinsRiskResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"horizon":{"type":"string","title":"Horizon"},"items":{"items":{"$ref":"#/components/schemas/QuantCoinRisk"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"}},"type":"object","required":["as_of","horizon","items","count","universe_size"],"title":"QuantCoinsRiskResponse"},"QuantHistoryEntry":{"properties":{"time":{"type":"integer","title":"Time","description":"Inference timestamp, unix ms UTC"},"timestamp":{"type":"string","title":"Timestamp"},"scope":{"type":"string","title":"Scope"},"horizon":{"type":"string","title":"Horizon"},"regime_id":{"type":"integer","title":"Regime Id"},"regime_label":{"type":"string","title":"Regime Label"},"regime_conf":{"type":"number","title":"Regime Conf"},"candles_in_regime":{"type":"integer","title":"Candles In Regime"},"p_dir_strong_down":{"title":"P Dir Strong Down","type":"number","nullable":true},"p_dir_down":{"title":"P Dir Down","type":"number","nullable":true},"p_dir_flat":{"title":"P Dir Flat","type":"number","nullable":true},"p_dir_up":{"title":"P Dir Up","type":"number","nullable":true},"p_dir_strong_up":{"title":"P Dir Strong Up","type":"number","nullable":true},"p_vol_low":{"title":"P Vol Low","type":"number","nullable":true},"p_vol_mid":{"title":"P Vol Mid","type":"number","nullable":true},"p_vol_high":{"title":"P Vol High","type":"number","nullable":true},"p_liq_low":{"title":"P Liq Low","type":"number","nullable":true},"p_liq_mid":{"title":"P Liq Mid","type":"number","nullable":true},"p_liq_high":{"title":"P Liq High","type":"number","nullable":true},"p_fund_neg":{"title":"P Fund Neg","type":"number","nullable":true},"p_fund_neutral":{"title":"P Fund Neutral","type":"number","nullable":true},"p_fund_pos":{"title":"P Fund Pos","type":"number","nullable":true},"p_breadth_narrow":{"title":"P Breadth Narrow","type":"number","nullable":true},"p_breadth_mixed":{"title":"P Breadth Mixed","type":"number","nullable":true},"p_breadth_broad":{"title":"P Breadth Broad","type":"number","nullable":true},"p_oi_falling":{"title":"P Oi Falling","type":"number","nullable":true},"p_oi_flat":{"title":"P Oi Flat","type":"number","nullable":true},"p_oi_rising":{"title":"P Oi Rising","type":"number","nullable":true},"post_label_0":{"title":"Post Label 0","type":"number","nullable":true},"post_label_1":{"title":"Post Label 1","type":"number","nullable":true},"post_label_2":{"title":"Post Label 2","type":"number","nullable":true},"post_label_3":{"title":"Post Label 3","type":"number","nullable":true},"post_label_4":{"title":"Post Label 4","type":"number","nullable":true},"post_label_5":{"title":"Post Label 5","type":"number","nullable":true},"model_version":{"type":"string","title":"Model Version"},"feature_coverage":{"title":"Feature Coverage","type":"number","nullable":true},"insufficient_history":{"type":"boolean","title":"Insufficient History","default":false},"backfilled":{"type":"boolean","title":"Backfilled","description":"True = retro-computed by the backfill script (1h cadence), False = live point-in-time inference (15-min cadence). The trust contract."}},"type":"object","required":["time","timestamp","scope","horizon","regime_id","regime_label","regime_conf","candles_in_regime","model_version","backfilled"],"title":"QuantHistoryEntry"},"QuantHistoryResponse":{"properties":{"scope":{"type":"string","title":"Scope"},"horizon":{"title":"Horizon","type":"string","nullable":true},"entries":{"items":{"$ref":"#/components/schemas/QuantHistoryEntry"},"type":"array","title":"Entries"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["scope","entries","count"],"title":"QuantHistoryResponse"},"QuantMeta":{"properties":{"model_version":{"type":"string","title":"Model Version"},"model_family":{"type":"string","title":"Model Family"},"last_retrain":{"type":"string","title":"Last Retrain"},"data_staleness_ms":{"title":"Data Staleness Ms","type":"integer","nullable":true},"feature_coverage":{"title":"Feature Coverage","type":"number","nullable":true},"insufficient_history":{"type":"boolean","title":"Insufficient History","default":false},"status":{"type":"string","title":"Status","description":"ok | degraded | warming_up"},"backfilled":{"type":"boolean","title":"Backfilled","default":false}},"type":"object","required":["model_version","model_family","last_retrain","status"],"title":"QuantMeta"},"QuantModelCardResponse":{"properties":{"loaded":{"type":"boolean","title":"Loaded","description":"True when a real (non-stub) model is serving"},"model_version":{"title":"Model Version","type":"string","nullable":true},"model_family":{"title":"Model Family","type":"string","nullable":true},"feature_version":{"title":"Feature Version","type":"string","nullable":true},"sha256":{"title":"Sha256","type":"string","nullable":true},"created_at":{"title":"Created At","type":"string","nullable":true},"last_retrain":{"title":"Last Retrain","type":"string","nullable":true},"labels":{"title":"Labels","items":{"type":"string"},"type":"array","nullable":true},"n_states":{"title":"N States","description":"Raw HMM state counts per scope model (internal; labels are the contract)","additionalProperties":{"type":"integer"},"type":"object","nullable":true},"features":{"title":"Features","additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","nullable":true},"validation":{"title":"Validation","description":"Walk-forward fold metrics + drift baseline, straight from the artifact","additionalProperties":true,"type":"object","nullable":true},"approval":{"title":"Approval","additionalProperties":true,"type":"object","nullable":true},"runtime":{"additionalProperties":true,"type":"object","title":"Runtime","description":"Engine status: universe counts, drift monitor, last inference"}},"type":"object","required":["loaded","runtime"],"title":"QuantModelCardResponse","description":"Transparency surface: what the model is, how it was validated, and live\nruntime status. Available on any valid key — this is the marketing page\nfor the data."},"QuantProbabilityObject":{"properties":{"scope":{"type":"string","title":"Scope"},"symbol":{"title":"Symbol","type":"string","nullable":true},"timestamp":{"type":"string","title":"Timestamp"},"horizon":{"type":"string","title":"Horizon"},"regime":{"$ref":"#/components/schemas/QuantRegimeState","nullable":true},"probabilities":{"title":"Probabilities","additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","nullable":true},"tomorrow":{"title":"Tomorrow","description":"Seeded Monte Carlo tomorrow stats (24h horizon only)","additionalProperties":true,"type":"object","nullable":true},"meta":{"$ref":"#/components/schemas/QuantMeta"},"explain":{"title":"Explain","description":"Feature z-scores, posteriors, hysteresis state, calibration — every adjustment inspectable","additionalProperties":true,"type":"object","nullable":true}},"type":"object","required":["scope","timestamp","horizon","meta"],"title":"QuantProbabilityObject","description":"Full probability object for one scope (market or coin) at one horizon.\n\n`probabilities` maps head name (directional, volatility, liquidation_risk,\nfunding, breadth [market only], open_interest, regime_transitions) to its\nbucket->probability map; every head carries its own `confidence`.\n`regime`/`probabilities` are null while the scope is warming up."},"QuantRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","timestamp"],"title":"QuantRefreshResponse"},"QuantRegimeHistoryResponse":{"properties":{"download_url":{"type":"string","title":"Download Url","description":"Pre-signed URL to the Parquet file"},"expires_in":{"type":"integer","title":"Expires In","description":"Seconds until the download URL expires"},"format":{"type":"string","title":"Format","default":"parquet"},"rows":{"type":"integer","title":"Rows","description":"Number of hourly rows in the file"},"start":{"type":"integer","title":"Start","description":"First row timestamp (ms epoch)"},"end":{"type":"integer","title":"End","description":"Last row timestamp (ms epoch)"},"model_version":{"type":"string","title":"Model Version"},"horizons":{"items":{"type":"string"},"type":"array","title":"Horizons","description":"Distribution horizons, e.g. [now, 4h, 24h]"},"regime_map":{"additionalProperties":{"type":"string"},"type":"object","title":"Regime Map","description":"regime_id -> label"},"columns":{"items":{"type":"string"},"type":"array","title":"Columns","description":"Parquet column order"},"generated_at":{"type":"string","title":"Generated At","description":"When the file was last rebuilt (ISO 8601)"}},"type":"object","required":["download_url","expires_in","rows","start","end","model_version","horizons","regime_map","columns","generated_at"],"title":"QuantRegimeHistoryResponse","description":"Pre-signed download for the full market 6-regime history Parquet.\n\nOne hourly row per bar from 2020 to yesterday (market scope), each carrying\nthe full distribution over the 6 regimes at three horizons — now, 4h and 24h\n(`p_now_*`, `p_4h_*`, `p_24h_*`, keyed by regime id per `regime_map`). The\ndeep history is labelled by the same model that serves live (no hindsight);\nthe `source` column marks the Binance-archive vs live-Hyperliquid seam."},"QuantRegimeInfo":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"stance":{"type":"string","title":"Stance"},"color":{"type":"string","title":"Color"}},"type":"object","required":["id","label","name","description","stance","color"],"title":"QuantRegimeInfo"},"QuantRegimeState":{"properties":{"label":{"type":"string","title":"Label","description":"Regime label, e.g. strong_trend_bull"},"name":{"type":"string","title":"Name","description":"Display name, e.g. Strong Trend (Bull)"},"id":{"type":"integer","maximum":5.0,"minimum":0.0,"title":"Id"},"confidence":{"type":"number","title":"Confidence","description":"Calibrated confidence, degraded by staleness/history"},"confidence_raw":{"type":"number","title":"Confidence Raw","description":"Raw max label posterior, pre-calibration"},"label_raw":{"type":"string","title":"Label Raw","description":"Argmax label before hysteresis (headline label may lag)"},"candles_in_regime":{"type":"integer","title":"Candles In Regime"}},"type":"object","required":["label","name","id","confidence","confidence_raw","label_raw","candles_in_regime"],"title":"QuantRegimeState"},"QuantRegimesResponse":{"properties":{"regimes":{"items":{"$ref":"#/components/schemas/QuantRegimeInfo"},"type":"array","title":"Regimes"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["regimes","count"],"title":"QuantRegimesResponse"},"QuantTimelineEntry":{"properties":{"date":{"type":"string","title":"Date"},"label":{"type":"string","title":"Label"},"id":{"type":"integer","title":"Id"},"confidence":{"title":"Confidence","type":"number","nullable":true}},"type":"object","required":["date","label","id"],"title":"QuantTimelineEntry"},"QuantTimelineResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/QuantTimelineEntry"},"type":"array","title":"Entries"},"count":{"type":"integer","title":"Count"},"model_version":{"type":"string","title":"Model Version"},"note":{"type":"string","title":"Note","description":"Daily majority label from the trained model run over its full training history — same model, no hindsight relabeling"}},"type":"object","required":["entries","count","model_version","note"],"title":"QuantTimelineResponse"},"RangeStateModel":{"properties":{"low":{"title":"Low","type":"number","nullable":true},"high":{"title":"High","type":"number","nullable":true},"width_pct":{"title":"Width Pct","type":"number","nullable":true},"position_pct":{"title":"Position Pct","type":"number","nullable":true},"zone":{"title":"Zone","type":"string","enum":["near_low","mid","near_high"],"nullable":true},"near_high":{"type":"boolean","title":"Near High","default":false},"near_low":{"type":"boolean","title":"Near Low","default":false}},"type":"object","title":"RangeStateModel"},"RegimeAggregate":{"properties":{"deep_book":{"type":"integer","title":"Deep Book","default":0},"oi_price_divergence":{"type":"integer","title":"Oi Price Divergence","default":0},"depth_withdrawal":{"type":"integer","title":"Depth Withdrawal","default":0},"post_cascade_impaired":{"type":"integer","title":"Post Cascade Impaired","default":0},"neutral":{"type":"integer","title":"Neutral","default":0},"pct_deep_book":{"type":"number","title":"Pct Deep Book","default":0.0},"pct_divergent":{"type":"number","title":"Pct Divergent","default":0.0},"pct_withdrawing":{"type":"number","title":"Pct Withdrawing","default":0.0},"pct_impaired":{"type":"number","title":"Pct Impaired","default":0.0},"pct_neutral":{"type":"number","title":"Pct Neutral","default":0.0}},"type":"object","title":"RegimeAggregate"},"RegimeInfo":{"properties":{"id":{"type":"integer","title":"Id","description":"Stable 1-10 ordinal, roughly cycle order"},"regime":{"type":"string","title":"Regime","description":"Machine id — the API contract (e.g. established_bear)"},"anchor":{"type":"string","title":"Anchor","description":"Slug matching the /regimes web page section id"},"name":{"type":"string","title":"Name","description":"Human display name"},"description":{"type":"string","title":"Description"},"typical_duration":{"type":"string","title":"Typical Duration"},"directional_bias":{"type":"string","title":"Directional Bias"}},"type":"object","required":["id","regime","anchor","name","description","typical_duration","directional_bias"],"title":"RegimeInfo","description":"One entry in the 10-state long-horizon regime taxonomy."},"RegimesResponse":{"properties":{"current":{"$ref":"#/components/schemas/CurrentRegime"},"regimes":{"items":{"$ref":"#/components/schemas/RegimeInfo"},"type":"array","title":"Regimes"},"count":{"type":"integer","title":"Count"},"as_of":{"type":"string","title":"As Of"}},"type":"object","required":["current","regimes","count","as_of"],"title":"RegimesResponse","description":"`/api/v1/regimes` — current detection plus the full taxonomy."},"RemoteStablecoinHistoryResponse":{"properties":{"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History"}},"type":"object","required":["history"],"title":"RemoteStablecoinHistoryResponse","description":"Stablecoin history from remote source."},"RsiStateModel":{"properties":{"rsi_14_1d":{"title":"Rsi 14 1D","type":"number","nullable":true},"rsi_14_1h":{"title":"Rsi 14 1H","type":"number","nullable":true},"state_1d":{"type":"string","enum":["overbought","oversold","neutral"],"title":"State 1D","default":"neutral"},"state_1h":{"type":"string","enum":["overbought","oversold","neutral"],"title":"State 1H","default":"neutral"},"extreme_1d":{"type":"boolean","title":"Extreme 1D","default":false},"extreme_1h":{"type":"boolean","title":"Extreme 1H","default":false},"extreme_duration_bars":{"type":"integer","title":"Extreme Duration Bars","default":0}},"type":"object","title":"RsiStateModel"},"SecurityEventModel":{"properties":{"event_type":{"type":"string","enum":["hack","depeg"],"title":"Event Type"},"title":{"type":"string","title":"Title"},"date":{"type":"string","title":"Date"},"days_ago":{"type":"integer","title":"Days Ago"},"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols","default":[]},"bias":{"type":"string","enum":["short","long","neutral","mixed"],"title":"Bias"},"severity":{"title":"Severity","type":"number","nullable":true},"amount_usd":{"title":"Amount Usd","type":"number","nullable":true},"deviation_bps":{"title":"Deviation Bps","type":"number","nullable":true},"classification":{"title":"Classification","type":"string","nullable":true},"technique":{"title":"Technique","type":"string","nullable":true},"target_type":{"title":"Target Type","type":"string","nullable":true},"chains":{"title":"Chains","items":{"type":"string"},"type":"array","nullable":true},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["event_type","title","date","days_ago","bias"],"title":"SecurityEventModel"},"SecurityPendingItem":{"properties":{"event_type":{"type":"string","enum":["hack","depeg"],"title":"Event Type"},"date":{"type":"string","title":"Date"},"days_ago":{"type":"integer","title":"Days Ago"},"bias":{"type":"string","enum":["short","long","neutral","mixed"],"title":"Bias"},"severity":{"title":"Severity","type":"number","nullable":true}},"type":"object","required":["event_type","date","days_ago","bias"],"title":"SecurityPendingItem"},"SecurityRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"events":{"type":"integer","title":"Events"},"security_stress_score":{"type":"number","title":"Security Stress Score"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","events","security_stress_score","timestamp"],"title":"SecurityRegimeRefreshResponse"},"SecurityRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SecurityEventModel"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"window_days":{"type":"integer","title":"Window Days"},"security_stress_score":{"type":"number","title":"Security Stress Score"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","window_days","security_stress_score","band","timestamp"],"title":"SecurityRegimeResponse","description":"Recent security events + market-wide stress — the main /security payload."},"SecurityRegimeScoreResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"security_stress_score":{"type":"number","title":"Security Stress Score","description":"0-100; baseline 0 (absence = all clear)"},"band":{"type":"string","enum":["dormant","quiet","elevated","heavy","critical"],"title":"Band"},"hack_subscore":{"type":"number","title":"Hack Subscore","default":0.0},"flow_subscore":{"type":"number","title":"Flow Subscore","default":0.0},"depeg_subscore":{"type":"number","title":"Depeg Subscore","default":0.0},"hacks_in_window":{"type":"integer","title":"Hacks In Window","default":0},"largest_hack_usd":{"title":"Largest Hack Usd","type":"number","nullable":true},"worst_flow_symbol":{"title":"Worst Flow Symbol","type":"string","nullable":true},"worst_flow_zscore":{"title":"Worst Flow Zscore","type":"number","nullable":true},"events_count":{"type":"integer","title":"Events Count","default":0},"counts":{"additionalProperties":true,"type":"object","title":"Counts"},"partial":{"type":"boolean","title":"Partial","default":false},"inputs_available":{"items":{"type":"string"},"type":"array","title":"Inputs Available","default":[]},"security_headlines":{"title":"Security Headlines","description":"Live-only classified RSS advisories (rekt/SlowMist); null on backfill","additionalProperties":true,"type":"object","nullable":true}},"type":"object","required":["as_of","security_stress_score","band"],"title":"SecurityRegimeScoreResponse","description":"Market-wide Security Stress composite + sub-scores + live-only sidecar."},"SecuritySymbolOverlayResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"hl_symbol":{"title":"Hl Symbol","type":"string","nullable":true},"events":{"items":{"$ref":"#/components/schemas/SecurityPendingItem"},"type":"array","title":"Events","default":[]},"acute_bias":{"type":"string","enum":["short","long","neutral","mixed"],"title":"Acute Bias","default":"neutral"},"max_severity":{"type":"number","title":"Max Severity","default":0.0},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","timestamp"],"title":"SecuritySymbolOverlayResponse","description":"Per-symbol security overlay (Pro+)."},"ShortTermPriceResponse":{"properties":{"symbol":{"type":"string","title":"Symbol","default":"BTC"},"current_price":{"type":"number","title":"Current Price"},"ma_20":{"type":"number","title":"Ma 20"},"pct_from_20ma":{"type":"number","title":"Pct From 20Ma"},"roc_5d_pct":{"type":"number","title":"Roc 5D Pct"},"consecutive_green_4h":{"type":"integer","title":"Consecutive Green 4H"},"consecutive_red_4h":{"type":"integer","title":"Consecutive Red 4H"},"rsi_14":{"title":"Rsi 14","type":"number","nullable":true},"price_change_1h_pct":{"title":"Price Change 1H Pct","type":"number","nullable":true},"price_change_4h_pct":{"title":"Price Change 4H Pct","type":"number","nullable":true},"price_change_24h_pct":{"title":"Price Change 24H Pct","type":"number","nullable":true},"momentum_score":{"type":"integer","title":"Momentum Score"}},"type":"object","required":["current_price","ma_20","pct_from_20ma","roc_5d_pct","consecutive_green_4h","consecutive_red_4h","momentum_score"],"title":"ShortTermPriceResponse","description":"Short-term BTC price momentum metrics."},"SignumHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"color":{"type":"string","enum":["red","grey","green"],"title":"Color"}},"type":"object","required":["date","color"],"title":"SignumHistoryEntry"},"SignumIntradayHistoryEntry":{"properties":{"ts":{"type":"string","title":"Ts"},"color":{"type":"string","enum":["red","grey","green"],"title":"Color"},"adx":{"type":"number","title":"Adx"},"plus_di":{"type":"number","title":"Plus Di"},"minus_di":{"type":"number","title":"Minus Di"}},"type":"object","required":["ts","color","adx","plus_di","minus_di"],"title":"SignumIntradayHistoryEntry"},"SignumRange":{"properties":{"low":{"type":"number","title":"Low"},"high":{"type":"number","title":"High"},"width_pct":{"type":"number","title":"Width Pct"}},"type":"object","required":["low","high","width_pct"],"title":"SignumRange"},"SignumRggDetailResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"color":{"type":"string","enum":["red","grey","green"],"title":"Color"},"days_in_color":{"type":"integer","title":"Days In Color"},"flipped_at":{"type":"string","title":"Flipped At"},"pct_change_since_flip":{"type":"number","title":"Pct Change Since Flip"},"range":{"$ref":"#/components/schemas/SignumRange","nullable":true},"adx":{"type":"number","title":"Adx"},"plus_di":{"type":"number","title":"Plus Di"},"minus_di":{"type":"number","title":"Minus Di"},"price":{"type":"number","title":"Price"},"intraday_color":{"title":"Intraday Color","type":"string","enum":["red","grey","green"],"nullable":true},"intraday_timeframe":{"title":"Intraday Timeframe","type":"string","nullable":true},"intraday_adx":{"title":"Intraday Adx","type":"number","nullable":true},"intraday_plus_di":{"title":"Intraday Plus Di","type":"number","nullable":true},"intraday_minus_di":{"title":"Intraday Minus Di","type":"number","nullable":true},"flip_alert":{"type":"boolean","title":"Flip Alert","default":false},"history":{"items":{"$ref":"#/components/schemas/SignumHistoryEntry"},"type":"array","title":"History"},"intraday_history":{"items":{"$ref":"#/components/schemas/SignumIntradayHistoryEntry"},"type":"array","title":"Intraday History","default":[]},"rule_params":{"$ref":"#/components/schemas/SignumRuleParams"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","source","color","days_in_color","flipped_at","pct_change_since_flip","adx","plus_di","minus_di","price","history","rule_params","timestamp"],"title":"SignumRggDetailResponse"},"SignumRggItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"color":{"type":"string","enum":["red","grey","green"],"title":"Color"},"days_in_color":{"type":"integer","title":"Days In Color"},"flipped_at":{"type":"string","title":"Flipped At"},"pct_change_since_flip":{"type":"number","title":"Pct Change Since Flip"},"range":{"$ref":"#/components/schemas/SignumRange","nullable":true},"adx":{"type":"number","title":"Adx"},"plus_di":{"type":"number","title":"Plus Di"},"minus_di":{"type":"number","title":"Minus Di"},"price":{"type":"number","title":"Price"},"intraday_color":{"title":"Intraday Color","type":"string","enum":["red","grey","green"],"nullable":true},"intraday_timeframe":{"title":"Intraday Timeframe","type":"string","nullable":true},"intraday_adx":{"title":"Intraday Adx","type":"number","nullable":true},"intraday_plus_di":{"title":"Intraday Plus Di","type":"number","nullable":true},"intraday_minus_di":{"title":"Intraday Minus Di","type":"number","nullable":true},"flip_alert":{"type":"boolean","title":"Flip Alert","default":false}},"type":"object","required":["symbol","source","color","days_in_color","flipped_at","pct_change_since_flip","adx","plus_di","minus_di","price"],"title":"SignumRggItem"},"SignumRggRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"count":{"type":"integer","title":"Count"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","count","timestamp"],"title":"SignumRggRefreshResponse"},"SignumRggResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignumRggItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","universe_size","timestamp"],"title":"SignumRggResponse"},"SignumRuleParams":{"properties":{"period":{"type":"integer","title":"Period"},"upper":{"type":"number","title":"Upper"},"lower":{"type":"number","title":"Lower"},"range_lookback":{"type":"integer","title":"Range Lookback"}},"type":"object","required":["period","upper","lower","range_lookback"],"title":"SignumRuleParams"},"SolanaTxRequest":{"properties":{"sender":{"type":"string","title":"Sender"},"plan":{"type":"string","title":"Plan"},"discount_code":{"title":"Discount Code","type":"string","nullable":true}},"type":"object","required":["sender","plan"],"title":"SolanaTxRequest"},"SpikeAlert":{"properties":{"ts":{"type":"integer","title":"Ts"},"chain":{"type":"string","title":"Chain"},"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange"},"direction":{"type":"string","title":"Direction","description":"inflow | outflow"},"amount":{"type":"number","title":"Amount"},"counterparty":{"type":"string","title":"Counterparty"}},"type":"object","required":["ts","chain","symbol","exchange","direction","amount","counterparty"],"title":"SpikeAlert"},"SpikeAlertsResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"count":{"type":"integer","title":"Count"},"min_amount":{"type":"number","title":"Min Amount"},"alerts":{"items":{"$ref":"#/components/schemas/SpikeAlert"},"type":"array","title":"Alerts"}},"type":"object","required":["as_of","count","min_amount","alerts"],"title":"SpikeAlertsResponse"},"StablecoinHistoryResponse":{"properties":{"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"StablecoinHistoryResponse","description":"Stablecoin market cap history timeseries."},"StablecoinReservesResponse":{"properties":{"as_of":{"type":"integer","title":"As Of","description":"Unix timestamp of snapshot"},"by_exchange":{"additionalProperties":{"$ref":"#/components/schemas/ExchangeBreakdown"},"type":"object","title":"By Exchange"},"by_chain":{"additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","title":"By Chain"},"by_symbol":{"additionalProperties":{"type":"number"},"type":"object","title":"By Symbol"},"total_usd":{"type":"number","title":"Total Usd"},"tracked_exchanges":{"items":{"type":"string"},"type":"array","title":"Tracked Exchanges"},"tracked_chains":{"items":{"type":"string"},"type":"array","title":"Tracked Chains"}},"type":"object","required":["as_of","by_exchange","by_chain","by_symbol","total_usd","tracked_exchanges","tracked_chains"],"title":"StablecoinReservesResponse"},"StablecoinResponse":{"properties":{"total_market_cap":{"title":"Total Market Cap","type":"number","nullable":true},"current_mcap_billions":{"title":"Current Mcap Billions","type":"number","nullable":true},"inflow_14d_billions":{"title":"Inflow 14D Billions","type":"number","nullable":true},"change_14d_pct":{"title":"Change 14D Pct","type":"number","nullable":true},"inflow_90d_billions":{"title":"Inflow 90D Billions","type":"number","nullable":true},"change_90d_pct":{"title":"Change 90D Pct","type":"number","nullable":true},"top_stablecoins":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Stablecoins","default":[]}},"type":"object","title":"StablecoinResponse","description":"Stablecoin market data."},"StrategyBasketsResponse":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/BasketGroup"},"type":"array","title":"Groups"},"group_count":{"type":"integer","title":"Group Count"},"basket_count":{"type":"integer","title":"Basket Count"}},"type":"object","required":["groups","group_count","basket_count"],"title":"StrategyBasketsResponse","description":"`/api/v1/trading-strategy-baskets` — the full 50-basket catalogue."},"SubscribeRequest":{"properties":{"plan":{"type":"string","enum":["monthly","monthly_plus","annual","annual_plus"],"title":"Plan"},"discount_code":{"title":"Discount Code","type":"string","nullable":true}},"type":"object","required":["plan"],"title":"SubscribeRequest","description":"Request body for subscribing to a plan."},"SubscriptionStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"plan":{"title":"Plan","type":"string","nullable":true},"expires_at":{"title":"Expires At","type":"string","format":"date-time","nullable":true},"days_remaining":{"title":"Days Remaining","type":"integer","nullable":true}},"type":"object","required":["status"],"title":"SubscriptionStatusResponse"},"TechnicalHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"close":{"type":"number","title":"Close"},"rsi_14":{"title":"Rsi 14","type":"number","nullable":true},"bb_bw_pct":{"title":"Bb Bw Pct","type":"number","nullable":true},"sma_200":{"title":"Sma 200","type":"number","nullable":true},"above_200":{"title":"Above 200","type":"boolean","nullable":true}},"type":"object","required":["date","close"],"title":"TechnicalHistoryEntry"},"TechnicalRegimeDetailResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"ma":{"$ref":"#/components/schemas/MovingAverageStateModel"},"bollinger":{"$ref":"#/components/schemas/BollingerStateModel"},"range_state":{"$ref":"#/components/schemas/RangeStateModel"},"rsi":{"$ref":"#/components/schemas/RsiStateModel"},"history":{"items":{"$ref":"#/components/schemas/TechnicalHistoryEntry"},"type":"array","title":"History","default":[]},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","source","price","ma","bollinger","range_state","rsi","timestamp"],"title":"TechnicalRegimeDetailResponse"},"TechnicalRegimeItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"ma":{"$ref":"#/components/schemas/MovingAverageStateModel"},"bollinger":{"$ref":"#/components/schemas/BollingerStateModel"},"range_state":{"$ref":"#/components/schemas/RangeStateModel"},"rsi":{"$ref":"#/components/schemas/RsiStateModel"}},"type":"object","required":["symbol","source","price","ma","bollinger","range_state","rsi"],"title":"TechnicalRegimeItem"},"TechnicalRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"count":{"type":"integer","title":"Count"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","count","timestamp"],"title":"TechnicalRegimeRefreshResponse"},"TechnicalRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TechnicalRegimeItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","universe_size","timestamp"],"title":"TechnicalRegimeResponse"},"TickerResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"price_change":{"type":"number","title":"Price Change","default":0},"price_change_pct":{"type":"number","title":"Price Change Pct","default":0},"weighted_avg_price":{"type":"number","title":"Weighted Avg Price","default":0},"last_price":{"type":"number","title":"Last Price","default":0},"volume":{"type":"number","title":"Volume","default":0},"quote_volume":{"type":"number","title":"Quote Volume","default":0},"open_price":{"type":"number","title":"Open Price","default":0},"high_price":{"type":"number","title":"High Price","default":0},"low_price":{"type":"number","title":"Low Price","default":0},"trades":{"type":"integer","title":"Trades","default":0}},"type":"object","required":["symbol"],"title":"TickerResponse","description":"24hr ticker stats."},"ValidateCodeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"ValidateCodeRequest"},"ValidateCodeResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"percent_off":{"title":"Percent Off","type":"integer","nullable":true},"prices":{"title":"Prices","additionalProperties":{"type":"number"},"type":"object","nullable":true}},"type":"object","required":["valid"],"title":"ValidateCodeResponse","description":"Public validate response. Uniform {valid: false} for EVERY failure mode\n(unknown/inactive/expired/exhausted) so codes can't be enumerated;\nfor_email is never exposed — binding surfaces only at pay time."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyCode":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"VerifyCode"},"VerifyRequest":{"properties":{"wallet_address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","title":"Wallet Address"},"signature":{"type":"string","title":"Signature"},"nonce":{"type":"string","title":"Nonce"}},"type":"object","required":["wallet_address","signature","nonce"],"title":"VerifyRequest"},"VerifyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"tier":{"type":"string","title":"Tier"},"expires_at":{"title":"Expires At","type":"string","format":"date-time","nullable":true}},"type":"object","required":["api_key","tier"],"title":"VerifyResponse"},"VolMetricsModel":{"properties":{"rv_cc_7":{"title":"Rv Cc 7","type":"number","nullable":true},"rv_cc_30":{"title":"Rv Cc 30","type":"number","nullable":true},"rv_parkinson_30":{"title":"Rv Parkinson 30","type":"number","nullable":true},"rv_gk_7":{"title":"Rv Gk 7","type":"number","nullable":true},"rv_gk_30":{"title":"Rv Gk 30","type":"number","nullable":true},"rv_1h":{"title":"Rv 1H","type":"number","nullable":true},"vol_pctile_30":{"title":"Vol Pctile 30","type":"number","nullable":true},"vol_pctile_7":{"title":"Vol Pctile 7","type":"number","nullable":true},"rv_z_30":{"title":"Rv Z 30","type":"number","nullable":true},"rv_z_7":{"title":"Rv Z 7","type":"number","nullable":true},"term_structure_ratio":{"title":"Term Structure Ratio","type":"number","nullable":true},"vol_target_multiplier":{"title":"Vol Target Multiplier","type":"number","nullable":true},"days_compressed":{"type":"integer","title":"Days Compressed","default":0},"days_shock":{"type":"integer","title":"Days Shock","default":0},"days_in_regime":{"type":"integer","title":"Days In Regime","default":0},"prev_regime":{"title":"Prev Regime","type":"string","enum":["vol_shock","expanding","compressed","mean_reverting","normal"],"nullable":true},"regime_changed":{"type":"boolean","title":"Regime Changed","default":false}},"type":"object","title":"VolMetricsModel"},"VolatilityHistoryEntry":{"properties":{"date":{"type":"string","title":"Date"},"close":{"type":"number","title":"Close"},"rv_cc_30":{"title":"Rv Cc 30","type":"number","nullable":true},"rv_gk_30":{"title":"Rv Gk 30","type":"number","nullable":true}},"type":"object","required":["date","close"],"title":"VolatilityHistoryEntry"},"VolatilityRegimeDetailResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"regime":{"type":"string","enum":["vol_shock","expanding","compressed","mean_reverting","normal"],"title":"Regime"},"is_stable":{"type":"boolean","title":"Is Stable","default":false},"vol":{"$ref":"#/components/schemas/VolMetricsModel"},"history":{"items":{"$ref":"#/components/schemas/VolatilityHistoryEntry"},"type":"array","title":"History","default":[]},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["symbol","source","price","regime","vol","timestamp"],"title":"VolatilityRegimeDetailResponse"},"VolatilityRegimeItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"source":{"type":"string","enum":["binance_spot","hyperliquid_perp"],"title":"Source"},"price":{"type":"number","title":"Price"},"regime":{"type":"string","enum":["vol_shock","expanding","compressed","mean_reverting","normal"],"title":"Regime"},"is_stable":{"type":"boolean","title":"Is Stable","default":false},"vol":{"$ref":"#/components/schemas/VolMetricsModel"}},"type":"object","required":["symbol","source","price","regime","vol"],"title":"VolatilityRegimeItem"},"VolatilityRegimeRefreshResponse":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"count":{"type":"integer","title":"Count"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["refreshed","count","timestamp"],"title":"VolatilityRegimeRefreshResponse"},"VolatilityRegimeResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VolatilityRegimeItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"universe_size":{"type":"integer","title":"Universe Size"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["items","count","universe_size","timestamp"],"title":"VolatilityRegimeResponse"},"VolatilityRegimeScoreResponse":{"properties":{"as_of":{"type":"string","title":"As Of"},"composite_score":{"type":"number","title":"Composite Score"},"sentiment":{"type":"string","title":"Sentiment"},"target_vol":{"type":"number","title":"Target Vol","default":60.0},"gross_exposure_multiplier":{"type":"number","title":"Gross Exposure Multiplier","default":1.0},"median_vol_pctile_30":{"title":"Median Vol Pctile 30","type":"number","nullable":true},"aggregate":{"additionalProperties":true,"type":"object","title":"Aggregate","description":"Regime counts + pct shares across the tracked universe"}},"type":"object","required":["as_of","composite_score","sentiment"],"title":"VolatilityRegimeScoreResponse","description":"Trimmed composite-only companion to /volatility/regime."},"VolumeHistoryResponse":{"properties":{"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History"}},"type":"object","required":["history"],"title":"VolumeHistoryResponse","description":"Volume history from remote source."},"WalletSession":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"WalletSession"},"WatchlistAddDetailedRequest":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/WatchlistAddEntry"},"type":"array","title":"Entries"}},"type":"object","required":["entries"],"title":"WatchlistAddDetailedRequest"},"WatchlistAddEntry":{"properties":{"address":{"type":"string","title":"Address"},"label":{"title":"Label","type":"string","nullable":true},"notes":{"title":"Notes","type":"string","nullable":true}},"type":"object","required":["address"],"title":"WatchlistAddEntry"},"WatchlistRemoveRequest":{"properties":{"addresses":{"items":{"type":"string"},"type":"array","title":"Addresses"}},"type":"object","required":["addresses"],"title":"WatchlistRemoveRequest"},"WebhookCreate":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"secret":{"type":"string","title":"Secret"},"label":{"type":"string","title":"Label"},"enabled":{"type":"boolean","title":"Enabled","default":true},"addresses":{"title":"Addresses","items":{"type":"string"},"type":"array","nullable":true},"events":{"title":"Events","items":{"type":"string"},"type":"array","nullable":true}},"type":"object","required":["url","secret","label"],"title":"WebhookCreate"},"WebhookOut":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"label":{"type":"string","title":"Label"},"enabled":{"type":"boolean","title":"Enabled"},"addresses":{"title":"Addresses","items":{"type":"string"},"type":"array","nullable":true},"events":{"title":"Events","items":{"type":"string"},"type":"array","nullable":true},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","url","label","enabled","created_at"],"title":"WebhookOut"},"WebhookUpdate":{"properties":{"url":{"title":"Url","type":"string","maxLength":2083,"minLength":1,"format":"uri","nullable":true},"secret":{"title":"Secret","type":"string","nullable":true},"enabled":{"title":"Enabled","type":"boolean","nullable":true},"addresses":{"title":"Addresses","items":{"type":"string"},"type":"array","nullable":true},"events":{"title":"Events","items":{"type":"string"},"type":"array","nullable":true},"clear_addresses":{"type":"boolean","title":"Clear Addresses","default":false},"clear_events":{"type":"boolean","title":"Clear Events","default":false}},"type":"object","title":"WebhookUpdate"},"WhaleAccumulationScoreResponse":{"properties":{"signal":{"type":"string","title":"Signal"},"counts":{"title":"Counts","additionalProperties":{"type":"integer"},"type":"object","nullable":true},"tracked_tokens":{"title":"Tracked Tokens","items":{"type":"string"},"type":"array","nullable":true},"symbol":{"title":"Symbol","type":"string","nullable":true},"deltas":{"title":"Deltas","additionalProperties":{"$ref":"#/components/schemas/WhaleDeltaWindow"},"type":"object","nullable":true},"reason":{"title":"Reason","type":"string","nullable":true}},"type":"object","required":["signal"],"title":"WhaleAccumulationScoreResponse"},"WhaleDeltaWindow":{"properties":{"available":{"type":"boolean","title":"Available"},"delta":{"title":"Delta","type":"number","nullable":true},"pct_change":{"title":"Pct Change","type":"number","nullable":true}},"type":"object","required":["available"],"title":"WhaleDeltaWindow"},"WhaleHolderRecord":{"properties":{"address":{"type":"string","title":"Address"},"balance":{"type":"number","title":"Balance"},"share_pct":{"type":"number","title":"Share Pct"}},"type":"object","required":["address","balance","share_pct"],"title":"WhaleHolderRecord"},"WhaleSymbolEntry":{"properties":{"non_cex_holder_count":{"type":"integer","title":"Non Cex Holder Count"},"total_balance":{"type":"number","title":"Total Balance"},"total_share_pct":{"type":"number","title":"Total Share Pct"},"top_5":{"items":{"$ref":"#/components/schemas/WhaleHolderRecord"},"type":"array","title":"Top 5"},"deltas":{"additionalProperties":{"$ref":"#/components/schemas/WhaleDeltaWindow"},"type":"object","title":"Deltas"},"accumulation_signal":{"type":"string","title":"Accumulation Signal"}},"type":"object","required":["non_cex_holder_count","total_balance","total_share_pct","top_5","deltas","accumulation_signal"],"title":"WhaleSymbolEntry"},"WhalesResponse":{"properties":{"as_of":{"type":"integer","title":"As Of"},"tracked_tokens":{"items":{"type":"string"},"type":"array","title":"Tracked Tokens"},"total_non_cex_holders":{"type":"integer","title":"Total Non Cex Holders"},"by_symbol":{"additionalProperties":{"$ref":"#/components/schemas/WhaleSymbolEntry"},"type":"object","title":"By Symbol"}},"type":"object","required":["as_of","tracked_tokens","total_non_cex_holders","by_symbol"],"title":"WhalesResponse"},"WindowFlow":{"properties":{"inflow":{"type":"number","title":"Inflow","default":0.0},"outflow":{"type":"number","title":"Outflow","default":0.0},"net":{"type":"number","title":"Net","default":0.0}},"type":"object","title":"WindowFlow"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"servers":[{"url":"https://cryptodataapi.com"}],"tags":[{"name":"Authentication","description":"API key management — create, inspect, rotate, and revoke `cdk_live_` keys."},{"name":"Health","description":"Service liveness probe (no API key required)."},{"name":"Daily Snapshot","description":"One-call daily market overview — health scores, derivatives, sentiment, macro, cycle indicators, and coin profiles. Rebuilt 20:00 UTC."},{"name":"Coins","description":"Coin profiles, search, top lists, and curated category groups."},{"name":"Market Data","description":"Spot klines, tickers, prices, and exchange info."},{"name":"Market Health","description":"Dual-score (long-term + short-term) market health system with component breakdowns and history."},{"name":"Market Intelligence","description":"ETF flows, liquidations, options, exchange balances, Coinbase premium, BTC cycle indicators, and more."},{"name":"Derivatives","description":"Futures funding rates, open interest, and long/short ratios — Binance plus cross-exchange aggregates."},{"name":"Hyperliquid","description":"Hyperliquid perp market data — prices, funding, open interest, candles, L2 books."},{"name":"Hyperliquid Traders","description":"Top-trader leaderboard, wallet positions/signals/trades, watchlists, and copy signals."},{"name":"Liquidity / Market Depth","description":"L2 depth snapshots, OI/price divergence, and the liquidity regime classifier."},{"name":"Indicators","description":"SIGNUM RGG trend radar and the technical/structural regime screener."},{"name":"Quant","description":"HMM regime engine — market and per-coin probabilities, trader positioning, gamma exposure, whale activity, and history."},{"name":"Regimes","description":"Long-horizon 10-state market-cycle taxonomy and the current detected regime."},{"name":"Volatility Regime","description":"Per-asset realized-vol regime classifier, market-wide stress score, and per-symbol detail."},{"name":"Meme Regime","description":"Meme/speculative lifecycle regimes and the market-wide hype score."},{"name":"Event / Catalyst Regime","description":"Forward catalyst calendar — token unlocks, macro prints, depegs — with event-risk scoring."},{"name":"Security / Black Swan Regime","description":"Hack/exploit event feed and the security regime score."},{"name":"Geopolitical / Policy Shock Regime","description":"Policy and geopolitical shock regime with driving headlines."},{"name":"Sentiment & Macro","description":"Fear & Greed index, macro indicators, and stablecoin supply flows."},{"name":"On-Chain Intelligence","description":"Stablecoin reserves, exchange flows, miner reserves, dormancy/MVRV, and whale accumulation."},{"name":"DEX & Meme Coins","description":"Trending DEX pairs, new pools, and token security checks."},{"name":"NFTs","description":"NFT market overview, volume, collections, and correlations."},{"name":"Strategy Baskets","description":"The trading-strategy meta-basket catalogue."},{"name":"Backtesting","description":"Historical archives — daily snapshots, klines, funding, liquidations, and bulk Parquet downloads."},{"name":"Webhooks","description":"Register and manage webhook subscriptions."},{"name":"Payments","description":"Subscription plans, x402 agent subscribe, and invoices."},{"name":"Wallet Auth","description":"Wallet-signature login — challenge, verify, session."},{"name":"Wallet Payments","description":"On-chain USDC plan upgrades and invoices."}]}