{"openapi":"3.1.0","info":{"title":"SwapHunt x402 API","description":"Pay-per-call crypto market data. No API key — agents pay in USDC via the x402 protocol. See https://x402.org.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["System"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/v1/tools/price":{"get":{"tags":["Price"],"summary":"Get asset price","description":"Get current price for an asset.\n\nReturns price, 24h change, high/low, and volume.\n\n- **asset**: Cryptocurrency symbol (BTC, ETH, SOL, etc.)\n- **currency**: Target currency for price (USD, EUR, etc.)","operationId":"get_price_v1_tools_price_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL, etc.)","examples":["BTC","ETH"],"default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL, etc.)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","description":"Target currency","examples":["USD","EUR"],"default":"USD","title":"Currency"},"description":"Target currency"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Price data returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceResponse"}}}},"422":{"description":"Unsupported asset"},"502":{"description":"External service error (CoinGecko)"}}}},"/v1/tools/price/multi":{"get":{"tags":["Price"],"summary":"Get multiple asset prices","description":"Get prices for multiple assets at once.\n\n- **assets**: Comma-separated list of asset symbols (max 20)\n- **currency**: Target currency for prices","operationId":"get_prices_v1_tools_price_multi_get","parameters":[{"name":"assets","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated asset symbols (max 20)","examples":["BTC,ETH,SOL"],"default":"BTC,ETH","title":"Assets"},"description":"Comma-separated asset symbols (max 20)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","description":"Target currency","examples":["USD"],"default":"USD","title":"Currency"},"description":"Target currency"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Prices returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiPriceResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/price/supported":{"get":{"tags":["Price"],"summary":"Get supported assets","description":"Get list of supported asset symbols.\n\nReturns a list of all cryptocurrency symbols that can be queried.","operationId":"get_supported_assets_v1_tools_price_supported_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response Get Supported Assets V1 Tools Price Supported Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/fear-greed":{"get":{"tags":["Market"],"summary":"Get Fear & Greed Index","description":"Get current Crypto Fear & Greed Index.\n\nThe index ranges from 0-100:\n- **0-25**: Extreme Fear (buying opportunity?)\n- **26-45**: Fear\n- **46-55**: Neutral\n- **56-75**: Greed\n- **76-100**: Extreme Greed (correction incoming?)\n\nUpdated daily. Data provided by Alternative.me.\n\n**Attribution required**: When displaying this data, you must include\nthe attribution text from the response.","operationId":"get_fear_greed_v1_market_fear_greed_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Fear & Greed Index returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FearGreedResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/fear-greed/compare":{"get":{"tags":["Market"],"summary":"Get Fear & Greed with historical comparison","description":"Get current Fear & Greed Index with historical comparisons.\n\nReturns current value plus comparisons to:\n- **Yesterday** (1 day ago)\n- **Week ago** (7 days ago)\n- **Month ago** (30 days ago)\n\nAlso includes change indicators (current - historical).\n\nData is stored in database and updated daily at 00:05 UTC.","operationId":"get_fear_greed_compare_v1_market_fear_greed_compare_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Fear & Greed with comparisons returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FearGreedWithComparisonResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/fear-greed/history":{"get":{"tags":["Market"],"summary":"Get Fear & Greed history","description":"Get historical Fear & Greed Index values.\n\nReturns daily values for the specified date range.\nData available from February 2018.\n\n**Max 365 days per request** - use multiple requests for longer periods.\n\nUse either:\n- `days` param for last N days\n- `start_date`/`end_date` for specific range","operationId":"get_fear_greed_history_v1_market_fear_greed_history_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Number of days of history (1-365, max 365)","default":30,"title":"Days"},"description":"Number of days of history (1-365, max 365)"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date (YYYY-MM-DD). Overrides 'days' param. Max 365 days range.","title":"Start Date"},"description":"Start date (YYYY-MM-DD). Overrides 'days' param. Max 365 days range."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (YYYY-MM-DD). Defaults to today.","title":"End Date"},"description":"End date (YYYY-MM-DD). Defaults to today."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Fear & Greed history returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FearGreedHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/dominance":{"get":{"tags":["Market"],"summary":"Get BTC/ETH dominance","description":"Get BTC and ETH market dominance.\n\nDominance shows what percentage of total crypto market cap\nis held by BTC/ETH. Useful for:\n- **High BTC dominance**: Risk-off, altcoins underperforming\n- **Low BTC dominance**: Alt season, higher risk appetite\n\nUpdated every 5 minutes.","operationId":"get_dominance_v1_market_dominance_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Dominance data returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DominanceResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/global":{"get":{"tags":["Market"],"summary":"Get global market data","description":"Get global crypto market overview.\n\nReturns:\n- Total market cap\n- 24h trading volume\n- BTC/ETH dominance\n- Active cryptocurrencies and markets\n\nUpdated every 5 minutes.","operationId":"get_global_market_v1_market_global_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Global market data returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalMarketResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/halving":{"get":{"tags":["Market"],"summary":"Get halving countdown","description":"Get halving countdown for BTC or LTC.\n\nHalvings reduce the block reward by 50%:\n- **BTC**: Every 210,000 blocks (~4 years), ~10 min block time\n- **LTC**: Every 840,000 blocks (~4 years), ~2.5 min block time\n\n**BTC halving history:**\n- Halving 1 (2012): 50 → 25 BTC\n- Halving 2 (2016): 25 → 12.5 BTC\n- Halving 3 (2020): 12.5 → 6.25 BTC\n- Halving 4 (2024): 6.25 → 3.125 BTC\n- Halving 5 (~2028): 3.125 → 1.5625 BTC\n\n**LTC halving history:**\n- Halving 1 (2015): 50 → 25 LTC\n- Halving 2 (2019): 25 → 12.5 LTC\n- Halving 3 (2023): 12.5 → 6.25 LTC\n- Halving 4 (~2027): 6.25 → 3.125 LTC","operationId":"get_halving_v1_market_halving_get","parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","description":"Coin (BTC or LTC)","default":"BTC","title":"Coin"},"description":"Coin (BTC or LTC)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Halving countdown returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HalvingResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/alt-season":{"get":{"tags":["Market"],"summary":"Is it alt season?","description":"Detect if we're in alt season.\n\nCompares top 10 altcoin performance vs BTC over the specified period.\n\n**Alt season criteria:**\n- >75% of alts outperforming BTC = **strong** alt season\n- >60% of alts outperforming BTC = **moderate** alt season\n- <50% = **BTC season** (stick with BTC)\n\n**Also considers:**\n- BTC dominance level (high = favors BTC, low = favors alts)\n\n**Response includes:**\n- `is_alt_season`: Boolean\n- `season_strength`: none/weak/moderate/strong\n- `btc_dominance_pct`: Current BTC dominance\n- `top_performers`: Best performing alts vs BTC\n- `verdict`: Human readable summary\n\n**Cached 15 minutes.**","operationId":"get_alt_season_v1_market_alt_season_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Lookback period in days (1-30)","default":7,"title":"Days"},"description":"Lookback period in days (1-30)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Alt season analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Alt Season V1 Market Alt Season Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/coin-strength":{"get":{"tags":["Market"],"summary":"Coin strength vs BTC","description":"Get relative strength of a coin vs BTC.\n\nShows if a coin is outperforming or underperforming Bitcoin.\n\n**Strength levels:**\n- `very_strong`: >10% ahead of BTC\n- `strong`: 3-10% ahead\n- `neutral`: Within 3%\n- `weak`: 3-10% behind\n- `very_weak`: >10% behind\n\n**Use cases:**\n- \"Should I hold this alt or switch to BTC?\"\n- \"Is this coin showing relative strength?\"\n- \"Which alts are leading the market?\"\n\n**Cached 5 minutes.**","operationId":"get_coin_strength_v1_market_coin_strength_get","parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","description":"Coin symbol","default":"ETH","title":"Coin"},"description":"Coin symbol"},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Period (24h, 7d, 30d)","default":"24h","title":"Period"},"description":"Period (24h, 7d, 30d)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Strength analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Coin Strength V1 Market Coin Strength Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/momentum-rank":{"get":{"tags":["Market"],"summary":"Top momentum coins","description":"Get top momentum coins ranked by performance.\n\nTracks 20 major coins and ranks by return over the period.\n\n**Use cases:**\n- \"What's hot right now?\"\n- \"Which coins have strongest momentum?\"\n- \"What should I avoid (bottom performers)?\"\n\n**Response includes:**\n- `top_performers`: Best performing coins\n- `bottom_performers`: Worst performing coins\n- `all_ranked`: Full ranking\n\n**Cached 5 minutes.**","operationId":"get_momentum_rank_v1_market_momentum_rank_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Period (24h, 7d, 30d)","default":"24h","title":"Period"},"description":"Period (24h, 7d, 30d)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"Number of coins to return","default":10,"title":"Limit"},"description":"Number of coins to return"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Momentum ranking returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Momentum Rank V1 Market Momentum Rank Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/correlation":{"get":{"tags":["Market"],"summary":"Coin correlation with BTC","description":"Calculate correlation between a coin and BTC.\n\nPearson correlation coefficient (-1 to +1):\n- **+1**: Perfect positive correlation (moves identical)\n- **0**: No correlation (independent)\n- **-1**: Perfect negative correlation (moves opposite)\n\n**Correlation levels:**\n- `very_high` (>0.8): Almost identical to BTC\n- `high` (0.6-0.8): Generally follows BTC\n- `moderate` (0.3-0.6): Some independence\n- `low` (0-0.3): Fairly independent\n- `negative` (<0): Moves opposite (rare)\n\n**Use cases:**\n- \"Will this coin crash if BTC dumps?\"\n- \"Is this a good diversifier?\"\n- \"How coupled is this to BTC?\"\n\n**Cached 15 minutes.**","operationId":"get_correlation_v1_market_correlation_get","parameters":[{"name":"coin","in":"query","required":false,"schema":{"type":"string","description":"Coin to analyze","default":"ETH","title":"Coin"},"description":"Coin to analyze"},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Period (7d, 30d)","default":"7d","title":"Period"},"description":"Period (7d, 30d)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Correlation analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Correlation V1 Market Correlation Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sentiment/news":{"get":{"tags":["Sentiment"],"summary":"Get scored crypto news","description":"Get news articles scored for crypto trading impact.\n\nArticles are fetched from Finnhub and scored 1-10 by qwen3:8b LLM:\n\n- **1-3**: Irrelevant (memes, social, unrelated)\n- **4-6**: Moderate impact (sentiment, minor moves)\n- **7-10**: High/critical (institutional, whale, regulatory)\n\n**Categories:**\n- `crypto`: Direct crypto news\n- `general`: General finance/markets\n- `merger`: M&A news\n\nUpdated every 30 minutes.","operationId":"get_news_v1_sentiment_news_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category (crypto, general, merger)","title":"Category"},"description":"Filter by category (crypto, general, merger)"},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":10,"minimum":1},{"type":"null"}],"description":"Minimum crypto impact score (1-10)","title":"Min Score"},"description":"Minimum crypto impact score (1-10)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max articles to return","default":50,"title":"Limit"},"description":"Max articles to return"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Hours of news to look back (max 168 = 7 days)","default":24,"title":"Hours"},"description":"Hours of news to look back (max 168 = 7 days)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"News articles returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsResponse"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sentiment/summary":{"get":{"tags":["Sentiment"],"summary":"Get aggregated news sentiment","description":"Get aggregated market sentiment from scored news.\n\nCalculates average crypto trading impact across recent news.\nDefaults to crypto news only for most relevant signal.\n\n**Sentiment levels:**\n- **bearish** (< 2): Strong negative signals\n- **slightly_bearish** (2-4): Mild negative\n- **neutral** (4-5): Mixed signals\n- **slightly_bullish** (5-7): Mild positive\n- **bullish** (>= 7): Strong positive signals\n\nAlso includes top high-impact (score >= 7) and low-impact (score <= 3) articles.\n\nUpdated every 30 minutes.","operationId":"get_sentiment_summary_v1_sentiment_summary_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","description":"Filter by category (crypto, general, merger, or 'all' for everything)","default":"crypto","title":"Category"},"description":"Filter by category (crypto, general, merger, or 'all' for everything)"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Hours of news to analyze (max 168 = 7 days)","default":24,"title":"Hours"},"description":"Hours of news to analyze (max 168 = 7 days)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Sentiment summary returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentimentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/current":{"get":{"tags":["Regime"],"summary":"Get current market regime","description":"Get current market regime based on BTC price action.\n\nRegime is calculated using BTC 12h candles with EMA20:\n- **BULLISH**: Price > EMA20 and EMA slope > 0.5%\n- **BEARISH**: Price < EMA20 and EMA slope < -0.5%\n- **NEUTRAL**: Otherwise (ranging/uncertain)\n\nRegime updates every 12 hours when a new candle closes (00:00 and 12:00 UTC).\nPrice is updated in real-time.\n\n**Note:** Market regime is based on Bitcoin as it represents overall crypto\nmarket direction. Individual altcoins follow BTC's regime ~80% of the time.","operationId":"get_regime_v1_regime_current_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Market regime returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeResponse"}}}},"503":{"description":"Regime worker not running"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/chop-detection":{"get":{"tags":["Regime"],"summary":"Is market choppy or trending?","description":"Detect if market is in chop/range (no clear trend).\n\nUses ADX (Average Directional Index) to measure trend strength.\n\n**ADX interpretation:**\n- **< 20**: Choppy, no trend. Avoid trend-following.\n- **20-25**: Trend emerging. Be cautious.\n- **25-50**: Strong trend. Good for trend strategies.\n- **> 50**: Very strong trend (rare).\n\n**Use cases:**\n- Should I use range or trend strategy?\n- Is this breakout likely to follow through?\n- Should I tighten stops in chop?","operationId":"chop_detection_v1_regime_chop_detection_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Asset"},"description":"Asset symbol"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","description":"Timeframe (1h, 4h, 1d)","default":"4h","title":"Timeframe"},"description":"Timeframe (1h, 4h, 1d)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Chop analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chop Detection V1 Regime Chop Detection Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vol/realized":{"get":{"tags":["Volatility"],"summary":"Get realized volatility","description":"Get realized volatility for an asset.\n\nReturns daily and annualized volatility based on historical price movements.\n\n**Volatility levels (daily):**\n- **low** (< 1.5%): Quiet market\n- **normal** (1.5-3%): Typical conditions\n- **high** (3-5%): Elevated volatility\n- **extreme** (> 5%): Very volatile, increased risk\n\nAlso includes 24h range metrics (high/low vs open).\n\nUpdated every 5 minutes.","operationId":"get_volatility_v1_vol_realized_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Period for calculation (7d, 14d, 30d)","default":"7d","title":"Period"},"description":"Period for calculation (7d, 14d, 30d)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Volatility data returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolatilityResponse"}}}},"422":{"description":"Invalid asset or period"},"502":{"description":"External service error"}}}},"/v1/vol/silence":{"get":{"tags":["Volatility"],"summary":"Get market silence score","description":"Get market silence score for an asset.\n\nSilence indicates low market activity - a signal to potentially reduce trading.\nScore is calculated from:\n\n- **Volume ratio**: Today's volume vs average (50% weight)\n- **Volatility**: Standard deviation of daily returns (30% weight)\n- **Price change**: Absolute 24h price movement (20% weight)\n\n**Silence levels:**\n- **low** (0-0.3): Normal activity, trading OK\n- **medium** (0.3-0.6): Be cautious, reduced liquidity\n- **high** (0.6-1.0): Very quiet, consider reducing activity\n\nUpdated every 5 minutes.","operationId":"get_silence_v1_vol_silence_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"lookback","in":"query","required":false,"schema":{"type":"string","description":"Lookback period for comparison (7d, 14d, 30d)","default":"7d","title":"Lookback"},"description":"Lookback period for comparison (7d, 14d, 30d)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Silence score returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SilenceResponse"}}}},"422":{"description":"Invalid asset or lookback"},"502":{"description":"External service error"}}}},"/v1/vol/compression-alert":{"get":{"tags":["Volatility"],"summary":"Detect volatility squeeze","description":"Detect volatility compression (Bollinger squeeze).\n\nLow volatility often precedes big moves. This endpoint identifies\nwhen Bollinger Bands are unusually tight compared to recent history.\n\n**Squeeze levels:**\n- **extreme** (< 10th percentile): Big move imminent\n- **strong** (10-25th percentile): Expansion expected soon\n- **moderate** (25-40th percentile): Watch for breakout\n- **none** (> 40th percentile): Normal volatility\n\n**Use cases:**\n- Should I prepare for a breakout?\n- Is this a good time to buy options/straddles?\n- Should I widen stops for expected expansion?","operationId":"compression_alert_v1_vol_compression_alert_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Asset"},"description":"Asset symbol"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","description":"Timeframe (1h, 4h, 1d)","default":"4h","title":"Timeframe"},"description":"Timeframe (1h, 4h, 1d)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Compression analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Compression Alert V1 Vol Compression Alert Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vol/expected-move":{"get":{"tags":["Volatility"],"summary":"Expected price range","description":"Calculate expected price move based on ATR.\n\nShows probable price range for the given period.\n\n**Probability ranges:**\n- **68%**: 1 ATR - most moves stay within this\n- **95%**: 2 ATR - almost all moves stay within this\n\n**Use cases:**\n- Where should I set take-profit?\n- Is my stop-loss realistic for this timeframe?\n- What's a reasonable price target?","operationId":"expected_move_v1_vol_expected_move_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Asset"},"description":"Asset symbol"},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Period (4h, 1d, 1w)","default":"1d","title":"Period"},"description":"Period (4h, 1d, 1w)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Expected move returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Expected Move V1 Vol Expected Move Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sanity/is-this-a-dip":{"get":{"tags":["Sanity Check"],"summary":"Is this actually a dip?","description":"Check if the current price drop is actually significant.\n\nCompares the drop from recent high to ATR (Average True Range).\nA 3% drop when ATR is 7% is noise, not a dip.\n\n**Response includes:**\n- `is_dip`: Boolean - is this a real dip?\n- `drop_pct`: How much price dropped from recent high\n- `atr_pct`: Normal daily volatility (ATR as % of price)\n- `drop_vs_atr`: Drop divided by ATR (>1.0 = significant)\n- `verdict`: Human readable verdict","operationId":"is_this_a_dip_v1_sanity_is_this_a_dip_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Symbol"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Dip analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Is This A Dip V1 Sanity Is This A Dip Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sanity/is-this-a-breakout":{"get":{"tags":["Sanity Check"],"summary":"Is this breakout confirmed?","description":"Check if a breakout is confirmed or likely a fakeout.\n\nAnalyzes:\n- Volume confirmation (is volume above average?)\n- Time above/below level (how long has it held?)\n- Historical fake breakout rate at this level\n\n**Response includes:**\n- `is_confirmed`: Boolean - is breakout confirmed?\n- `volume_ratio`: Current volume vs 20-period average\n- `time_beyond_level`: Minutes since breaking the level\n- `fake_probability`: Estimated fakeout probability\n- `verdict`: Human readable verdict","operationId":"is_this_a_breakout_v1_sanity_is_this_a_breakout_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Symbol"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"level","in":"query","required":true,"schema":{"type":"number","description":"Price level to check breakout from","title":"Level"},"description":"Price level to check breakout from"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","description":"Breakout direction (up/down)","default":"up","title":"Direction"},"description":"Breakout direction (up/down)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Breakout analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Is This A Breakout V1 Sanity Is This A Breakout Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sanity/is-this-support":{"get":{"tags":["Sanity Check"],"summary":"Is this actually support?","description":"Check if a price level is actually valid support.\n\n\"It touched this level once 3 months ago\" is NOT support.\n\n**Criteria for valid support:**\n- Multiple touches (at least 2-3)\n- Recent touches (within last 30 days)\n- Clean bounces (not just wicks through)\n\n**Response includes:**\n- `is_valid_support`: Boolean\n- `touch_count`: Number of times price touched this level\n- `days_since_last_touch`: Recency of last touch\n- `bounce_quality`: How clean were the bounces\n- `verdict`: Human readable verdict","operationId":"is_this_support_v1_sanity_is_this_support_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Symbol"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"level","in":"query","required":true,"schema":{"type":"number","description":"Price level to check","title":"Level"},"description":"Price level to check"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Support analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Is This Support V1 Sanity Is This Support Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sanity/is-this-oversold":{"get":{"tags":["Sanity Check"],"summary":"Is this actually oversold?","description":"Check if asset is actually oversold across multiple timeframes.\n\nRSI 29 on 1-minute chart means nothing. This checks higher timeframes.\n\n**Timeframes analyzed:**\n- 1h (20% weight)\n- 4h (30% weight)\n- 1d (50% weight)\n\n**Response includes:**\n- `is_oversold`: Boolean - oversold on higher timeframes?\n- `rsi_1h`, `rsi_4h`, `rsi_1d`: RSI per timeframe\n- `weighted_rsi`: Combined weighted RSI\n- `verdict`: Human readable verdict","operationId":"is_this_oversold_v1_sanity_is_this_oversold_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Symbol"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Oversold analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Is This Oversold V1 Sanity Is This Oversold Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fomo/how-late-am-i":{"get":{"tags":["Anti-FOMO"],"summary":"How late am I to this move?","description":"Check how far the current move has already gone.\n\nMeasures distance from recent swing low in both % and ATR multiples.\n\n**Response includes:**\n- `move_pct`: How much price has moved from swing low\n- `move_in_atr`: Move size as ATR multiple\n- `historical_avg_move`: Average move size historically\n- `move_percentile`: Where this move ranks vs history\n- `verdict`: How late you are","operationId":"how_late_am_i_v1_fomo_how_late_am_i_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Symbol"},"description":"Asset symbol"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Lateness analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response How Late Am I V1 Fomo How Late Am I Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fomo/pump-age":{"get":{"tags":["Anti-FOMO"],"summary":"How old is this pump?","description":"Detect if there's an active pump and how long it's been running.\n\nCompares current pump duration to historical average pump length.\n\n**Response includes:**\n- `is_pumping`: Is there an active pump?\n- `pump_start`: When the pump started\n- `pump_duration_mins`: How long it's been running\n- `avg_pump_duration`: Historical average pump length\n- `pump_pct`: Size of the pump so far\n- `verdict`: Time assessment","operationId":"pump_age_v1_fomo_pump_age_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Symbol"},"description":"Asset symbol"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Pump age analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pump Age V1 Fomo Pump Age Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fomo/already-extended":{"get":{"tags":["Anti-FOMO"],"summary":"Is price already extended?","description":"Check if price is extended from moving averages.\n\nAnalyzes distance from key MAs and Bollinger Band position.\n\n**Response includes:**\n- `is_extended`: Boolean - is price overextended?\n- `distance_from_ma20`: % distance from 20 MA\n- `distance_from_ma50`: % distance from 50 MA\n- `bb_position`: Position within Bollinger Bands (0-1)\n- `z_score`: Standard deviations from mean\n- `verdict`: Extension assessment","operationId":"already_extended_v1_fomo_already_extended_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Symbol"},"description":"Asset symbol"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Extension analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Already Extended V1 Fomo Already Extended Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fomo/green-candles-streak":{"get":{"tags":["Anti-FOMO"],"summary":"How many green candles in a row?","description":"Count consecutive green candles and historical outcomes.\n\nShows what historically happens after similar streaks.\n\n**Response includes:**\n- `streak`: Current green candle streak\n- `streak_gain_pct`: Total gain during streak\n- `historical_avg_streak`: Average streak length\n- `historical_next_candle`: What usually follows (% green/red)\n- `verdict`: Streak assessment","operationId":"green_candles_streak_v1_fomo_green_candles_streak_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol","default":"BTC","title":"Symbol"},"description":"Asset symbol"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","description":"Candle interval (1h, 4h, 1d)","default":"4h","title":"Interval"},"description":"Candle interval (1h, 4h, 1d)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Streak analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Green Candles Streak V1 Fomo Green Candles Streak Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/context/weekend-liquidity":{"get":{"tags":["Context"],"summary":"Is it weekend/low liquidity time?","description":"Check if it's a low liquidity period (weekend, holidays, off-hours).\n\nCrypto trades 24/7 but liquidity varies significantly:\n- **Weekend**: Lower volume, wider spreads, more manipulation\n- **Sunday night**: Worst liquidity of the week\n- **Asian session**: Often quiet for Western traders\n- **US market hours**: Highest liquidity\n\n**Response includes:**\n- `is_weekend`: Boolean\n- `is_low_liquidity`: Boolean - overall assessment\n- `session`: Current trading session (asia/london/ny/off)\n- `day_of_week`: Current day\n- `liquidity_score`: 0-100 (higher = better)\n- `verdict`: Human readable assessment","operationId":"weekend_liquidity_v1_context_weekend_liquidity_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Liquidity context returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Weekend Liquidity V1 Context Weekend Liquidity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/context/session":{"get":{"tags":["Context"],"summary":"What trading session is it?","description":"Get current trading session and historical volatility per session.\n\n**Sessions (UTC):**\n- **Asian**: 00:00 - 08:00 UTC (Tokyo/Sydney)\n- **London**: 08:00 - 16:00 UTC\n- **New York**: 13:00 - 21:00 UTC\n- **Off-hours**: 21:00 - 00:00 UTC\n\nNote: London/NY overlap (13:00-16:00 UTC) is highest volume.\n\n**Response includes:**\n- `current_session`: Which session we're in\n- `session_start`: When current session started\n- `session_end`: When current session ends\n- `next_session`: What's next\n- `historical_volatility`: Avg volatility per session","operationId":"trading_session_v1_context_session_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Session info returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trading Session V1 Context Session Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cycle/weekly-pattern":{"get":{"tags":["Timing & Cycles"],"summary":"Historical performance by day of week","description":"Get historical performance by day of week.\n\nShows which days historically perform best/worst.\n\n**Response includes:**\n- `pattern`: Stats per weekday (avg return, win rate, std dev)\n- `best_day`: Historically best performing day\n- `worst_day`: Historically worst performing day\n\n**Note:** Based on daily close-to-close returns. Cached 24h.\n\n**Future:** Will move to database for longer history.","operationId":"weekly_pattern_v1_cycle_weekly_pattern_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":30,"description":"Days of history (30-1000)","default":365,"title":"Days"},"description":"Days of history (30-1000)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Weekly pattern returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Weekly Pattern V1 Cycle Weekly Pattern Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cycle/monthly-pattern":{"get":{"tags":["Timing & Cycles"],"summary":"Historical performance by month","description":"Get historical performance by month.\n\nShows which months historically perform best/worst (e.g., \"Uptober\").\n\n**Response includes:**\n- `pattern`: Stats per month (avg daily return, total return, win rate)\n- `best_month`: Historically best performing month\n- `worst_month`: Historically worst performing month\n\n**Note:** Limited to ~2.7 years by Binance API. Cached 24h.\n\n**Future:** Will move to database for longer history.","operationId":"monthly_pattern_v1_cycle_monthly_pattern_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"years","in":"query","required":false,"schema":{"type":"integer","maximum":3,"minimum":1,"description":"Years of history (1-3, limited by API)","default":2,"title":"Years"},"description":"Years of history (1-3, limited by API)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Monthly pattern returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Monthly Pattern V1 Cycle Monthly Pattern Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cycle/daily-range-used":{"get":{"tags":["Timing & Cycles"],"summary":"How much of daily range is used","description":"Check how much of expected daily range has been used.\n\nCompares today's high-low range to ATR(14).\n\n**Use cases:**\n- \"Is there room for more movement today?\"\n- \"Is this an unusually volatile day?\"\n- \"Should I expect the move to continue?\"\n\n**Range status:**\n- `low` (< 50%): Early/quiet, plenty of room\n- `moderate` (50-80%): Still room for movement\n- `high` (80-100%): Most range used, may slow down\n- `extended` (> 100%): Unusual day, above average volatility\n\n**Note:** Cached 5 minutes.","operationId":"daily_range_used_v1_cycle_daily_range_used_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Range analysis returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Daily Range Used V1 Cycle Daily Range Used Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cycle/hourly-pattern":{"get":{"tags":["Timing & Cycles"],"summary":"Historical volatility by hour","description":"Get historical volatility pattern by hour of day.\n\nShows which hours are typically most/least volatile.\n\n**Use cases:**\n- \"When should I place trades for best fills?\"\n- \"When is volatility highest for scalping?\"\n- \"Which session should I focus on?\"\n\n**Response includes:**\n- `pattern`: Stats per hour (avg range, volume, volatility)\n- `most_volatile_hours_utc`: Top 3 volatile hours\n- `least_volatile_hours_utc`: Bottom 3 quiet hours\n- `sessions`: Asia/London/NY session comparison\n\n**Note:** Cached 24h. Hours are in UTC.","operationId":"hourly_pattern_v1_cycle_hourly_pattern_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"type":"string","description":"Asset symbol (BTC, ETH, SOL)","default":"BTC","title":"Asset"},"description":"Asset symbol (BTC, ETH, SOL)"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":41,"minimum":7,"description":"Days of history (7-41, limited by API)","default":30,"title":"Days"},"description":"Days of history (7-41, limited by API)"},{"name":"quote","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (USDT, USDC, EUR)","default":"USDT","title":"Quote"},"description":"Quote currency (USDT, USDC, EUR)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Hourly pattern returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hourly Pattern V1 Cycle Hourly Pattern Get"}}}},"502":{"description":"External service error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/derivatives/funding-rates":{"get":{"tags":["Derivatives"],"summary":"Get funding rates","description":"Get current funding rates for specified symbols.\n\nFunding rates are paid every 8 hours on Binance futures.\nA positive rate means longs pay shorts; negative means shorts pay longs.\n\n- **Extreme negative** (< -0.1%): Heavy short bias, potential short squeeze\n- **Negative** (-0.1% to -0.01%): Bearish bias\n- **Neutral** (-0.01% to 0.01%): Balanced market\n- **Positive** (0.01% to 0.05%): Bullish bias\n- **Elevated** (0.05% to 0.1%): Overheated longs\n- **Extreme positive** (> 0.1%): Extremely overheated, correction risk\n\nAlso includes 7d and 30d historical averages when available.\n\n**Updated every ~2 minutes via WebSocket.**","operationId":"get_funding_rates_v1_derivatives_funding_rates_get","parameters":[{"name":"symbols","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated symbols (max 20). Appends USDT if missing.","examples":["BTC,ETH,SOL","BTCUSDT,ETHUSDT"],"default":"BTC,ETH,SOL","title":"Symbols"},"description":"Comma-separated symbols (max 20). Appends USDT if missing."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Funding rates returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingRatesResponse"}}}},"503":{"description":"Funding data unavailable (worker not running)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/derivatives/funding-rates/top":{"get":{"tags":["Derivatives"],"summary":"Get top funding rates","description":"Get top funding rates across all tracked futures pairs.\n\nUseful for finding:\n- **Highest rates**: Overheated pairs (correction risk, short opportunities)\n- **Lowest rates**: Undervalued pairs (potential long setups, squeeze candidates)\n\n**Updated every ~2 minutes via WebSocket.**","operationId":"get_top_funding_v1_derivatives_funding_rates_top_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of entries to return","default":10,"title":"Limit"},"description":"Number of entries to return"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort order: highest (most positive first) or lowest (most negative first)","examples":["highest","lowest"],"default":"highest","title":"Sort"},"description":"Sort order: highest (most positive first) or lowest (most negative first)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Top funding rates returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopFundingResponse"}}}},"503":{"description":"Funding data unavailable (worker not running)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/events/macro":{"get":{"tags":["Events","Events"],"summary":"Get upcoming macro events","description":"Get upcoming economic/macro events.\n\nReturns events like FOMC meetings, CPI releases, NFP, etc.\n\n**Event impact levels:**\n- **low**: Minor market impact expected\n- **medium**: Moderate market impact\n- **high**: Significant market impact (FOMC, major data releases)\n\n**Common events:**\n- FOMC Meeting / Fed Interest Rate Decision\n- CPI (Consumer Price Index)\n- NFP (Non-Farm Payrolls)\n- GDP releases\n- Unemployment data\n\nData source: Finnhub. Updated daily.","operationId":"get_upcoming_macro_events_v1_events_macro_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Days ahead to look (1-30)","default":7,"title":"Days"},"description":"Days ahead to look (1-30)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code (e.g., 'US', 'EU')","title":"Country"},"description":"Filter by country code (e.g., 'US', 'EU')"},{"name":"high_impact_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only return high-impact events","default":false,"title":"High Impact Only"},"description":"Only return high-impact events"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Events returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpcomingEventsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/events/macro/history":{"get":{"tags":["Events","Events"],"summary":"Get macro events history","description":"Get historical economic events.\n\nReturns past events with actual vs estimated values.\nUseful for analyzing market reactions to data releases.\n\n**Max 365 days per request.**","operationId":"get_macro_events_history_v1_events_macro_history_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Number of days of history (1-365)","default":30,"title":"Days"},"description":"Number of days of history (1-365)"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date (YYYY-MM-DD). Overrides 'days' param.","title":"Start Date"},"description":"Start date (YYYY-MM-DD). Overrides 'days' param."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (YYYY-MM-DD). Defaults to today.","title":"End Date"},"description":"End date (YYYY-MM-DD). Defaults to today."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code (e.g., 'US', 'EU')","title":"Country"},"description":"Filter by country code (e.g., 'US', 'EU')"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Events history returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EconomicEventsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CategoryBreakdown":{"properties":{"score":{"type":"number","title":"Score","description":"Average score for category"},"count":{"type":"integer","title":"Count","description":"Number of articles in category"}},"type":"object","required":["score","count"],"title":"CategoryBreakdown","description":"Sentiment breakdown for a single category."},"DominanceResponse":{"properties":{"btc_dominance":{"type":"number","title":"Btc Dominance","description":"BTC market dominance percentage"},"eth_dominance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eth Dominance","description":"ETH market dominance percentage (if available)"},"total_market_cap_usd":{"type":"number","title":"Total Market Cap Usd","description":"Total crypto market cap in USD"},"active_cryptocurrencies":{"type":"integer","title":"Active Cryptocurrencies","description":"Number of active cryptocurrencies"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the data was last updated"}},"type":"object","required":["btc_dominance","total_market_cap_usd","active_cryptocurrencies","updated_at"],"title":"DominanceResponse","description":"BTC/ETH dominance response."},"EconomicEventResponse":{"properties":{"event":{"type":"string","title":"Event","description":"Event name (e.g., 'FOMC Meeting', 'CPI')"},"country":{"type":"string","title":"Country","description":"Country code (e.g., 'US', 'EU')"},"event_time":{"type":"string","format":"date-time","title":"Event Time","description":"Event date/time (UTC)"},"impact":{"anyOf":[{"$ref":"#/components/schemas/EventImpact"},{"type":"null"}],"description":"Impact level (low/medium/high)"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"Unit of measurement (%, M, B)"},"actual":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Actual","description":"Actual value (if released)"},"estimate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimate","description":"Consensus estimate"},"previous":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Previous","description":"Previous release value"}},"type":"object","required":["event","country","event_time"],"title":"EconomicEventResponse","description":"Single economic event."},"EconomicEventsListResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/EconomicEventResponse"},"type":"array","title":"Events","description":"List of events"},"count":{"type":"integer","title":"Count","description":"Number of events returned"},"start_date":{"type":"string","format":"date-time","title":"Start Date","description":"Start of date range"},"end_date":{"type":"string","format":"date-time","title":"End Date","description":"End of date range"},"source":{"type":"string","title":"Source","description":"Data source","default":"finnhub"}},"type":"object","required":["events","count","start_date","end_date"],"title":"EconomicEventsListResponse","description":"List of economic events."},"EventImpact":{"type":"string","enum":["low","medium","high"],"title":"EventImpact","description":"Event impact level."},"FearGreedHistoryResponse":{"properties":{"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History","description":"List of historical values"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"Start of date range"},"end_date":{"type":"string","format":"date","title":"End Date","description":"End of date range"},"count":{"type":"integer","title":"Count","description":"Number of records returned"},"source":{"type":"string","title":"Source","description":"Data source","default":"alternative.me"},"attribution":{"type":"string","title":"Attribution","description":"Required attribution for display","default":"Data provided by Alternative.me Crypto Fear & Greed Index"},"data_available_from":{"type":"string","format":"date","title":"Data Available From","description":"Earliest date with available data","default":"2018-02-01"}},"type":"object","required":["history","start_date","end_date","count"],"title":"FearGreedHistoryResponse","description":"Fear & Greed historical data response."},"FearGreedLevel":{"type":"string","enum":["Extreme Fear","Fear","Neutral","Greed","Extreme Greed"],"title":"FearGreedLevel","description":"Fear & Greed classification levels."},"FearGreedResponse":{"properties":{"value":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Value","description":"Index value (0-100)"},"label":{"$ref":"#/components/schemas/FearGreedLevel","description":"Human-readable classification"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the index was calculated"},"source":{"type":"string","title":"Source","description":"Data source","default":"alternative.me"},"attribution":{"type":"string","title":"Attribution","description":"Required attribution for display","default":"Data provided by Alternative.me Crypto Fear & Greed Index"}},"type":"object","required":["value","label","timestamp"],"title":"FearGreedResponse","description":"Fear & Greed Index response."},"FearGreedWithComparisonResponse":{"properties":{"value":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Value","description":"Current index value (0-100)"},"label":{"$ref":"#/components/schemas/FearGreedLevel","description":"Human-readable classification"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the index was calculated"},"source":{"type":"string","title":"Source","description":"Data source","default":"alternative.me"},"attribution":{"type":"string","title":"Attribution","description":"Required attribution for display","default":"Data provided by Alternative.me Crypto Fear & Greed Index"},"yesterday":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Yesterday","description":"Value from yesterday"},"week_ago":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Week Ago","description":"Value from 7 days ago"},"month_ago":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month Ago","description":"Value from 30 days ago"},"change_1d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Change 1D","description":"Change from yesterday"},"change_7d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Change 7D","description":"Change from 7 days ago"},"change_30d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Change 30D","description":"Change from 30 days ago"}},"type":"object","required":["value","label","timestamp"],"title":"FearGreedWithComparisonResponse","description":"Fear & Greed Index with historical comparisons."},"FundingRateResponse":{"properties":{"symbol":{"type":"string","title":"Symbol","description":"Trading pair symbol (e.g. BTCUSDT)","examples":["BTCUSDT"]},"funding_rate":{"type":"number","title":"Funding Rate","description":"Current funding rate (8h, as decimal e.g. 0.0001 = 0.01%)"},"funding_rate_pct":{"type":"number","title":"Funding Rate Pct","description":"Current funding rate as percentage"},"annualized_rate_pct":{"type":"number","title":"Annualized Rate Pct","description":"Annualized funding rate (%)"},"mark_price":{"type":"number","title":"Mark Price","description":"Current mark price"},"next_funding_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Funding Time","description":"Next funding settlement time"},"signal":{"$ref":"#/components/schemas/FundingSignal","description":"Funding rate signal classification"},"avg_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg 7D","description":"7-day average funding rate (%)"},"avg_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg 30D","description":"30-day average funding rate (%)"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was last updated"},"source":{"type":"string","title":"Source","description":"Data source","default":"binance"}},"type":"object","required":["symbol","funding_rate","funding_rate_pct","annualized_rate_pct","mark_price","signal","updated_at"],"title":"FundingRateResponse","description":"Funding rate response for a single symbol."},"FundingRatesResponse":{"properties":{"rates":{"items":{"$ref":"#/components/schemas/FundingRateResponse"},"type":"array","title":"Rates","description":"Funding rates for requested symbols"},"count":{"type":"integer","title":"Count","description":"Number of symbols returned"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was fetched"},"source":{"type":"string","title":"Source","description":"Data source","default":"binance"}},"type":"object","required":["rates","count","updated_at"],"title":"FundingRatesResponse","description":"Multi-symbol funding rates response."},"FundingSignal":{"type":"string","enum":["extreme_negative","negative","neutral","positive","elevated","extreme_positive"],"title":"FundingSignal","description":"Funding rate signal classification."},"GlobalMarketResponse":{"properties":{"total_market_cap_usd":{"type":"number","title":"Total Market Cap Usd","description":"Total crypto market cap in USD"},"total_24h_volume_usd":{"type":"number","title":"Total 24H Volume Usd","description":"Total 24h trading volume in USD"},"btc_dominance":{"type":"number","title":"Btc Dominance","description":"BTC market dominance percentage"},"eth_dominance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eth Dominance","description":"ETH market dominance percentage (if available)"},"active_cryptocurrencies":{"type":"integer","title":"Active Cryptocurrencies","description":"Number of active cryptocurrencies"},"active_markets":{"type":"integer","title":"Active Markets","description":"Number of active markets"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the data was last updated"}},"type":"object","required":["total_market_cap_usd","total_24h_volume_usd","btc_dominance","active_cryptocurrencies","active_markets","updated_at"],"title":"GlobalMarketResponse","description":"Global market data response."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HalvingResponse":{"properties":{"coin":{"type":"string","title":"Coin","description":"Coin symbol (BTC or LTC)","default":"BTC"},"coin_name":{"type":"string","title":"Coin Name","description":"Coin name","default":"Bitcoin"},"current_block":{"type":"integer","title":"Current Block","description":"Current block height"},"next_halving_block":{"type":"integer","title":"Next Halving Block","description":"Block height of next halving"},"blocks_remaining":{"type":"integer","title":"Blocks Remaining","description":"Blocks until next halving"},"estimated_date":{"type":"string","format":"date-time","title":"Estimated Date","description":"Estimated date of next halving"},"days_remaining":{"type":"integer","title":"Days Remaining","description":"Estimated days until halving"},"progress_pct":{"type":"number","title":"Progress Pct","description":"Progress through current halving epoch (0-100)"},"current_block_reward":{"type":"number","title":"Current Block Reward","description":"Current block reward"},"next_block_reward":{"type":"number","title":"Next Block Reward","description":"Block reward after halving"},"halving_number":{"type":"integer","title":"Halving Number","description":"Which halving this will be (1, 2, 3, ...)"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was fetched"}},"type":"object","required":["current_block","next_halving_block","blocks_remaining","estimated_date","days_remaining","progress_pct","current_block_reward","next_block_reward","halving_number","updated_at"],"title":"HalvingResponse","description":"Halving countdown response for BTC/LTC."},"MarketRegime":{"type":"string","enum":["BULLISH","BEARISH","NEUTRAL"],"title":"MarketRegime","description":"Market regime states."},"MultiPriceResponse":{"properties":{"prices":{"additionalProperties":{"$ref":"#/components/schemas/PriceResponse"},"type":"object","title":"Prices","description":"Asset prices"},"currency":{"type":"string","title":"Currency","description":"Price currency","default":"USD"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["prices"],"title":"MultiPriceResponse","description":"Price response for multiple assets.\n\nAttributes:\n    prices: Dictionary of asset prices.\n    currency: Price currency.\n    updated_at: Timestamp of last update."},"NewsArticleItem":{"properties":{"id":{"type":"integer","title":"Id","description":"Unique article ID for tracking"},"headline":{"type":"string","title":"Headline","description":"Article headline"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Article summary"},"full_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Content","description":"Full article content (RSS only)"},"condensed_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condensed Content","description":"Condensed article content (lfm2.5-thinking)"},"source":{"type":"string","title":"Source","description":"News source"},"source_type":{"type":"string","title":"Source Type","description":"Source type: finnhub or rss","default":"finnhub"},"url":{"type":"string","title":"Url","description":"Article URL"},"category":{"type":"string","title":"Category","description":"News category"},"published_at":{"type":"string","format":"date-time","title":"Published At","description":"Publication time"},"score":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Score","description":"Crypto trading impact score (1-10)"},"score_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score Reason","description":"Reason for the score"},"has_full_content":{"type":"boolean","title":"Has Full Content","description":"Whether full content is available","default":false}},"type":"object","required":["id","headline","source","url","category","published_at","score"],"title":"NewsArticleItem","description":"Single news article."},"NewsResponse":{"properties":{"articles":{"items":{"$ref":"#/components/schemas/NewsArticleItem"},"type":"array","title":"Articles","description":"List of scored articles"},"count":{"type":"integer","title":"Count","description":"Number of articles returned"},"filters":{"additionalProperties":true,"type":"object","title":"Filters","description":"Applied filters"},"source":{"type":"string","title":"Source","description":"Data source","default":"finnhub"},"scored_by":{"type":"string","title":"Scored By","description":"LLM model used for scoring","default":"qwen3:8b"}},"type":"object","required":["articles","count","filters"],"title":"NewsResponse","description":"News articles response."},"PriceResponse":{"properties":{"asset":{"type":"string","title":"Asset","description":"Asset symbol","examples":["BTC"]},"price":{"type":"number","minimum":0.0,"title":"Price","description":"Current price"},"currency":{"type":"string","title":"Currency","description":"Price currency","default":"USD"},"change_24h":{"type":"number","title":"Change 24H","description":"24h change percentage"},"high_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"High 24H","description":"24h high price"},"low_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Low 24H","description":"24h low price"},"volume_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume 24H","description":"24h trading volume"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["asset","price","change_24h"],"title":"PriceResponse","description":"Price response for a single asset.\n\nAttributes:\n    asset: Asset symbol (BTC, ETH, etc.).\n    price: Current price.\n    currency: Price currency.\n    change_24h: 24 hour price change percentage.\n    updated_at: Timestamp of last update."},"RegimeResponse":{"properties":{"regime":{"$ref":"#/components/schemas/MarketRegime","description":"Current market regime"},"price":{"type":"number","title":"Price","description":"Current BTC price"},"ema20":{"type":"number","title":"Ema20","description":"EMA20 value"},"price_vs_ema_pct":{"type":"number","title":"Price Vs Ema Pct","description":"Price position vs EMA20 in percent"},"ema_slope_pct":{"type":"number","title":"Ema Slope Pct","description":"EMA20 slope (change over last 5 candles) in percent"},"interval":{"type":"string","title":"Interval","description":"Candle interval used","default":"12h"},"candle_close":{"type":"string","format":"date-time","title":"Candle Close","description":"Last closed candle timestamp"},"next_update":{"type":"string","format":"date-time","title":"Next Update","description":"Next candle close time"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When regime was last calculated"}},"type":"object","required":["regime","price","ema20","price_vs_ema_pct","ema_slope_pct","candle_close","next_update","updated_at"],"title":"RegimeResponse","description":"Market regime response."},"SentimentLabel":{"type":"string","enum":["bearish","slightly_bearish","neutral","slightly_bullish","bullish"],"title":"SentimentLabel","description":"Aggregated sentiment labels."},"SentimentResponse":{"properties":{"score":{"type":"number","maximum":10.0,"minimum":0.0,"title":"Score","description":"Aggregated sentiment score (0-10)"},"label":{"$ref":"#/components/schemas/SentimentLabel","description":"Sentiment classification"},"articles_analyzed":{"type":"integer","title":"Articles Analyzed","description":"Total articles in calculation"},"category":{"type":"string","title":"Category","description":"Category filter used (crypto, general, merger, or all)"},"breakdown":{"additionalProperties":{"$ref":"#/components/schemas/CategoryBreakdown"},"type":"object","title":"Breakdown","description":"Score breakdown by category"},"top_high_impact":{"items":{"$ref":"#/components/schemas/TopArticle"},"type":"array","title":"Top High Impact","description":"Top high-impact articles (score >= 7)"},"top_low_impact":{"items":{"$ref":"#/components/schemas/TopArticle"},"type":"array","title":"Top Low Impact","description":"Top low-impact articles (score <= 3)"},"period_hours":{"type":"integer","title":"Period Hours","description":"Hours of data analyzed"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When sentiment was calculated"},"source":{"type":"string","title":"Source","description":"News data source","default":"finnhub"},"scored_by":{"type":"string","title":"Scored By","description":"LLM model used for scoring","default":"qwen3:8b"}},"type":"object","required":["score","label","articles_analyzed","category","breakdown","top_high_impact","top_low_impact","period_hours","updated_at"],"title":"SentimentResponse","description":"Aggregated market sentiment from news."},"SilenceLevel":{"type":"string","enum":["low","medium","high"],"title":"SilenceLevel","description":"Silence classification levels."},"SilenceResponse":{"properties":{"asset":{"type":"string","title":"Asset","description":"Asset symbol"},"silence_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Silence Score","description":"Silence score (0-1, higher = more quiet)"},"level":{"$ref":"#/components/schemas/SilenceLevel","description":"Silence level classification"},"recommendation":{"type":"string","title":"Recommendation","description":"Trading recommendation"},"factors":{"additionalProperties":true,"type":"object","title":"Factors","description":"Contributing factors to silence score"},"lookback":{"type":"string","title":"Lookback","description":"Lookback period used"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was calculated"}},"type":"object","required":["asset","silence_score","level","recommendation","factors","lookback","updated_at"],"title":"SilenceResponse","description":"Market silence score response."},"TopArticle":{"properties":{"headline":{"type":"string","title":"Headline","description":"Article headline"},"score":{"type":"integer","title":"Score","description":"Impact score"},"source":{"type":"string","title":"Source","description":"News source"}},"type":"object","required":["headline","score","source"],"title":"TopArticle","description":"Simplified article for top lists."},"TopFundingEntry":{"properties":{"symbol":{"type":"string","title":"Symbol","description":"Trading pair symbol"},"funding_rate":{"type":"number","title":"Funding Rate","description":"Current funding rate (decimal)"},"funding_rate_pct":{"type":"number","title":"Funding Rate Pct","description":"Current funding rate (%)"},"annualized_rate_pct":{"type":"number","title":"Annualized Rate Pct","description":"Annualized funding rate (%)"},"mark_price":{"type":"number","title":"Mark Price","description":"Current mark price"},"signal":{"$ref":"#/components/schemas/FundingSignal","description":"Funding rate signal"},"rank":{"type":"integer","title":"Rank","description":"Rank position"}},"type":"object","required":["symbol","funding_rate","funding_rate_pct","annualized_rate_pct","mark_price","signal","rank"],"title":"TopFundingEntry","description":"Entry in the top funding rates list."},"TopFundingResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/TopFundingEntry"},"type":"array","title":"Entries","description":"Ranked funding rate entries"},"count":{"type":"integer","title":"Count","description":"Number of entries returned"},"total_symbols":{"type":"integer","title":"Total Symbols","description":"Total symbols tracked"},"sort":{"type":"string","title":"Sort","description":"Sort order used (highest or lowest)"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was fetched"},"source":{"type":"string","title":"Source","description":"Data source","default":"binance"}},"type":"object","required":["entries","count","total_symbols","sort","updated_at"],"title":"TopFundingResponse","description":"Top funding rates response (ranked list)."},"UpcomingEventsResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/EconomicEventResponse"},"type":"array","title":"Events","description":"Upcoming events"},"count":{"type":"integer","title":"Count","description":"Number of events"},"days_ahead":{"type":"integer","title":"Days Ahead","description":"Days of events included"},"next_high_impact":{"anyOf":[{"$ref":"#/components/schemas/EconomicEventResponse"},{"type":"null"}],"description":"Next high-impact event"},"source":{"type":"string","title":"Source","description":"Data source","default":"finnhub"}},"type":"object","required":["events","count","days_ahead"],"title":"UpcomingEventsResponse","description":"Upcoming events summary."},"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"},"VolatilityLevel":{"type":"string","enum":["low","normal","high","extreme"],"title":"VolatilityLevel","description":"Volatility classification levels."},"VolatilityResponse":{"properties":{"asset":{"type":"string","title":"Asset","description":"Asset symbol"},"realized_volatility_pct":{"type":"number","title":"Realized Volatility Pct","description":"Realized daily volatility (%)"},"annualized_volatility_pct":{"type":"number","title":"Annualized Volatility Pct","description":"Annualized volatility (%)"},"level":{"$ref":"#/components/schemas/VolatilityLevel","description":"Volatility level classification"},"high_24h_pct":{"type":"number","title":"High 24H Pct","description":"24h high vs open (%)"},"low_24h_pct":{"type":"number","title":"Low 24H Pct","description":"24h low vs open (%)"},"range_24h_pct":{"type":"number","title":"Range 24H Pct","description":"24h range (high - low) (%)"},"period":{"type":"string","title":"Period","description":"Period used for calculation"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When data was calculated"}},"type":"object","required":["asset","realized_volatility_pct","annualized_volatility_pct","level","high_24h_pct","low_24h_pct","range_24h_pct","period","updated_at"],"title":"VolatilityResponse","description":"Market volatility response."}}}}