openapi: 3.2.0 info: title: Adanos Market Sentiment News Stocks API version: 1.50.0 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 termsOfService: https://adanos.org/terms description: 'Operations tagged News Stocks across 2 of this provider''s published API definitions: adanos-market-sentiment-api-news-openapi.yaml, adanos-market-sentiment-api-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.adanos.org description: Production tags: - name: News Stocks description: Editorial/news sentiment with source breadth. Use `source` on supported endpoints to isolate a publisher or canonical source id. paths: /trending: get: tags: - News Stocks summary: Trending stocks description: 'Returns the stocks with the strongest news coverage 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/articles and source 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`, `source_count`: coverage volume and source breadth signals - `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` Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsTrendingStocks security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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 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 default: 0 title: Offset description: Number of items to skip for pagination - name: type in: query required: false schema: description: Filter by asset type. Omit or use 'all' for all assets. title: Type enum: - stock - etf - all type: string description: Filter by asset type. Omit or use 'all' for all assets. - name: source in: query required: false schema: description: Optional source filter (strict canonical source id or known alias) title: Source type: string description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingStock' title: Response Getnewstrendingstocks example: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 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 Getnewstrendingstocks '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/news/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/news/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/news/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())" /trending/sectors: get: tags: - News Stocks summary: Trending sectors description: 'Returns the sectors with the strongest aggregated news coverage 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/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `source_count`: coverage volume and breadth signals - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the sector result Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsTrendingSectors security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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 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 default: 0 title: Offset description: Number of items to skip for pagination - name: source in: query required: false schema: description: Optional source filter (strict canonical source id or known alias) title: Source type: string description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingSector' title: Response Getnewstrendingsectors example: - buzz_score: 78.4 trend: rising mentions: 4523 unique_tickers: 34 source_count: 15 sentiment_score: 0.28 bullish_pct: 54 bearish_pct: 22 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 Getnewstrendingsectors '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/news/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/news/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/news/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())" /trending/countries: get: tags: - News Stocks summary: Trending countries description: 'Returns the countries with the strongest aggregated news coverage 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/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `source_count`: coverage volume and breadth signals - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the country result Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsTrendingCountries security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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 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 default: 0 title: Offset description: Number of items to skip for pagination - name: source in: query required: false schema: description: Optional source filter (strict canonical source id or known alias) title: Source type: string description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingCountry' title: Response Getnewstrendingcountries example: - buzz_score: 82.3 trend: stable mentions: 8934 unique_tickers: 156 source_count: 18 sentiment_score: 0.21 bullish_pct: 48 bearish_pct: 26 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 Getnewstrendingcountries '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/news/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/news/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/news/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())" /stock/{ticker}: get: tags: - News Stocks summary: Stock Sentiment description: 'Return the detailed news sentiment report for one stock ticker. **Includes:** - `buzz_score`: normalized news activity score for the selected period - `trend`: activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source 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`, `source_count`: coverage volume and source breadth signals - `daily_trend`: daily news activity and sentiment values - `top_mentions`: representative recent articles from the selected period, with source attribution - `top_sources`: top source contributors by mention count 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: getNewsStockSentiment 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: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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/NewsStockSentiment' example: ticker: TSLA company_name: Tesla, Inc. found: true buzz_score: 87.5 mentions: 342 sentiment_score: 0.23 source_count: 8 trend: rising bullish_pct: 45 bearish_pct: 18 period_days: 7 top_sources: - source: reuters mentions: 89 count: 89 - source: benzinga mentions: 67 count: 67 daily_trend: - date: '2026-03-05' mentions: 52 sentiment_score: 0.31 buzz_score: 42.8 bullish_pct: 58 bearish_pct: 19 - date: '2026-03-04' mentions: 48 sentiment_score: 0.18 buzz_score: 38.5 bullish_pct: 46 bearish_pct: 21 top_mentions: - text_snippet: TSLA looking strong after production update... sentiment_score: 0.85 sentiment_label: positive source: reuters created_utc: '2026-03-05T10:30:00+00: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 Getnewsstocksentiment '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/news/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/news/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/news/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())" /market-sentiment: get: tags: - News Stocks summary: Market Sentiment description: 'Returns the service-level News market sentiment snapshot across all tracked stocks when you want a single News-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 News market heat, not pure bullishness. It measures how hot overall stock news flow is versus News'' own trailing 90-day baseline: - around `50` = normal news activity - higher = broader coverage than usual - lower = quieter than usual `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source 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.' operationId: getNewsMarketSentiment security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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/NewsMarketSentimentResponse' example: buzz_score: 53.8 trend: stable mentions: 1298 unique_articles: 911 source_count: 44 active_tickers: 233 sentiment_score: 0.064 positive_count: 512 negative_count: 308 neutral_count: 478 bullish_pct: 39 bearish_pct: 24 trend_history: - 49.1 - 50.4 - 48.7 - 52.2 - 55.1 - 54.3 - 53.8 drivers: - ticker: AAPL mentions: 87 buzz_score: 69.7 sentiment_score: 0.22 - ticker: NVDA mentions: 76 buzz_score: 67.3 sentiment_score: 0.31 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 Getnewsmarketsentiment '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/news/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/news/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/news/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())" /stock/{ticker}/explain: get: tags: - News Stocks summary: AI explanation description: 'Returns an AI-generated explanation for why a stock is trending in the news dataset, anchored to article evidence. **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: getNewsStockExplanation 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 Getnewsstockexplanation '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/news/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/news/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/news/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())" /compare: get: tags: - News Stocks summary: Compare stocks description: 'Compare multiple stock tickers side by side using the news sentiment dataset and buzz model. Use it when you already know the tickers and want a compact ranked table instead of full detail reports. Results are sorted by `buzz_score` descending and include `trend`, `trend_history`, `source_count`, `sentiment_score`, `bullish_pct` and `bearish_pct`. `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today).' operationId: compareNewsStocks security: - ApiKeyAuth: [] parameters: - name: from in: query required: false schema: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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 maxLength: 200 description: Comma-separated list of ticker symbols (e.g., 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/NewsCompareResponse' example: period_days: 7 stocks: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 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 source_count: 6 sentiment_score: 0.45 bullish_pct: 51 bearish_pct: 16 trend_history: - 36.5 - 41.2 - 46.8 - 53.4 - 60.3 - 66.1 - 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 Comparenewsstocks '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/news/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/news/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/news/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())" /search: get: tags: - News Stocks summary: Search stocks description: Search stocks by ticker, company name or alias in the News universe. Results prioritize exact ticker matches first, then prefixes, then name/alias matches and include a compact `summary` block for the last 7 UTC calendar days. operationId: searchNewsStocks security: - ApiKeyAuth: [] parameters: - name: q in: query required: true schema: type: string minLength: 2 maxLength: 100 description: Search query (minimum 2 non-$ characters after trimming) 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/NewsSearchResponse' 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 source_count: 8 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 source_filter: summary: Source filter is not supported on search value: detail: - type: extra_forbidden loc: - query - source msg: Extra inputs are not permitted input: wsj schema: anyOf: - $ref: '#/components/schemas/InvalidSearchParametersError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Searchnewsstocks x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/news/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/news/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/news/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())" /stock/{ticker}/mentions: get: tags: - News Stocks summary: Raw Mentions description: 'Returns raw news 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:** - article-level snippets - original timestamps - source attribution for raw rows **Notes:** - Use `from` and `to` for explicit UTC date windows - Results are ordered newest first and support deterministic `offset` + `limit` pagination - empty result sets return `200` with `results=[]`' operationId: getNewsStockMentions 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: description: Start date in YYYY-MM-DD. Inclusive UTC date. title: From type: string format: date description: Start date in YYYY-MM-DD. Inclusive UTC date. - name: to in: query required: false schema: description: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date. title: To type: string format: date 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 mentions to return default: 50 title: Limit description: Maximum number of raw mentions 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. default: 0 title: Offset description: Number of raw mention rows to skip for offset-based pagination. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/NewsRawMentionsResponse' example: ticker: AAPL period_days: 7 count: 1 results: - article_id: news-123 source: reuters url: https://example.com/article title: Apple supplier outlook lifts sentiment summary: Suppliers signaled stronger-than-expected demand... text_snippet: Suppliers signaled stronger-than-expected demand... author: Jane Doe created_utc: '2026-03-20T09:03:00Z' sentiment_score: 0.21 sentiment_label: positive 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 Getnewsstockmentions '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/news/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/news/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/news/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())" /news/stocks/v1/trending: get: tags: - News Stocks summary: Trending stocks description: 'Returns the stocks with the strongest news coverage 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/articles and source 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`, `source_count`: coverage volume and source breadth signals - `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` Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsStocksV1Trending 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 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 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. title: Type description: Filter by asset type. Omit or use 'all' for all assets. - name: source in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional source filter (strict canonical source id or known alias) title: Source description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingStock' title: Response Getnewstrendingstocks example: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 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 Getnewstrendingstocks '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsTrendingStocks servers: - url: https://api.adanos.org description: Production /news/stocks/v1/trending/sectors: get: tags: - News Stocks summary: Trending sectors description: 'Returns the sectors with the strongest aggregated news coverage 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/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `source_count`: coverage volume and breadth signals - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the sector result Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsStocksV1TrendingSectors 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 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 default: 0 title: Offset description: Number of items to skip for pagination - name: source in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional source filter (strict canonical source id or known alias) title: Source description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingSector' title: Response Getnewstrendingsectors example: - buzz_score: 78.4 trend: rising mentions: 4523 unique_tickers: 34 source_count: 15 sentiment_score: 0.28 bullish_pct: 54 bearish_pct: 22 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 Getnewstrendingsectors '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsTrendingSectors servers: - url: https://api.adanos.org description: Production /news/stocks/v1/trending/countries: get: tags: - News Stocks summary: Trending countries description: 'Returns the countries with the strongest aggregated news coverage 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/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today) - `mentions`, `unique_tickers`, `source_count`: coverage volume and breadth signals - `sentiment_score`, `bullish_pct`, `bearish_pct`: directional sentiment signals - `top_tickers`: up to 5 tickers driving the country result Use `source` only when you want the ranking filtered to one publisher or source family.' operationId: getNewsStocksV1TrendingCountries 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 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 default: 0 title: Offset description: Number of items to skip for pagination - name: source in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional source filter (strict canonical source id or known alias) title: Source description: Optional source filter (strict canonical source id or known alias) responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsTrendingCountry' title: Response Getnewstrendingcountries example: - buzz_score: 82.3 trend: stable mentions: 8934 unique_tickers: 156 source_count: 18 sentiment_score: 0.21 bullish_pct: 48 bearish_pct: 26 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 Getnewstrendingcountries '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsTrendingCountries servers: - url: https://api.adanos.org description: Production /news/stocks/v1/stock/{ticker}: get: tags: - News Stocks summary: Stock Sentiment description: 'Return the detailed news sentiment report for one stock ticker. **Includes:** - `buzz_score`: normalized news activity score for the selected period - `trend`: activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source 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`, `source_count`: coverage volume and source breadth signals - `daily_trend`: daily news activity and sentiment values - `top_mentions`: representative recent articles from the selected period, with source attribution - `top_sources`: top source contributors by mention count 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: getNewsStocksV1StockByTicker 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/NewsStockSentiment' example: ticker: TSLA company_name: Tesla, Inc. found: true buzz_score: 87.5 mentions: 342 sentiment_score: 0.23 source_count: 8 trend: rising bullish_pct: 45 bearish_pct: 18 period_days: 7 top_sources: - source: reuters mentions: 89 count: 89 - source: benzinga mentions: 67 count: 67 daily_trend: - date: '2026-03-05' mentions: 52 sentiment_score: 0.31 buzz_score: 42.8 bullish_pct: 58 bearish_pct: 19 - date: '2026-03-04' mentions: 48 sentiment_score: 0.18 buzz_score: 38.5 bullish_pct: 46 bearish_pct: 21 top_mentions: - text_snippet: TSLA looking strong after production update... sentiment_score: 0.85 sentiment_label: positive source: reuters created_utc: '2026-03-05T10:30:00+00: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 Getnewsstocksentiment '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsStockSentiment servers: - url: https://api.adanos.org description: Production /news/stocks/v1/market-sentiment: get: tags: - News Stocks summary: Market Sentiment description: 'Returns the service-level News market sentiment snapshot across all tracked stocks when you want a single News-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 News market heat, not pure bullishness. It measures how hot overall stock news flow is versus News'' own trailing 90-day baseline: - around `50` = normal news activity - higher = broader coverage than usual - lower = quieter than usual `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source 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.' operationId: getNewsStocksV1MarketSentiment 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/NewsMarketSentimentResponse' example: buzz_score: 53.8 trend: stable mentions: 1298 unique_articles: 911 source_count: 44 active_tickers: 233 sentiment_score: 0.064 positive_count: 512 negative_count: 308 neutral_count: 478 bullish_pct: 39 bearish_pct: 24 trend_history: - 49.1 - 50.4 - 48.7 - 52.2 - 55.1 - 54.3 - 53.8 drivers: - ticker: AAPL mentions: 87 buzz_score: 69.7 sentiment_score: 0.22 - ticker: NVDA mentions: 76 buzz_score: 67.3 sentiment_score: 0.31 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 Getnewsmarketsentiment '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsMarketSentiment servers: - url: https://api.adanos.org description: Production /news/stocks/v1/stock/{ticker}/explain: get: tags: - News Stocks summary: AI explanation description: 'Returns an AI-generated explanation for why a stock is trending in the news dataset, anchored to article evidence. **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: getNewsStocksV1StockByTickerExplain 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 Getnewsstockexplanation '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsStockExplanation servers: - url: https://api.adanos.org description: Production /news/stocks/v1/compare: get: tags: - News Stocks summary: Compare stocks description: 'Compare multiple stock tickers side by side using the news sentiment dataset and buzz model. Use it when you already know the tickers and want a compact ranked table instead of full detail reports. Results are sorted by `buzz_score` descending and include `trend`, `trend_history`, `source_count`, `sentiment_score`, `bullish_pct` and `bearish_pct`. `trend` is activity momentum over the current 3 UTC days vs previous 3 UTC days using mentions/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today).' operationId: getNewsStocksV1Compare 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 maxLength: 200 description: Comma-separated list of ticker symbols (e.g., 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/NewsCompareResponse' example: period_days: 7 stocks: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 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 source_count: 6 sentiment_score: 0.45 bullish_pct: 51 bearish_pct: 16 trend_history: - 36.5 - 41.2 - 46.8 - 53.4 - 60.3 - 66.1 - 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 Comparenewsstocks '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: compareNewsStocks servers: - url: https://api.adanos.org description: Production /news/stocks/v1/search: get: tags: - News Stocks summary: Search stocks description: Search stocks by ticker, company name or alias in the News universe. Results prioritize exact ticker matches first, then prefixes, then name/alias matches and include a compact `summary` block for the last 7 UTC calendar days. operationId: getNewsStocksV1Search security: - ApiKeyAuth: [] parameters: - name: q in: query required: true schema: type: string minLength: 2 maxLength: 100 description: Search query (minimum 2 non-$ characters after trimming) 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/NewsSearchResponse' 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 source_count: 8 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 source_filter: summary: Source filter is not supported on search value: detail: - type: extra_forbidden loc: - query - source msg: Extra inputs are not permitted input: wsj schema: anyOf: - $ref: '#/components/schemas/InvalidSearchParametersError' - $ref: '#/components/schemas/HTTPValidationError' title: Response 422 Searchnewsstocks x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: searchNewsStocks servers: - url: https://api.adanos.org description: Production /news/stocks/v1/stats: get: tags: - News Stocks summary: Service statistics description: 'Return high-level coverage statistics for the news stocks dataset. Includes: - total mention rows stored - distinct tickers with news data - today''s UTC mention and distinct ticker counts - total supported tickers in the reference universe' operationId: getNewsStats responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/NewsStatsResponse' 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 '422': description: Unsupported source filter query parameter content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - query - source msg: Extra inputs are not permitted type: extra_forbidden input: wsj security: - ApiKeyAuth: [] x-codeSamples: - lang: curl label: cURL source: "curl \"https://api.adanos.org/news/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/news/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/news/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())" servers: - url: https://api.adanos.org description: Production /news/stocks/v1/stock/{ticker}/mentions: get: tags: - News Stocks summary: Raw Mentions description: 'Returns raw news 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:** - article-level snippets - original timestamps - source attribution for raw rows **Notes:** - Use `from` and `to` for explicit UTC date windows - Results are ordered newest first and support deterministic `offset` + `limit` pagination - empty result sets return `200` with `results=[]`' operationId: getNewsStocksV1StockByTickerMentions 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 mentions to return default: 50 title: Limit description: Maximum number of raw mentions 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. default: 0 title: Offset description: Number of raw mention rows to skip for offset-based pagination. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/NewsRawMentionsResponse' example: ticker: AAPL period_days: 7 count: 1 results: - article_id: news-123 source: reuters url: https://example.com/article title: Apple supplier outlook lifts sentiment summary: Suppliers signaled stronger-than-expected demand... text_snippet: Suppliers signaled stronger-than-expected demand... author: Jane Doe created_utc: '2026-03-20T09:03:00Z' sentiment_score: 0.21 sentiment_label: positive 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 Getnewsstockmentions '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/news/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/news/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/news/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())" x-operation-id-source: normalized x-operation-id-original: getNewsStockMentions servers: - url: https://api.adanos.org description: Production components: schemas: NewsTopMention: properties: text_snippet: type: string title: Text Snippet description: Excerpt from the mention examples: - NVIDIA earnings beat expectations... sentiment_score: type: number maximum: 1.0 minimum: -1.0 title: Sentiment Score description: Sentiment score (-1 to +1) examples: - 0.73 sentiment_label: type: string title: Sentiment Label description: Sentiment label (positive/negative/neutral) examples: - positive source: type: string title: Source description: Source publication identifier examples: - reuters created_utc: type: string title: Created Utc description: ISO timestamp of creation examples: - '2026-03-05T12:30:00+00:00' type: object required: - text_snippet - sentiment_score - sentiment_label - source - created_utc title: NewsTopMention description: Top mention item from news. NewsCompareResponse: properties: period_days: type: integer title: Period Days description: Analysis period in days examples: - 7 stocks: items: $ref: '#/components/schemas/NewsCompareStockItem' type: array title: Stocks description: Stocks sorted by buzz_score descending type: object required: - period_days - stocks title: NewsCompareResponse description: Comparison of multiple stocks in news. examples: - period_days: 7 stocks: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 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 source_count: 6 sentiment_score: 0.45 bullish_pct: 51 bearish_pct: 16 trend_history: - 36.5 - 41.2 - 46.8 - 53.4 - 60.3 - 66.1 - 72.3 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. NewsTrendingStock: 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/articles and source 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 number of mentions examples: - 342 source_count: type: integer title: Source Count description: Number of distinct news sources 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 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 - source_count - sentiment_score - bullish_pct - bearish_pct title: NewsTrendingStock description: Trending stock with buzz metrics from news sources. examples: - ticker: TSLA company_name: Tesla, Inc. buzz_score: 87.5 trend: rising mentions: 342 source_count: 8 sentiment_score: 0.23 bullish_pct: 45 bearish_pct: 18 trend_history: - 45.2 - 52.1 - 48.7 - 67.3 - 72.1 - 78.4 - 87.5 NewsSourceCount: properties: source: type: string title: Source description: News source identifier examples: - reuters mentions: type: integer minimum: 0.0 title: Mentions description: Mentions from this source examples: - 89 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average sentiment score for this source in the selected period examples: - 0.21 buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Contributor-level buzz score for this source in the selected period examples: - 58.4 count: type: integer minimum: 0.0 title: Count description: Deprecated alias for mentions. Use mentions instead. deprecated: true examples: - 89 type: object required: - source - mentions - count title: NewsSourceCount description: News source contributor metrics for a stock detail response. 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. 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. 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. NewsMarketSentimentResponse: properties: buzz_score: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Buzz Score description: Service-wide News heat score relative to the service's trailing 90-day baseline. Around 50 = normal coverage heat, higher values = hotter-than-usual coverage. examples: - 53.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/articles and source 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: News mentions across the selected period examples: - 1298 unique_articles: type: integer minimum: 0.0 title: Unique Articles description: Exact distinct article count across the selected UTC period examples: - 911 source_count: type: integer minimum: 0.0 title: Source Count description: Exact distinct news-source breadth across the selected UTC period examples: - 44 active_tickers: type: integer minimum: 0.0 title: Active Tickers description: Number of tickers with news activity in the selected period examples: - 233 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Service-wide average news sentiment score examples: - 0.064 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: - 512 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: - 308 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: - 478 bullish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bullish Pct description: Bullish news mention percentage examples: - 39 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Bearish news mention percentage examples: - 24 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.1 - 50.4 - 48.7 - 52.2 - 55.1 - 54.3 - 53.8 drivers: items: $ref: '#/components/schemas/NewsMarketSentimentDriver' type: array title: Drivers description: Top assets by current buzz_score driving the service-level reading type: object required: - buzz_score - mentions - unique_articles - source_count - active_tickers - positive_count - negative_count - neutral_count - bullish_pct - bearish_pct title: NewsMarketSentimentResponse description: Service-level News market sentiment across all tracked stocks. examples: - buzz_score: 53.8 trend: stable mentions: 1298 unique_articles: 911 source_count: 44 active_tickers: 233 sentiment_score: 0.064 positive_count: 512 negative_count: 308 neutral_count: 478 bullish_pct: 39 bearish_pct: 24 trend_history: - 49.1 - 50.4 - 48.7 - 52.2 - 55.1 - 54.3 - 53.8 drivers: - ticker: AAPL mentions: 87 buzz_score: 69.7 sentiment_score: 0.22 - ticker: NVDA mentions: 76 buzz_score: 67.3 sentiment_score: 0.31 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. NewsSearchResponse: 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/NewsSearchResultItem' type: array title: Results description: Top matching stocks capped by the requested limit type: object required: - query - count - period_days - results title: NewsSearchResponse description: Search response for news assets. 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 source_count: 8 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. 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). NewsCompareStockItem: 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/articles and source breadth; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today). Null when no qualifying news data exists. examples: - rising mentions: type: integer title: Mentions description: Total mentions in period examples: - 342 source_count: type: integer title: Source Count description: Number of distinct news sources 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 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 - source_count title: NewsCompareStockItem description: Individual stock in news comparison. 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). NewsTrendingSector: 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/articles and source 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 mentions examples: - 4523 unique_tickers: type: integer title: Unique Tickers description: Number of unique tickers mentioned examples: - 34 source_count: type: integer title: Source Count description: Number of distinct news sources 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 bullish mentions examples: - 54 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Percentage of bearish mentions examples: - 22 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 - source_count - sentiment_score - bullish_pct - bearish_pct - trend_history - top_tickers - sector title: NewsTrendingSector description: Trending sector with aggregated buzz metrics from news. examples: - buzz_score: 78.4 trend: rising mentions: 4523 unique_tickers: 34 source_count: 15 sentiment_score: 0.28 bullish_pct: 54 bearish_pct: 22 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 NewsMarketSentimentDriver: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - AAPL mentions: type: integer minimum: 0.0 title: Mentions description: News mentions in the selected period examples: - 87 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: - 69.7 sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Average news sentiment score for this asset examples: - 0.22 type: object required: - ticker - mentions - buzz_score title: NewsMarketSentimentDriver description: Top asset contributing to the service-level News market sentiment. 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. NewsStockSentiment: 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 mentions in the selected period 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 source_count: anyOf: - type: integer - type: 'null' title: Source Count description: Number of sources 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/articles and source 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_sources: anyOf: - items: $ref: '#/components/schemas/NewsSourceCount' type: array - type: 'null' title: Top Sources description: Top sources by mention count daily_trend: anyOf: - items: $ref: '#/components/schemas/DailyTrendItem' type: array - type: 'null' title: Daily Trend description: Daily mention breakdown for the selected period, with sentiment and buzz_score top_mentions: anyOf: - items: $ref: '#/components/schemas/NewsTopMention' type: array - type: 'null' title: Top Mentions description: Top news mentions from the selected period, ranked by recency type: object required: - ticker - found title: NewsStockSentiment description: Detailed sentiment analysis for a specific stock ticker from news mentions. examples: - ticker: TSLA company_name: Tesla, Inc. found: true buzz_score: 87.5 mentions: 342 sentiment_score: 0.23 source_count: 8 trend: rising bullish_pct: 45 bearish_pct: 18 period_days: 7 top_sources: - source: reuters mentions: 89 count: 89 - source: benzinga mentions: 67 count: 67 daily_trend: - date: '2026-03-05' mentions: 52 sentiment_score: 0.31 buzz_score: 42.8 bullish_pct: 58 bearish_pct: 19 - date: '2026-03-04' mentions: 48 sentiment_score: 0.18 buzz_score: 38.5 bullish_pct: 46 bearish_pct: 21 top_mentions: - text_snippet: TSLA looking strong after production update... sentiment_score: 0.85 sentiment_label: positive source: reuters created_utc: '2026-03-05T10:30:00+00:00' NewsSearchSummary: properties: mentions: type: integer minimum: 0.0 title: Mentions description: News mentions in the last 7 UTC calendar days 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/articles and source 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: NewsSearchSummary description: Compact last-7-days summary attached to news search results. 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. NewsTrendingCountry: 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/articles and source 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 mentions examples: - 4523 unique_tickers: type: integer title: Unique Tickers description: Number of unique tickers mentioned examples: - 34 source_count: type: integer title: Source Count description: Number of distinct news sources 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 bullish mentions examples: - 54 bearish_pct: type: integer maximum: 100.0 minimum: 0.0 title: Bearish Pct description: Percentage of bearish mentions examples: - 22 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 - source_count - sentiment_score - bullish_pct - bearish_pct - trend_history - top_tickers - country title: NewsTrendingCountry description: Trending country with aggregated buzz metrics from news. examples: - buzz_score: 82.3 trend: stable mentions: 8934 unique_tickers: 156 source_count: 18 sentiment_score: 0.21 bullish_pct: 48 bearish_pct: 26 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 NewsSearchResultItem: 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/NewsSearchSummary' description: Last-7-days news summary for this asset type: object required: - ticker - name - summary title: NewsSearchResultItem description: Individual news search result item. NewsRawMentionItem: properties: article_id: anyOf: - type: string - type: 'null' title: Article Id description: Article identifier when available examples: - news-123 source: type: string title: Source description: Source publication identifier examples: - reuters url: anyOf: - type: string - type: 'null' title: Url description: Article URL examples: - https://example.com/article title: anyOf: - type: string - type: 'null' title: Title description: Article title examples: - Apple supplier outlook lifts sentiment summary: anyOf: - type: string - type: 'null' title: Summary description: Article summary examples: - Suppliers signaled stronger-than-expected demand... text_snippet: type: string title: Text Snippet description: Stored article snippet (truncated at ingestion time) examples: - Suppliers signaled stronger-than-expected demand... author: anyOf: - type: string - type: 'null' title: Author description: Public article author/byline when available examples: - Jane Doe created_utc: anyOf: - type: string format: date-time - type: 'null' title: Created Utc description: ISO timestamp of creation when available examples: - '2026-03-20T09:03:00Z' sentiment_score: anyOf: - type: number maximum: 1.0 minimum: -1.0 - type: 'null' title: Sentiment Score description: Sentiment score (-1 to +1) examples: - 0.21 sentiment_label: anyOf: - type: string - type: 'null' title: Sentiment Label description: Sentiment label (positive/negative/neutral) examples: - positive type: object required: - source - text_snippet title: NewsRawMentionItem description: Raw news mention row for one stock ticker. 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' NewsRawMentionsResponse: properties: ticker: type: string title: Ticker description: Stock ticker symbol examples: - AAPL 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 before limit and offset are applied; only the requested page is returned examples: - 1 results: items: $ref: '#/components/schemas/NewsRawMentionItem' type: array title: Results description: Raw news mention rows ordered by newest first type: object required: - ticker - period_days - count - results title: NewsRawMentionsResponse description: Paginated raw news mentions for a single stock ticker. examples: - ticker: AAPL period_days: 7 count: 1 results: - article_id: news-123 source: reuters url: https://example.com/article title: Apple supplier outlook lifts sentiment summary: Suppliers signaled stronger-than-expected demand... text_snippet: Suppliers signaled stronger-than-expected demand... author: Jane Doe created_utc: '2026-03-20T09:03:00Z' sentiment_score: 0.21 sentiment_label: positive 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 NewsStatsResponse: properties: total_mentions: type: integer title: Total Mentions description: Rollup-backed all-time news 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 news mentions examples: - 65 mentions_today: type: integer title: Mentions Today description: News mention rows created since today's UTC midnight default: 0 examples: - 342 unique_tickers_today: type: integer title: Unique Tickers Today description: Unique tickers with news mention rows since today's UTC midnight 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: NewsStatsResponse description: News service statistics. examples: - total_mentions: 12833 unique_tickers: 65 mentions_today: 342 unique_tickers_today: 21 supported_tickers: 35000 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 x-refined-from: - adanos-market-sentiment-api-news-openapi.yaml - adanos-market-sentiment-api-openapi.json