openapi: 3.2.0 info: title: Adanos Market Sentiment Reddit Stocks API description: Market sentiment and attention data for **stocks** across **Reddit**, **X/Twitter**, **financial news**, and **Polymarket**, plus a separate **Reddit crypto** API and direct finance-tuned **text sentiment analysis** (1,000+ term finance lexicon). termsOfService: https://adanos.org/terms contact: name: API Support url: https://api.adanos.org/ email: support@adanos.org license: name: MIT (OpenAPI document only) url: https://opensource.org/licenses/MIT version: 1.50.0 servers: - url: https://api.adanos.org description: Production tags: - name: Reddit Stocks description: Retail stock discussion data from Reddit. Start with `/trending`, then drill into `/stock/{ticker}` or build watchlists with `/compare`. paths: /reddit/stocks/v1/trending: get: tags: - Reddit Stocks summary: Trending stocks description: 'Returns the Reddit stocks with the strongest discussion activity in the selected period, ranked by `buzz_score`. **Includes:** - `buzz_score`: normalized 0-100 activity score used for ranking - `trend`: activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `mentions`, `unique_posts`, `subreddit_count`, `total_upvotes`: attributed volume and engagement signals, including inherited thread-context mentions - `trend_history`: independent UTC-day buzz scores, oldest to newest; minimum 7 values; the live final value describes today so far and can differ from the selected-period `buzz_score`; missing days are `0.0`' operationId: getTrendingStocks security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Maximum number of results examples: - 10 default: 20 title: Limit description: Maximum number of results - name: offset in: query required: false schema: type: integer minimum: 0 description: Number of items to skip for pagination examples: - 0 default: 0 title: Offset description: Number of items to skip for pagination - name: type in: query required: false schema: anyOf: - enum: - stock - etf - all type: string - type: 'null' description: Filter by asset type. Omit or use 'all' for all assets. examples: - stock title: Type description: Filter by asset type. Omit or use 'all' for all assets. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/TrendingStock' title: Response Gettrendingstocks example: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 unique_posts: 45 subreddit_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 total_upvotes: 15234 trend_history: - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=30 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Gettrendingstocks '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No trending stocks found content: application/json: example: detail: No trending stocks found. x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/trending?from=2026-05-01&to=2026-05-07&limit=5\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/trending?from=2026-05-01&to=2026-05-07&limit=5\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/trending?from=2026-05-01&to=2026-05-07&limit=5\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/trending/sectors: get: tags: - Reddit Stocks summary: Trending sectors description: 'Returns the sectors with the strongest aggregated Reddit stock discussion in the selected period, ranked by `buzz_score`. **Includes:** - `buzz_score`: normalized 0-100 activity score used for ranking - `trend`: activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `subreddit_count`, `total_upvotes`: attributed volume and engagement signals, including inherited thread-context mentions - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the sector result - `trend_history`: independent daily sector buzz scores, oldest to newest; length is max(requested days, 7); the live final value describes today so far and can differ from period `buzz_score`' operationId: getTrendingSectors security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Maximum number of results examples: - 10 default: 20 title: Limit description: Maximum number of results - name: offset in: query required: false schema: type: integer minimum: 0 description: Number of items to skip for pagination examples: - 0 default: 0 title: Offset description: Number of items to skip for pagination responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/TrendingSector' title: Response Gettrendingsectors example: - buzz_score: 78.4 trend: rising mentions: 4523 unique_tickers: 34 subreddit_count: 15 sentiment_score: 0.28 bullish_pct: 54 bearish_pct: 22 total_upvotes: 128450 trend_history: - 45.2 - 48.1 - 52.3 - 55.0 - 58.2 - 61.5 - 78.4 top_tickers: - NVDA - AAPL - MSFT - AMD - GOOGL sector: Technology headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=300 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Gettrendingsectors '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No trending sectors found content: application/json: example: detail: No trending sectors found. x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/trending/sectors?from=2026-05-01&to=2026-05-07&limit=5\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/trending/sectors?from=2026-05-01&to=2026-05-07&limit=5\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/trending/sectors?from=2026-05-01&to=2026-05-07&limit=5\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/trending/countries: get: tags: - Reddit Stocks summary: Trending countries description: 'Returns the countries with the strongest aggregated Reddit stock discussion in the selected period, ranked by `buzz_score`. **Includes:** - `buzz_score`: normalized 0-100 activity score used for ranking - `trend`: activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `subreddit_count`, `total_upvotes`: attributed volume and engagement signals, including inherited thread-context mentions - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the country result - `trend_history`: independent daily country buzz scores, oldest to newest; length is max(requested days, 7); the live final value describes today so far and can differ from period `buzz_score`' operationId: getTrendingCountries security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Maximum number of results examples: - 10 default: 20 title: Limit description: Maximum number of results - name: offset in: query required: false schema: type: integer minimum: 0 description: Number of items to skip for pagination examples: - 0 default: 0 title: Offset description: Number of items to skip for pagination responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/TrendingCountry' title: Response Gettrendingcountries example: - buzz_score: 82.3 trend: stable mentions: 8934 unique_tickers: 156 subreddit_count: 18 sentiment_score: 0.21 bullish_pct: 48 bearish_pct: 26 total_upvotes: 245000 trend_history: - 52.1 - 54.0 - 56.8 - 59.2 - 61.0 - 60.1 - 82.3 top_tickers: - NVDA - TSLA - AAPL - AMD - PLTR country: United States headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=300 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Gettrendingcountries '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No trending countries found content: application/json: example: detail: No trending countries found. x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/trending/countries?from=2026-05-01&to=2026-05-07&limit=5\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/trending/countries?from=2026-05-01&to=2026-05-07&limit=5\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/trending/countries?from=2026-05-01&to=2026-05-07&limit=5\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/stock/{ticker}: get: tags: - Reddit Stocks summary: Stock Sentiment description: 'Returns detailed sentiment analysis for a specific stock ticker. **Includes:** - Buzz score (0-100) - Trend direction over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). - Sentiment breakdown (positive/negative/neutral) - Daily trend data - `top_mentions`: top explicit Reddit mentions from the selected period, ranked by upvotes - `top_subreddits`: top subreddit contributors by attributed mention count `mentions` includes inherited thread-context mentions. Use raw `/mentions` without `include_inherited` for explicit-only rows. Returns `200` with `found: false` when the ticker is supported but this service has no qualifying data in the requested window. Returns `404` only when the ticker is unsupported.' operationId: getStockSentiment security: - ApiKeyAuth: [] parameters: - name: ticker in: path required: true schema: type: string pattern: ^\$?(?:[A-Za-z0-9]{1,8}[.-][A-Za-z]|[A-Za-z0-9]{0}[A-Za-z][A-Za-z0-9]{0,9}|[A-Za-z0-9]{1}[A-Za-z][A-Za-z0-9]{0,8}|[A-Za-z0-9]{2}[A-Za-z][A-Za-z0-9]{0,7}|[A-Za-z0-9]{3}[A-Za-z][A-Za-z0-9]{0,6}|[A-Za-z0-9]{4}[A-Za-z][A-Za-z0-9]{0,5}|[A-Za-z0-9]{5}[A-Za-z][A-Za-z0-9]{0,4}|[A-Za-z0-9]{6}[A-Za-z][A-Za-z0-9]{0,3}|[A-Za-z0-9]{7}[A-Za-z][A-Za-z0-9]{0,2}|[A-Za-z0-9]{8}[A-Za-z][A-Za-z0-9]{0,1}|[A-Za-z0-9]{9}[A-Za-z][A-Za-z0-9]{0,0}|[0-9]{3,10})$ description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) title: Ticker description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/StockSentiment' example: ticker: TSLA company_name: Tesla, Inc. found: true buzz_score: 87.5 mentions: 342 sentiment_score: 0.23 total_upvotes: 15234 unique_posts: 45 subreddit_count: 8 trend: rising bullish_pct: 45 bearish_pct: 18 period_days: 7 top_subreddits: - subreddit: wallstreetbets mentions: 89 count: 89 - subreddit: stocks mentions: 67 count: 67 daily_trend: - date: '2025-12-28' mentions: 52 sentiment_score: 0.31 buzz_score: 42.8 bullish_pct: 58 bearish_pct: 19 - date: '2025-12-27' mentions: 48 sentiment_score: 0.18 buzz_score: 38.5 bullish_pct: 46 bearish_pct: 21 top_mentions: - text_snippet: TSLA looking strong after... sentiment_score: 0.85 sentiment_label: positive upvotes: 1234 subreddit: wallstreetbets created_utc: '2025-12-28T10:30:00' headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=30 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Getstocksentiment '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Unsupported ticker content: application/json: example: detail: error_code: unsupported_ticker message: Unsupported ticker $XYZ. This ticker is not supported by Adanos v1. schema: $ref: '#/components/schemas/UnsupportedAssetError' x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA?from=2026-05-01&to=2026-05-07\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/stock/TSLA?from=2026-05-01&to=2026-05-07\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA?from=2026-05-01&to=2026-05-07\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/market-sentiment: get: tags: - Reddit Stocks summary: Market Sentiment description: 'Returns the service-level Reddit market sentiment snapshot across all tracked stocks when you want a single Reddit-wide market state instead of per-ticker rankings. It includes service-wide buzz, sentiment split, activity trend, breadth metrics and the top drivers by current `buzz_score`. `buzz_score` here means relative Reddit market heat, not pure bullishness. It measures how hot overall Reddit stock activity is versus Reddit''s own trailing 90-day baseline: - around `50` = normal Reddit market activity - higher = more active than usual - lower = quieter than usual `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). Use `sentiment_score`, `bullish_pct` and `bearish_pct` for direction. `mentions` includes inherited thread-context mentions. Use raw `/mentions` without `include_inherited` for explicit-only rows.' operationId: getRedditMarketSentiment security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RedditMarketSentimentResponse' example: buzz_score: 57.4 trend: stable mentions: 3992 unique_posts: 418 subreddit_count: 21 total_upvotes: 15234 active_tickers: 1000 sentiment_score: 0.045 positive_count: 1440 negative_count: 998 neutral_count: 1554 bullish_pct: 36 bearish_pct: 25 trend_history: - 49.8 - 52.1 - 50.7 - 55.6 - 58.3 - 60.2 - 57.4 drivers: - ticker: SPY mentions: 129 buzz_score: 74.1 sentiment_score: 0.009 - ticker: GOOGL mentions: 106 buzz_score: 71.8 sentiment_score: 0.029 headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=300 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Getredditmarketsentiment '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/market-sentiment?from=2026-05-01&to=2026-05-07\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/market-sentiment?from=2026-05-01&to=2026-05-07\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/market-sentiment?from=2026-05-01&to=2026-05-07\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/stock/{ticker}/explain: get: tags: - Reddit Stocks summary: AI explanation description: 'Returns an AI-generated explanation for why a stock is trending on Reddit, based on recent mention data and sentiment. Explanations are cached for 6 hours. **Includes:** - `explanation`: 1-2 sentence summary of why the stock is trending - `cached`: whether this was served from cache - `generated_at`: when the explanation was generated - `model`: which LLM model generated the explanation' operationId: getStockExplanation security: - ApiKeyAuth: [] parameters: - name: ticker in: path required: true schema: type: string pattern: ^\$?(?:[A-Za-z0-9]{1,8}[.-][A-Za-z]|[A-Za-z0-9]{0}[A-Za-z][A-Za-z0-9]{0,9}|[A-Za-z0-9]{1}[A-Za-z][A-Za-z0-9]{0,8}|[A-Za-z0-9]{2}[A-Za-z][A-Za-z0-9]{0,7}|[A-Za-z0-9]{3}[A-Za-z][A-Za-z0-9]{0,6}|[A-Za-z0-9]{4}[A-Za-z][A-Za-z0-9]{0,5}|[A-Za-z0-9]{5}[A-Za-z][A-Za-z0-9]{0,4}|[A-Za-z0-9]{6}[A-Za-z][A-Za-z0-9]{0,3}|[A-Za-z0-9]{7}[A-Za-z][A-Za-z0-9]{0,2}|[A-Za-z0-9]{8}[A-Za-z][A-Za-z0-9]{0,1}|[A-Za-z0-9]{9}[A-Za-z][A-Za-z0-9]{0,0}|[0-9]{3,10})$ description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) title: Ticker description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/StockExplanationResponse' example: ticker: GME company_name: Gamestop Corporation - Class A explanation: GME is trending due to viral GameStop social media activity and large position posts on r/Superstonk. cached: true generated_at: '2026-01-13T14:30:00+00:00' model: meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=60 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Getstockexplanation '503': description: Explanation or database service unavailable content: application/json: example: detail: Explanation service temporarily unavailable. Try again later. '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found or no data available for the requested asset/window content: application/json: example: detail: No mentions found for $XYZ in the last 7 days. schema: $ref: '#/components/schemas/ErrorResponse' x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/explain\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/explain\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/explain\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/compare: get: tags: - Reddit Stocks summary: Compare stocks description: 'Compare up to 10 stock or ETF tickers side by side over the same UTC calendar-day period. Results are sorted by `buzz_score` descending and return the same core analytics used by `/trending`: `buzz_score`, `trend`, `trend_history`, `mentions`, `unique_posts`, `subreddit_count`, `sentiment_score`, `bullish_pct`, `bearish_pct` and `total_upvotes`. `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). If a requested ticker is supported but has no qualifying data in the period, it is still returned with zeroed metrics. `mentions` includes inherited thread-context mentions. Use raw `/mentions` without `include_inherited` for explicit-only rows.' operationId: compareStocks security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true - name: tickers in: query required: true schema: type: string description: Comma-separated list of ticker symbols (e.g., TSLA,NVDA,AMD) examples: - TSLA,NVDA,AMD title: Tickers description: Comma-separated list of ticker symbols (e.g., TSLA,NVDA,AMD) responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompareResponse' example: period_days: 7 stocks: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 unique_posts: 45 subreddit_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 total_upvotes: 15234 trend_history: - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 - ticker: NVDA company_name: NVIDIA Corporation buzz_score: 72.3 trend: stable mentions: 189 unique_posts: 31 subreddit_count: 6 sentiment_score: 0.45 bullish_pct: 52 bearish_pct: 17 total_upvotes: 8921 trend_history: - 38.1 - 40.7 - 44.9 - 51.5 - 57.4 - 63.0 - 72.3 headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=30 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Comparestocks '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Invalid compare item list content: application/json: example: detail: error: too_many_tickers message: Maximum 10 tickers allowed. max_items: 10 item_name: ticker examples: too_many_tickers: summary: Too many tickers value: detail: error: too_many_tickers message: Maximum 10 tickers allowed. max_items: 10 item_name: ticker no_valid_tickers: summary: No valid tickers value: detail: error: no_valid_tickers message: At least one valid ticker is required. max_items: 10 item_name: ticker schema: $ref: '#/components/schemas/CompareLimitError' x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/compare?from=2026-05-01&to=2026-05-07&tickers=TSLA,AAPL,NVDA\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/compare?from=2026-05-01&to=2026-05-07&tickers=TSLA,AAPL,NVDA\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/compare?from=2026-05-01&to=2026-05-07&tickers=TSLA,AAPL,NVDA\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/search: get: tags: - Reddit Stocks summary: Search stocks description: Search stocks by ticker, company name or alias. Results prioritize match relevance first (exact ticker matches, then prefixes, then name/alias matches) and include a compact summary block for the last 7 UTC calendar days. Summary mentions include inherited thread-context mentions; use raw /mentions without include_inherited for explicit-only rows. operationId: searchStocks security: - ApiKeyAuth: [] parameters: - name: q in: query required: true schema: type: string minLength: 2 description: Search query (minimum 2 non-$ characters after trimming) examples: - tesla title: Q description: Search query (minimum 2 non-$ characters after trimming) - name: limit in: query required: false schema: type: integer maximum: 50 minimum: 1 description: Maximum number of results to return examples: - 20 default: 20 title: Limit description: Maximum number of results to return responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SearchResponse' example: query: tesla count: 1 period_days: 7 results: - ticker: TSLA name: Tesla Inc. type: Stock exchange: NASDAQ sector: Consumer Discretionary country: United States aliases: - Tesla - Elon summary: mentions: 342 buzz_score: 87.5 trend: rising sentiment_score: 0.23 bearish_pct: 18 bullish_pct: 45 subreddit_count: 8 total_upvotes: 15234 unique_posts: 45 headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=15 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid search query parameters content: application/json: examples: fixed_window: summary: Search endpoints use a fixed summary window value: detail: error: Invalid search parameters message: Search endpoints use a fixed last-7-UTC-calendar-day summary window. unsupported_parameters: - days normalized_query: summary: Search query is too short after normalization value: detail: Search query must contain at least 2 non-$ characters after trimming validation: summary: Query parameter validation failed value: detail: - type: string_too_short loc: - query - q msg: String should have at least 2 characters input: t ctx: min_length: 2 schema: anyOf: - $ref: '#/components/schemas/InvalidSearchParametersError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Searchstocks x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/search?q=tesla&limit=5\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/search?q=tesla&limit=5\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/search?q=tesla&limit=5\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/stats: get: tags: - Reddit Stocks summary: Service statistics description: 'Returns high-level Reddit stock dataset coverage metrics for questions like: - how many stock mention rows are stored - how many distinct tickers currently have Reddit data - how many mention rows and distinct tickers are present today (UTC) - how many supported tickers exist in the reference universe The current-day counters count all rows in `reddit_mentions` since UTC midnight, including post mentions, comment mentions and inherited thread-context mentions.' operationId: getStats responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RedditStatsResponse' example: total_mentions: 12833 unique_tickers: 65 mentions_today: 342 unique_tickers_today: 21 supported_tickers: 35000 headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=300 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/RateLimitError' examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free '503': description: Database temporarily unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: detail: Database temporarily unavailable '504': description: Analytics request deadline exceeded content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: detail: Request deadline exceeded security: - ApiKeyAuth: [] x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/stats\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/stats\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/stats\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" /reddit/stocks/v1/stock/{ticker}/mentions: get: tags: - Reddit Stocks summary: Raw Mentions description: 'Returns raw mention rows for a specific stock ticker within the live raw-data retention window. **Professional account required.** Free and Hobby accounts cannot use this endpoint. **Use this endpoint when you need:** - post/comment-level snippets - original timestamps - inherited-context filtering **Notes:** - Use `from` and `to` for explicit UTC date windows - Results are ordered newest first and support deterministic `offset` + `limit` pagination - `include_inherited=false` by default - empty result sets return `200` with `results=[]`' operationId: getStockRawMentions security: - ApiKeyAuth: [] parameters: - name: ticker in: path required: true schema: type: string pattern: ^\$?(?:[A-Za-z0-9]{1,8}[.-][A-Za-z]|[A-Za-z0-9]{0}[A-Za-z][A-Za-z0-9]{0,9}|[A-Za-z0-9]{1}[A-Za-z][A-Za-z0-9]{0,8}|[A-Za-z0-9]{2}[A-Za-z][A-Za-z0-9]{0,7}|[A-Za-z0-9]{3}[A-Za-z][A-Za-z0-9]{0,6}|[A-Za-z0-9]{4}[A-Za-z][A-Za-z0-9]{0,5}|[A-Za-z0-9]{5}[A-Za-z][A-Za-z0-9]{0,4}|[A-Za-z0-9]{6}[A-Za-z][A-Za-z0-9]{0,3}|[A-Za-z0-9]{7}[A-Za-z][A-Za-z0-9]{0,2}|[A-Za-z0-9]{8}[A-Za-z][A-Za-z0-9]{0,1}|[A-Za-z0-9]{9}[A-Za-z][A-Za-z0-9]{0,0}|[0-9]{3,10})$ description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) title: Ticker description: Stock ticker symbol (e.g., TSLA, aapl, BRK.A, $GME) - name: from in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. title: Days description: Deprecated v1 compatibility shorthand. Prefer `from` and `to` for reproducible UTC date windows. deprecated: true x-adanos-hide-in-request-client: true - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Maximum number of raw mention rows to return examples: - 50 default: 50 title: Limit description: Maximum number of raw mention rows to return - name: offset in: query required: false schema: type: integer minimum: 0 description: Number of raw mention rows to skip for offset-based pagination. examples: - 0 default: 0 title: Offset description: Number of raw mention rows to skip for offset-based pagination. - name: include_inherited in: query required: false schema: type: boolean description: Include thread-context inherited mentions in addition to direct ticker mentions default: false title: Include Inherited description: Include thread-context inherited mentions in addition to direct ticker mentions responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RedditRawMentionsResponse' example: ticker: TSLA period_days: 7 count: 1 results: - post_id: abc123 comment_id: def456 subreddit: wallstreetbets author: user123 text_snippet: TSLA looks strong into earnings... created_utc: '2026-03-20T18:42:10Z' upvotes: 381 sentiment_score: 0.62 sentiment_label: positive is_inherited: false headers: X-Request-ID: description: Request correlation identifier returned by the API and included in structured application logs. schema: type: string example: adnos.req-20260423.abc12345 Cache-Control: description: HTTP cache policy returned by the API. schema: type: string example: private, max-age=60 Vary: description: Headers that private client caches must include in their cache key. schema: type: string example: X-API-Key, Authorization, Accept-Encoding X-RateLimit-Limit-Monthly: description: Monthly request quota for the authenticated account. schema: type: string example: '250' X-RateLimit-Remaining-Monthly: description: Remaining monthly requests for the authenticated account. schema: type: string example: '247' X-RateLimit-Used-Monthly: description: Requests already consumed in the account's current monthly quota window. schema: type: string example: '3' X-RateLimit-Reset-Monthly: description: ISO 8601 timestamp when the current monthly quota window resets. schema: type: string format: date-time example: '2026-07-29T14:03:00Z' X-RateLimit-Limit-Burst: description: Per-minute burst request quota for the authenticated account. schema: type: string example: '100' X-RateLimit-Remaining-Burst: description: Remaining requests in the current per-minute burst window. schema: type: string example: '99' X-RateLimit-Reset-Burst: description: ISO 8601 timestamp when the current burst rate-limit window resets. schema: type: string format: date-time example: '2026-04-28T14:30:00Z' X-Account-Type: description: Account tier resolved from the API key. schema: type: string enum: - free - hobby - professional - premium example: free '401': description: Authentication failed content: application/json: examples: missing: summary: Missing API key value: detail: Missing API key. Include 'X-API-Key' header. invalid: summary: Invalid API key value: detail: Invalid API key. revoked: summary: Revoked API key value: detail: API key has been revoked. schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Historical data limit exceeded content: application/json: example: detail: error: Historical data limit exceeded message: 'Your free account is limited to 30 days of historical lookback. Upgrade to Hobby for up to 90 days or Professional for up to 365 days: https://adanos.org/pricing' requested_days: 60 enforced_quantity: lookback_days max_days: 30 account_type: free schema: $ref: '#/components/schemas/HistoricalLimitError' '429': description: Rate limit exceeded content: application/json: examples: burst: summary: Fleet burst limit exceeded value: detail: error: Burst rate limit exceeded message: Too many requests. Limit is 100 requests per minute. limit: 100 used: 100 account_type: free local: summary: Local backup limiter exceeded value: detail: error: Rate limit exceeded message: 'Rate limit exceeded: 100 per 1 minute' limit: 100 account_type: free schema: $ref: '#/components/schemas/RateLimitError' '422': description: Invalid period or query parameters content: application/json: examples: platform_availability: summary: Period starts before platform data availability value: detail: error: Invalid period message: Requested period starts before this platform's public data availability. period_from: '2025-03-17' available_since: '2026-03-07' platform: news validation: summary: Query parameter validation failed value: detail: - type: greater_than_equal loc: - query - days msg: Input should be greater than or equal to 1 input: '0' ctx: ge: 1 schema: anyOf: - $ref: '#/components/schemas/InvalidPeriodError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Getstockrawmentions '503': description: Database temporarily unavailable content: application/json: example: detail: Database temporarily unavailable schema: $ref: '#/components/schemas/ErrorResponse' '504': description: Analytics request deadline exceeded content: application/json: example: detail: Request deadline exceeded schema: $ref: '#/components/schemas/ErrorResponse' x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/mentions?from=2026-05-01&to=2026-05-07&limit=5\" \\\n -H \"X-API-Key: sk_live_your_key_here\"" - lang: javascript label: JavaScript source: "const response = await fetch(\"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/mentions?from=2026-05-01&to=2026-05-07&limit=5\", {\n headers: {\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n});\n\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\nconsole.log(data);" - lang: python label: Python source: "import requests\n\nresponse = requests.get(\n \"https://api.adanos.org/reddit/stocks/v1/stock/TSLA/mentions?from=2026-05-01&to=2026-05-07&limit=5\",\n headers={\n \"X-API-Key\": \"sk_live_your_key_here\",\n },\n timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())" components: schemas: RedditMarketSentimentDriver: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - SPY mentions: type: integer minimum: 0.0 title: Mentions description: Attributed mentions in the selected period, including inherited thread-context mentions examples: - 129 buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Asset buzz score in the selected period examples: - 74.1 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score for this asset in the selected period examples: - 0.009 type: object required: - ticker - mentions - buzz_score title: RedditMarketSentimentDriver description: Top asset contributing to the service-level Reddit market sentiment. CompareResponse: properties: period_days: type: integer title: Period Days description: Analysis period in days examples: - 7 stocks: items: $ref: '#/components/schemas/CompareStockItem' type: array title: Stocks description: Stocks sorted by buzz_score descending type: object required: - period_days - stocks title: CompareResponse description: Comparison of multiple stocks. examples: - period_days: 7 stocks: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 unique_posts: 45 subreddit_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 total_upvotes: 15234 trend_history: - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 - ticker: NVDA company_name: NVIDIA Corporation buzz_score: 72.3 trend: stable mentions: 189 unique_posts: 31 subreddit_count: 6 sentiment_score: 0.45 bullish_pct: 52 bearish_pct: 17 total_upvotes: 8921 trend_history: - 38.1 - 40.7 - 44.9 - 51.5 - 57.4 - 63.0 - 72.3 RedditMarketSentimentResponse: properties: buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Service-wide Reddit heat score relative to the service's trailing 90-day baseline. Around 50 = normal activity, higher values = hotter-than-usual service activity. examples: - 57.4 trend: anyOf: - type: string enum: - rising - falling - stable - type: 'null' title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - stable mentions: type: integer minimum: 0.0 title: Mentions description: Total Reddit mentions across the selected period, including inherited thread-context mentions examples: - 3992 unique_posts: type: integer minimum: 0.0 title: Unique Posts description: Exact distinct Reddit post count across the selected UTC period examples: - 418 subreddit_count: type: integer minimum: 0.0 title: Subreddit Count description: Distinct subreddits contributing in the selected period examples: - 21 total_upvotes: type: integer minimum: 0.0 title: Total Upvotes description: Total upvotes across attributed mentions in the selected period examples: - 15234 active_tickers: type: integer minimum: 0.0 title: Active Tickers description: Number of tickers with qualifying attributed Reddit activity in the selected period examples: - 1000 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Service-wide average sentiment score across all qualifying mentions in the selected period examples: - 0.045 positive_count: type: integer minimum: 0.0 title: Positive Count description: Deprecated. Prefer bullish_pct with mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 1440 negative_count: type: integer minimum: 0.0 title: Negative Count description: Deprecated. Prefer bearish_pct with mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 998 neutral_count: type: integer minimum: 0.0 title: Neutral Count description: Deprecated. Prefer bullish_pct, bearish_pct and mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 1554 bullish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bullish Pct description: Bullish mention percentage examples: - 36 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Bearish mention percentage examples: - 25 trend_history: items: type: number type: array title: Trend History description: Daily service-wide buzz scores (oldest→newest) using the same relative baseline calibration. Length = max(requested_days, 7) for successful requests; windows before platform availability return HTTP 422. examples: - - 49.8 - 52.1 - 50.7 - 55.6 - 58.3 - 60.2 - 57.4 drivers: items: $ref: '#/components/schemas/RedditMarketSentimentDriver' type: array title: Drivers description: Top assets by current buzz_score driving the service-level reading type: object required: - buzz_score - mentions - unique_posts - subreddit_count - total_upvotes - active_tickers - positive_count - negative_count - neutral_count - bullish_pct - bearish_pct title: RedditMarketSentimentResponse description: Service-level Reddit market sentiment across all tracked stocks. examples: - buzz_score: 57.4 trend: stable mentions: 3992 unique_posts: 418 subreddit_count: 21 total_upvotes: 15234 active_tickers: 1000 sentiment_score: 0.045 positive_count: 1440 negative_count: 998 neutral_count: 1554 bullish_pct: 36 bearish_pct: 25 trend_history: - 49.8 - 52.1 - 50.7 - 55.6 - 58.3 - 60.2 - 57.4 drivers: - ticker: SPY mentions: 129 buzz_score: 74.1 sentiment_score: 0.009 - ticker: GOOGL mentions: 106 buzz_score: 71.8 sentiment_score: 0.029 HistoricalLimitError: properties: detail: $ref: '#/components/schemas/HistoricalLimitErrorDetail' description: Structured error details type: object required: - detail title: HistoricalLimitError description: Error response for historical data limit exceeded (HTTP 403). InvalidPeriodErrorDetail: properties: error: type: string title: Error description: Error type identifier message: type: string title: Message description: Human-readable error message field: anyOf: - type: string - type: 'null' title: Field description: Invalid query parameter name value: anyOf: - type: string - type: integer - type: 'null' title: Value description: Invalid query parameter value today: anyOf: - type: string format: date - type: 'null' title: Today description: Current UTC date used for validation period_from: anyOf: - type: string format: date - type: 'null' title: Period From description: Resolved inclusive UTC start date period_to: anyOf: - type: string format: date - type: 'null' title: Period To description: Resolved inclusive UTC end date available_since: anyOf: - type: string format: date - type: 'null' title: Available Since description: Earliest public data date for the platform retention_from: anyOf: - type: string format: date - type: 'null' title: Retention From description: Earliest date retained for the endpoint requested_days: anyOf: - type: integer - type: 'null' title: Requested Days description: Number of days requested max_days: anyOf: - type: integer - type: 'null' title: Max Days description: Maximum days accepted by the endpoint platform: anyOf: - type: string - type: 'null' title: Platform description: Platform identifier type: object required: - error - message title: InvalidPeriodErrorDetail description: Structured error detail for invalid period windows. RedditStatsResponse: properties: total_mentions: type: integer title: Total Mentions description: Rollup-backed all-time stock mention total; current-day raw rows may be used only as a bounded freshness fallback examples: - 12833 unique_tickers: type: integer title: Unique Tickers description: Number of unique tickers with mentions examples: - 65 mentions_today: type: integer title: Mentions Today description: Stock mention rows created since today's UTC midnight, including posts, comments and inherited thread-context mentions default: 0 examples: - 342 unique_tickers_today: type: integer title: Unique Tickers Today description: Unique tickers (detected using case-sensitive, uppercase-only patterns) including posts, comments and inherited thread-context mentions default: 0 examples: - 21 supported_tickers: type: integer title: Supported Tickers description: Number of supported ticker patterns (from ticker_reference) examples: - 35000 type: object required: - total_mentions - unique_tickers - supported_tickers title: RedditStatsResponse description: Service statistics. examples: - total_mentions: 12833 unique_tickers: 65 mentions_today: 342 unique_tickers_today: 21 supported_tickers: 35000 SearchResponse: properties: query: type: string title: Query description: Original search query examples: - tesla count: type: integer title: Count description: Total number of matching results before the limit is applied examples: - 1 period_days: type: integer minimum: 1.0 title: Period Days description: Fixed lookback window used for each summary block examples: - 7 results: items: $ref: '#/components/schemas/SearchResultItem' type: array title: Results description: Top matching stocks capped by the requested limit type: object required: - query - count - period_days - results title: SearchResponse description: Search results for stocks. examples: - query: tesla count: 1 period_days: 7 results: - ticker: TSLA name: Tesla Inc. type: Stock exchange: NASDAQ sector: Consumer Discretionary country: United States aliases: - Tesla - Elon summary: mentions: 342 buzz_score: 87.5 trend: rising sentiment_score: 0.23 bearish_pct: 18 bullish_pct: 45 subreddit_count: 8 total_upvotes: 15234 unique_posts: 45 UnsupportedAssetError: properties: detail: $ref: '#/components/schemas/UnsupportedAssetErrorDetail' description: Structured unsupported asset details type: object required: - detail title: UnsupportedAssetError description: Error response for unsupported v1 stock/crypto asset requests. TrendingCountry: properties: buzz_score: type: number maximum: 100.0 minimum: 0.0 title: Buzz Score description: Aggregated Buzz Score (0-100) examples: - 78.4 trend: type: string enum: - rising - falling - stable title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - rising mentions: type: integer title: Mentions description: Total attributed mentions, including inherited thread-context mentions examples: - 4523 unique_tickers: type: integer title: Unique Tickers description: Number of unique tickers mentioned examples: - 34 subreddit_count: type: integer title: Subreddit Count description: Number of subreddits with mentions examples: - 15 sentiment_score: type: number maximum: 1.0 minimum: -1.0 title: Sentiment Score description: Weighted average sentiment (-1 bearish to +1 bullish) examples: - 0.28 bullish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bullish Pct description: Percentage of sentiment-labeled mentions that are bullish examples: - 54 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Percentage of sentiment-labeled mentions that are bearish examples: - 22 total_upvotes: type: integer title: Total Upvotes description: Total upvotes across attributed mentions examples: - 128450 trend_history: items: type: number type: array title: Trend History description: Daily dimension buzz scores (oldest to newest). Length follows the resolved period, with a minimum of 7 values. Every slot describes only its UTC calendar day. The live final value describes today so far and can differ from period buzz_score. Closed historical windows end at `to`. examples: - - 45.2 - 48.1 - 52.3 - 55.0 - 58.2 - 61.5 - 78.4 top_tickers: items: type: string type: array maxItems: 5 title: Top Tickers description: Top 5 tickers by mentions examples: - - NVDA - AAPL - MSFT - AMD - GOOGL country: type: string title: Country description: Country name examples: - United States type: object required: - buzz_score - trend - mentions - unique_tickers - subreddit_count - sentiment_score - bullish_pct - bearish_pct - total_upvotes - trend_history - top_tickers - country title: TrendingCountry description: Trending country with aggregated buzz metrics from Reddit. examples: - buzz_score: 82.3 trend: stable mentions: 8934 unique_tickers: 156 subreddit_count: 18 sentiment_score: 0.21 bullish_pct: 48 bearish_pct: 26 total_upvotes: 245000 trend_history: - 52.1 - 54.0 - 56.8 - 59.2 - 61.0 - 60.1 - 82.3 top_tickers: - NVDA - TSLA - AAPL - AMD - PLTR country: United States StockSentiment: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - TSLA company_name: anyOf: - type: string - type: 'null' title: Company Name description: Company name from ticker_reference (null if not found) examples: - Tesla, Inc. found: type: boolean title: Found description: Legacy v1 data-availability flag. `true` means this service has qualifying data for this asset/window. `false` means the asset is supported, but this service has no qualifying data for the requested window. Planned for removal in v2. deprecated: true buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Buzz Score (0-100). Asymptotic scaling above 50. examples: - 87.5 mentions: anyOf: - type: integer - type: 'null' title: Mentions description: Total attributed mentions in the selected period, including inherited thread-context mentions examples: - 342 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score (-1 bearish to +1 bullish) examples: - 0.23 positive_count: anyOf: - type: integer - type: 'null' title: Positive Count description: Deprecated. Prefer bullish_pct with mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 154 negative_count: anyOf: - type: integer - type: 'null' title: Negative Count description: Deprecated. Prefer bearish_pct with mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 62 neutral_count: anyOf: - type: integer - type: 'null' title: Neutral Count description: Deprecated. Prefer bullish_pct, bearish_pct and mentions for public analysis; retained for v1 compatibility. deprecated: true examples: - 126 total_upvotes: anyOf: - type: integer - type: 'null' title: Total Upvotes description: Total upvotes across attributed mentions examples: - 15234 unique_posts: anyOf: - type: integer - type: 'null' title: Unique Posts description: Number of unique posts examples: - 45 subreddit_count: anyOf: - type: integer - type: 'null' title: Subreddit Count description: Number of subreddits with mentions examples: - 8 trend: anyOf: - type: string enum: - rising - falling - stable - type: 'null' title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - rising bullish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bullish Pct description: Percentage of bullish mentions examples: - 45 bearish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bearish Pct description: Percentage of bearish mentions examples: - 18 period_days: anyOf: - type: integer - type: 'null' title: Period Days description: Analysis period in days examples: - 7 top_subreddits: anyOf: - items: $ref: '#/components/schemas/SubredditCount' type: array - type: 'null' title: Top Subreddits description: Top subreddits by attributed mention count daily_trend: anyOf: - items: $ref: '#/components/schemas/DailyTrendItem' type: array - type: 'null' title: Daily Trend description: Daily attributed mention breakdown for the selected period, with sentiment and buzz_score top_mentions: anyOf: - items: $ref: '#/components/schemas/TopMention' type: array - type: 'null' title: Top Mentions description: Top explicit mentions from the selected period, ranked by upvotes type: object required: - ticker - found title: StockSentiment description: Detailed sentiment analysis for a specific stock ticker. examples: - ticker: TSLA company_name: Tesla, Inc. found: true buzz_score: 87.5 mentions: 342 sentiment_score: 0.23 total_upvotes: 15234 unique_posts: 45 subreddit_count: 8 trend: rising bullish_pct: 45 bearish_pct: 18 period_days: 7 top_subreddits: - subreddit: wallstreetbets mentions: 89 count: 89 - subreddit: stocks mentions: 67 count: 67 daily_trend: - date: '2025-12-28' mentions: 52 sentiment_score: 0.31 buzz_score: 42.8 bullish_pct: 58 bearish_pct: 19 - date: '2025-12-27' mentions: 48 sentiment_score: 0.18 buzz_score: 38.5 bullish_pct: 46 bearish_pct: 21 top_mentions: - text_snippet: TSLA looking strong after... sentiment_score: 0.85 sentiment_label: positive upvotes: 1234 subreddit: wallstreetbets created_utc: '2025-12-28T10:30:00' DailyTrendItem: properties: date: type: string format: date title: Date description: Date in YYYY-MM-DD format examples: - '2025-12-28' mentions: type: integer title: Mentions description: Attributed mention count for this date, including inherited thread-context mentions examples: - 52 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score for this date examples: - 0.31 buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Buzz score for this date (0-100) examples: - 42.8 bullish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bullish Pct description: Bullish mention percentage for this date, calculated from positive sentiment-classified mentions examples: - 62 bearish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bearish Pct description: Bearish mention percentage for this date, calculated from negative sentiment-classified mentions examples: - 18 type: object required: - date - mentions title: DailyTrendItem description: Daily trend data point. SubredditCount: properties: subreddit: type: string title: Subreddit description: Subreddit name examples: - wallstreetbets mentions: type: integer minimum: 0.0 title: Mentions description: Attributed mentions in this subreddit examples: - 89 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score for this subreddit in the selected period examples: - 0.31 buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Contributor-level buzz score for this subreddit in the selected period examples: - 64.2 count: type: integer minimum: 0.0 title: Count description: Deprecated alias for mentions. Use mentions instead. deprecated: true examples: - 89 type: object required: - subreddit - mentions - count title: SubredditCount description: Subreddit contributor metrics for a stock detail response. InvalidSearchParametersErrorDetail: properties: error: type: string title: Error description: Error type identifier message: type: string title: Message description: Human-readable error message unsupported_parameters: items: type: string type: array title: Unsupported Parameters description: Search query parameters that are not supported type: object required: - error - message - unsupported_parameters title: InvalidSearchParametersErrorDetail description: Structured error detail for unsupported search query parameters. StockSearchSummary: properties: mentions: type: integer minimum: 0.0 title: Mentions description: Attributed mentions in the last 7 UTC calendar days, including inherited thread-context mentions examples: - 342 buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Buzz score over the last 7 UTC calendar days examples: - 87.5 trend: anyOf: - type: string enum: - rising - falling - stable - type: 'null' title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - rising sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score over the last 7 UTC calendar days examples: - 0.23 type: object required: - mentions - buzz_score title: StockSearchSummary description: Compact last-7-days summary attached to stock search results. HistoricalLimitErrorDetail: properties: error: type: string title: Error description: Error type identifier message: type: string title: Message description: Human-readable error message requested_days: type: integer title: Requested Days description: Number of days requested enforced_quantity: anyOf: - type: string - type: 'null' title: Enforced Quantity description: Quantity checked against the account tier limit max_days: type: integer title: Max Days description: Maximum days allowed for account tier account_type: type: string title: Account Type description: User's account type (free, hobby, professional, premium) type: object required: - error - message - requested_days - max_days - account_type title: HistoricalLimitErrorDetail description: Structured error detail for historical data limit exceeded. RedditRawMentionsResponse: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - TSLA period_days: type: integer minimum: 1.0 title: Period Days description: Lookback window used for the query examples: - 7 count: type: integer minimum: 0.0 title: Count description: Total number of matching raw rows for the requested include_inherited filter before limit and offset are applied; only the requested page is returned examples: - 1 results: items: $ref: '#/components/schemas/RedditRawMentionItem' type: array title: Results description: Raw mention rows ordered by newest first type: object required: - ticker - period_days - count - results title: RedditRawMentionsResponse description: Paginated raw Reddit mentions for a single ticker. examples: - ticker: TSLA period_days: 7 count: 1 results: - post_id: abc123 comment_id: def456 subreddit: wallstreetbets author: user123 text_snippet: TSLA looks strong into earnings... created_utc: '2026-03-20T18:42:10Z' upvotes: 381 sentiment_score: 0.62 sentiment_label: positive is_inherited: false CompareLimitErrorDetail: properties: error: type: string title: Error description: Machine-readable error code message: type: string title: Message description: Human-readable error message max_items: type: integer title: Max Items description: Maximum accepted compare items item_name: type: string title: Item Name description: Compared item type, such as ticker or symbol type: object required: - error - message - max_items - item_name title: CompareLimitErrorDetail description: Structured error detail for compare item-count violations. CompareStockItem: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - TSLA company_name: anyOf: - type: string - type: 'null' title: Company Name description: Company name from ticker_reference examples: - Tesla, Inc. buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Buzz Score (0-100). Asymptotic scaling above 50. examples: - 87.5 trend: anyOf: - type: string enum: - rising - falling - stable - type: 'null' title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). Null when no qualifying Reddit data exists. examples: - rising mentions: type: integer title: Mentions description: Total attributed mentions in period, including inherited thread-context mentions examples: - 342 unique_posts: type: integer title: Unique Posts description: Number of unique posts in period examples: - 45 subreddit_count: type: integer title: Subreddit Count description: Number of subreddits with mentions in period examples: - 8 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment (-1 to +1, null if no mentions) examples: - 0.23 bullish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bullish Pct description: Percentage of bullish mentions examples: - 45 bearish_pct: anyOf: - type: integer maximum: 100.0 minimum: 0.0 - type: 'null' title: Bearish Pct description: Percentage of bearish mentions examples: - 18 total_upvotes: type: integer title: Total Upvotes description: Total upvotes from attributed mentions examples: - 15234 trend_history: items: type: number type: array title: Trend History description: Daily buzz scores (oldest→newest). Length follows the resolved period, with a minimum of 7 values when data exists. Empty when no qualifying data exists. examples: - - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 type: object required: - ticker - buzz_score - mentions - unique_posts - subreddit_count - total_upvotes title: CompareStockItem description: Individual stock in comparison. CompareLimitError: properties: detail: $ref: '#/components/schemas/CompareLimitErrorDetail' description: Structured error details type: object required: - detail title: CompareLimitError description: Error response for compare item-count violations (HTTP 400). HTTPValidationError: properties: detail: anyOf: - items: $ref: '#/components/schemas/ValidationError' type: array - type: 'null' title: Detail description: Validation error details type: object title: HTTPValidationError description: FastAPI/Pydantic validation error response. examples: - detail: - loc: - query - days msg: Input should be greater than or equal to 1 type: greater_than_equal RateLimitErrorDetail: properties: error: type: string title: Error description: Error type identifier message: type: string title: Message description: Human-readable error message limit: anyOf: - type: integer - type: 'null' title: Limit description: Applied request limit for the window used: anyOf: - type: integer - type: 'null' title: Used description: Requests used in the current window remaining: anyOf: - type: integer - type: 'null' title: Remaining description: Requests remaining in the current window account_type: type: string title: Account Type description: Resolved account type or fallback tier reset_at: anyOf: - type: string format: date-time - type: 'null' title: Reset At description: ISO 8601 timestamp when the current window resets contact: anyOf: - type: string - type: 'null' title: Contact description: Plan or support URL for resolving the limit type: object required: - error - message - account_type title: RateLimitErrorDetail description: Structured rate-limit error detail. StockExplanationResponse: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - GME company_name: anyOf: - type: string - type: 'null' title: Company Name description: Company name from ticker_reference examples: - Gamestop Corporation - Class A explanation: type: string title: Explanation description: AI-generated explanation of why this stock is trending examples: - GME is trending due to viral GameStop social media activity and large position posts on r/Superstonk. cached: type: boolean title: Cached description: Whether the explanation was served from cache examples: - true generated_at: type: string title: Generated At description: Timezone-aware UTC ISO timestamp when explanation was generated examples: - '2026-01-13T14:30:00+00:00' model: anyOf: - type: string - type: 'null' title: Model description: LLM model used for generation examples: - meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo type: object required: - ticker - explanation - cached - generated_at title: StockExplanationResponse description: AI-generated trend explanation for a stock. examples: - ticker: GME company_name: Gamestop Corporation - Class A explanation: GME is trending due to viral GameStop social media activity and large position posts on r/Superstonk. cached: true generated_at: '2026-01-13T14:30:00+00:00' model: meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo RateLimitError: properties: detail: $ref: '#/components/schemas/RateLimitErrorDetail' description: Structured rate-limit details type: object required: - detail title: RateLimitError description: Error response for rate-limit exceeded responses. InvalidPeriodError: properties: detail: $ref: '#/components/schemas/InvalidPeriodErrorDetail' description: Structured error details type: object required: - detail title: InvalidPeriodError description: Error response for invalid period requests (HTTP 422). InvalidSearchParametersError: properties: detail: anyOf: - $ref: '#/components/schemas/InvalidSearchParametersErrorDetail' - type: string title: Detail description: Structured search-parameter error or normalized-query validation message type: object required: - detail title: InvalidSearchParametersError description: Error response for invalid search query parameters. TrendingStock: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - TSLA company_name: anyOf: - type: string - type: 'null' title: Company Name description: Company name from ticker_reference (null if not found) examples: - Tesla, Inc. buzz_score: type: number maximum: 100.0 minimum: 0.0 title: Buzz Score description: Buzz Score (0-100). Asymptotic scaling above 50. examples: - 87.5 trend: type: string enum: - rising - falling - stable title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - rising mentions: type: integer title: Mentions description: Total attributed mentions, including inherited thread-context mentions examples: - 342 unique_posts: type: integer title: Unique Posts description: Number of unique posts examples: - 45 subreddit_count: type: integer title: Subreddit Count description: Number of subreddits with mentions examples: - 8 sentiment_score: type: number maximum: 1.0 minimum: -1.0 title: Sentiment Score description: Average sentiment score (-1 bearish to +1 bullish) examples: - 0.23 bullish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bullish Pct description: Percentage of bullish mentions examples: - 45 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Percentage of bearish mentions examples: - 18 total_upvotes: type: integer title: Total Upvotes description: Total upvotes across attributed mentions examples: - 15234 trend_history: items: type: number type: array title: Trend History description: Daily buzz scores (oldest→newest). Length follows the resolved period, with a minimum of 7 values. Values 0-100. examples: - - 12.3 - 15.2 - 18.7 - 22.1 - 28.5 - 35.2 - 42.8 type: object required: - ticker - buzz_score - trend - mentions - unique_posts - subreddit_count - sentiment_score - bullish_pct - bearish_pct - total_upvotes title: TrendingStock description: Trending stock with buzz metrics from Reddit. examples: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 unique_posts: 45 subreddit_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 total_upvotes: 15234 trend_history: - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 UnsupportedAssetErrorDetail: properties: error_code: type: string title: Error Code description: Machine-readable unsupported asset error code examples: - unsupported_ticker message: type: string title: Message description: Human-readable unsupported asset message type: object required: - error_code - message title: UnsupportedAssetErrorDetail description: Structured detail for unsupported v1 stock/crypto asset requests. TopMention: properties: text_snippet: type: string title: Text Snippet description: Clean Reddit paragraph around the detected ticker mention (up to 500 chars) examples: - TSLA looking strong after... sentiment_score: type: number maximum: 1.0 minimum: -1.0 title: Sentiment Score description: Sentiment score (-1 to +1) examples: - 0.85 sentiment_label: type: string title: Sentiment Label description: Sentiment label (positive/negative/neutral) examples: - positive upvotes: type: integer title: Upvotes description: Number of upvotes examples: - 1234 subreddit: type: string title: Subreddit description: Source subreddit examples: - wallstreetbets created_utc: type: string format: date-time title: Created Utc description: ISO timestamp of creation examples: - '2025-12-28T10:30:00' type: object required: - text_snippet - sentiment_score - sentiment_label - upvotes - subreddit - created_utc title: TopMention description: Top mention by upvotes. ErrorResponse: properties: detail: type: string title: Detail description: Human-readable error message examples: - Invalid API key. type: object required: - detail title: ErrorResponse description: Standard error response. examples: - detail: Missing API key. Include 'X-API-Key' header. - detail: Invalid API key. - detail: API key has been revoked. - detail: 'Rate limit exceeded: 100 per 1 minute' ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Loc description: Location of the invalid input msg: type: string title: Msg description: Validation failure message type: type: string title: Type description: Validation error type type: object required: - loc - msg - type title: ValidationError description: FastAPI/Pydantic validation error item. examples: - loc: - query - days msg: Input should be greater than or equal to 1 type: greater_than_equal TrendingSector: properties: buzz_score: type: number maximum: 100.0 minimum: 0.0 title: Buzz Score description: Aggregated Buzz Score (0-100) examples: - 78.4 trend: type: string enum: - rising - falling - stable title: Trend description: Activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions, upvotes and subreddit breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). examples: - rising mentions: type: integer title: Mentions description: Total attributed mentions, including inherited thread-context mentions examples: - 4523 unique_tickers: type: integer title: Unique Tickers description: Number of unique tickers mentioned examples: - 34 subreddit_count: type: integer title: Subreddit Count description: Number of subreddits with mentions examples: - 15 sentiment_score: type: number maximum: 1.0 minimum: -1.0 title: Sentiment Score description: Weighted average sentiment (-1 bearish to +1 bullish) examples: - 0.28 bullish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bullish Pct description: Percentage of sentiment-labeled mentions that are bullish examples: - 54 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Percentage of sentiment-labeled mentions that are bearish examples: - 22 total_upvotes: type: integer title: Total Upvotes description: Total upvotes across attributed mentions examples: - 128450 trend_history: items: type: number type: array title: Trend History description: Daily dimension buzz scores (oldest to newest). Length follows the resolved period, with a minimum of 7 values. Every slot describes only its UTC calendar day. The live final value describes today so far and can differ from period buzz_score. Closed historical windows end at `to`. examples: - - 45.2 - 48.1 - 52.3 - 55.0 - 58.2 - 61.5 - 78.4 top_tickers: items: type: string type: array maxItems: 5 title: Top Tickers description: Top 5 tickers by mentions examples: - - NVDA - AAPL - MSFT - AMD - GOOGL sector: type: string title: Sector description: Industry sector name examples: - Technology type: object required: - buzz_score - trend - mentions - unique_tickers - subreddit_count - sentiment_score - bullish_pct - bearish_pct - total_upvotes - trend_history - top_tickers - sector title: TrendingSector description: Trending sector with aggregated buzz metrics from Reddit. examples: - buzz_score: 78.4 trend: rising mentions: 4523 unique_tickers: 34 subreddit_count: 15 sentiment_score: 0.28 bullish_pct: 54 bearish_pct: 22 total_upvotes: 128450 trend_history: - 45.2 - 48.1 - 52.3 - 55.0 - 58.2 - 61.5 - 78.4 top_tickers: - NVDA - AAPL - MSFT - AMD - GOOGL sector: Technology SearchResultItem: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - TSLA name: type: string title: Name description: Company name examples: - Tesla Inc. type: anyOf: - type: string - type: 'null' title: Type description: Asset type (Stock, ETF, etc.) examples: - Stock exchange: anyOf: - type: string - type: 'null' title: Exchange description: Stock exchange (NYSE, NASDAQ, etc.) examples: - NASDAQ sector: anyOf: - type: string - type: 'null' title: Sector description: Industry sector examples: - Consumer Discretionary country: anyOf: - type: string - type: 'null' title: Country description: Country of headquarters examples: - United States aliases: items: type: string type: array title: Aliases description: Alternative names/aliases examples: - - Tesla - Elon summary: $ref: '#/components/schemas/StockSearchSummary' description: Last-7-days Reddit summary for this asset type: object required: - ticker - name - summary title: SearchResultItem description: Individual search result item. RedditRawMentionItem: properties: post_id: anyOf: - type: string - type: 'null' title: Post Id description: Reddit post identifier examples: - abc123 comment_id: anyOf: - type: string - type: 'null' title: Comment Id description: Reddit comment identifier when the mention comes from a comment examples: - def456 subreddit: anyOf: - type: string - type: 'null' title: Subreddit description: Source subreddit examples: - wallstreetbets author: anyOf: - type: string - type: 'null' title: Author description: Public Reddit author name, if scraped examples: - deepfuckingvalue text_snippet: type: string title: Text Snippet description: Stored mention snippet (truncated at ingestion time) examples: - TSLA looks strong into earnings... created_utc: type: string format: date-time title: Created Utc description: ISO timestamp of creation examples: - '2026-03-20T18:42:10Z' upvotes: type: integer title: Upvotes description: Reddit score (upvotes) for this mention row examples: - 381 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Sentiment score (-1 to +1) examples: - 0.62 sentiment_label: anyOf: - type: string - type: 'null' title: Sentiment Label description: Sentiment label (positive/negative/neutral) examples: - positive is_inherited: type: boolean title: Is Inherited description: Whether ticker context was inherited from the parent thread instead of directly mentioned examples: - false type: object required: - text_snippet - created_utc - upvotes - is_inherited title: RedditRawMentionItem description: Raw Reddit mention row for one ticker. securitySchemes: ApiKeyAuth: type: apiKey description: 'API key for authentication. Get your API key at https://adanos.org/register. Format: `sk_live_` followed by 32 hexadecimal characters. Example: `REDACTED_STRIPE_KEY`.' in: header name: X-API-Key