All notable changes to the Adanos Market Sentiment API.
Format: Keep a Changelog
Versioning: Semantic Versioning
If-None-Match / 304 Not Modified support for hot /trending and detail reads on News Stocks, Reddit Stocks, Reddit Crypto, X/Twitter Stocks, and Polymarket Stocks.Cache-Control TTLs with endpoint behavior: /trending uses private, max-age=60, /stats uses private, max-age=300, stock/token detail and /compare use private, max-age=30, /search uses private, max-age=15, and other protected reads keep private, max-age=60.tickers sample list from Reddit Stocks GET /reddit/stocks/v1/stats./stats.mentions_today and /stats.unique_tickers_today are UTC current-day counters over all reddit_mentions rows, including post mentions, comment mentions, and inherited thread-context mentions./reddit/stocks/v1/stats.tickers; use /reddit/stocks/v1/search, /reddit/stocks/v1/trending, or ticker-scoped endpoints depending on the workflow.mentions_today and unique_tickers_today for stock stats, plus unique_tokens_today for Reddit Crypto.GET /x/stocks/v1/stats now reports all stored x_mentions rows and all tickers with X mentions, matching the Reddit Stocks /stats coverage semantics instead of resetting at 00:00 UTC. The tickers list is now the first 50 symbols sorted alphabetically rather than the top 100 current-day symbols by count.validation_rate from the X/Twitter Stocks /stats response./stats.total_appearances, /stats.unique_tickers, and /stats.tickers as dataset-wide counters. Use analytics endpoints such as /x/stocks/v1/trending?days=1 for current-day activity./stats.validation_rate; use ticker detail or compare endpoints when Reddit/X validation context is needed./mentions endpoints for Reddit Stocks, X/Twitter Stocks, News Stocks, Reddit Crypto, and Polymarket Stocks now support offset pagination alongside the existing limit parameter.offset keep the previous first-page behavior; clients can page with offset + len(results) < count to infer more rows./mentions endpoints now allow Professional accounts to request up to 365 days of live raw mention history.top_mentions now prefer higher-upvote mentions before recency when selecting representative mention snippets./mentions remains capped at 90 days.days<=90 continue to work unchanged.days as UTC calendar days including the current UTC day so far, instead of rolling raw lookback windows.days > 1 can return different counts, rankings, and top_mentions than the previous rolling-window contract.GET /reddit/stocks/v1/trending/sectors and GET /reddit/stocks/v1/trending/countries) now use UTC calendar-day metrics for displayed counts and scores while keeping trend on rolling last-24h vs previous-24h activity windows.bullish_pct and bearish_pct now use sentiment-labeled mentions (positive + negative + neutral) as the denominator instead of total mention volume.1.29.0 release on 2026-04-23; there is no deprecation overlap window for the old rolling-window analytics contract.days=1 on analytics endpoints as today 00:00 UTC through now; do not assume it means the last 24 hours.days=1 analytics responses to reset at the UTC midnight boundary; edge-cached trending responses can reflect the previous calculation for up to 60 seconds because these endpoints use Cache-Control: public, max-age=60.mentions, buzz_score, trend_history, rankings, and detail top_mentions to shift on Reddit Stocks, Reddit Crypto, X, and News analytics responses because the window now follows UTC calendar-day boundaries.trend field still compares rolling last-24h vs previous-24h activity even though the main analytics window now follows UTC calendar-day boundaries./mentions endpoints are unchanged and still use their live raw-data retention windows.buzz_score, rank ordering, and trend history values to shift for Reddit Crypto symbols dominated by one or a few authors, even though response shapes stay unchanged.1.28.0 as the new baseline for Reddit Crypto buzz analytics.author_distribution is available, with scaled unique_authors retained only as a fallback.buzz_score, rank ordering, and trend history values to shift for Reddit/X tickers dominated by one or a few authors, even though response shapes stay unchanged.days=1 live trending now also feeds daily_trend into calculate_x_buzz, so short-window score deltas include that trend component instead of a hardcoded zero-trend path.author_distribution rollups now fall back to a conservative unique_authors floor, so historical unique_authors can increase while HHI-based diversity temporarily drops out until those rollups are complete.1.27.0 as the new baseline for Reddit/X buzz analytics.GET /polymarket/stocks/v1/stock/{ticker}/mentions endpoint returning raw Polymarket market snapshot rows for one ticker within the live raw-data retention window./v1 response compatibility aliases from public OpenAPI schemas and API responses:total_mentions detail aliases were removed from Reddit Stocks, X/Twitter Stocks, News Stocks, and Reddit Crypto detail endpoints; use mentions.
- sentiment daily trend and compare aliases were removed across Reddit Stocks, X/Twitter Stocks, News Stocks, Polymarket Stocks, and Reddit Crypto; use sentiment_score.
- upvotes compare aliases were removed from Reddit Stocks, X/Twitter Stocks, and Reddit Crypto; use total_upvotes.
total_mentions with mentions in detail responses for /reddit/stocks/v1/stock/{ticker}, /x/stocks/v1/stock/{ticker}, /news/stocks/v1/stock/{ticker}, and /reddit/crypto/v1/token/{symbol}.daily_trend[].sentiment with daily_trend[].sentiment_score in stock/token detail responses across Reddit Stocks, X/Twitter Stocks, News Stocks, Polymarket Stocks, and Reddit Crypto.stocks[].sentiment or tokens[].sentiment with sentiment_score in compare responses across Reddit Stocks, X/Twitter Stocks, News Stocks, Polymarket Stocks, and Reddit Crypto.stocks[].upvotes or tokens[].upvotes with total_upvotes in Reddit Stocks, X/Twitter Stocks, and Reddit Crypto compare responses.1.21.0 on 2026-03-19 and removed in 1.25.0 on 2026-04-20. The URL namespace remains /v1; the API release line treats removal of previously deprecated /v1 compatibility aliases as a breaking minor release and records it explicitly in this changelog.top_mentions now returns up to 50 top market snapshots active during the selected UTC-day period, including the current UTC day so far, ranked by trade activity, 24h volume, liquidity, and recency.top_mentions no longer represents a top-10 latest active-market snapshot list; longer days windows can include markets that were active inside the selected UTC-day period but are not necessarily live now.positive_count, negative_count, bullish_pct, and bearish_pct now use outcome-aware market direction instead of treating raw YES > 0.5 as always bullish.GET /reddit/stocks/v1/stock/{ticker}/mentions
- GET /x/stocks/v1/stock/{ticker}/mentions
- GET /news/stocks/v1/stock/{ticker}/mentions
- GET /reddit/crypto/v1/token/{symbol}/mentions
count and results, no offset, and count reflecting total matches before limit.include_inherited=true.GET /x/stocks/v1/stock/{ticker}/explain endpoint with the same cached AI explanation response shape as Reddit and News.10, News 5, and X/Twitter 50.GET /market-sentiment endpoint on all public platform namespaces:/reddit/stocks/v1/market-sentiment
- /x/stocks/v1/market-sentiment
- /news/stocks/v1/market-sentiment
- /polymarket/stocks/v1/market-sentiment
- /reddit/crypto/v1/market-sentiment
trend_history, and top drivers ranked by current asset buzz_score.market-sentiment uses a hybrid read path in V1: completed-day history comes from platform *_daily_stats, while the current live slot is computed from raw mentions/live snapshots for parity with existing trending endpoints.trend_history now use the same calendar-day semantics as Reddit: completed UTC days stay intact and today's live buzz is appended in the final slot instead of overwriting the last completed day.trend_history consistently as completed UTC calendar days plus the current live-day value.yes, yep, and ok now stay neutral instead of inheriting or drifting positive on their own.covered calls, cash secured puts, and straddles are handled as contextual instead of blindly directional.trend, trend_history, sentiment percentages, and platform-specific volume metrics.sentiment -> sentiment_score, upvotes -> total_upvotes.
sentiment_score, while keepingsentiment as a deprecated /v1 alias.
mentions, while keeping legacy total_mentions as a deprecated /v1 alias.
is_validated is not part of /x/stocks/v1/compare, while remaining available on X trending and X stock-detail responses.summary blocks and explicit days / limit query parameters.$ query characters after trimming; results are limited to the top ranked matches for the query.mention_count or trade_count; platform activity metrics now live inside results[].summary.api_keys.newsletter_unsubscribed_at, preserved across recovery/key rotation flows.buzz_score was recalibrated to be activity-first: trade_count now carries the most weight, market_count stays the main breadth signal, and total_liquidity is treated as a secondary windowed depth signal instead of dominating the rank.total_liquidity as a windowed aggregated liquidity signal over the selected days period, not a live snapshot.unique_traders as a best-effort participation signal that can overcount across markets and days.top_mentions on /polymarket/stocks/v1/stock/{ticker} now uses a hybrid relevance order: traded markets first, then trade_count, then volume_24h, then liquidity, so inactive but deep markets no longer dominate the detail view.null instead of price-derived sentiment when no trades exist in the relevant period, day, or market snapshot.null sentiment contract consistently.source is no longer accepted on stock, stock/{ticker}/explain, search, compare, and stats, and unsupported usage now returns 422 instead of being silently ignored.source parameters from public helper methods and endpoint metadata.Professional now shows $249/mo./news/stocks/v1 with endpoint parity:GET /trending
- GET /trending/sectors
- GET /trending/countries
- GET /stock/{ticker}
- GET /stock/{ticker}/explain
- GET /search
- GET /compare
- GET /stats
- GET /health (public)
worker --mode=news) with dedicated heartbeat/job-state tracking.news_mentions
- news_daily_stats
/openapi.news.yaml.client.news.*
- TypeScript SDK client.news.*
- CLI platform news-stocks for trending, search, compare, stats, health
news-stocks.source_count, top_sources) instead of Reddit-only fields like unique_posts, total_upvotes, and top_subreddits.trend_history and daily buzz behavior now follow the Reddit daily-stats model, with the latest value computed live for parity.worker-news, News volume in daily ops reporting, and a dedicated deploy workflow.worker_job_state./reddit/crypto/v1 with endpoint parity:GET /trending
- GET /token/{symbol}
- GET /compare
- GET /search
- GET /stats
- GET /health (public)
worker --mode=crypto-reddit) with dedicated heartbeat (worker_type='crypto_reddit').crypto_reddit_mentions
- crypto_reddit_daily_stats
- crypto_reference
- crypto_unknown_coins
/polymarket/stocks/v1/trending
- /polymarket/stocks/v1/trending/sectors
- /polymarket/stocks/v1/trending/countries
- /polymarket/stocks/v1/stock/{ticker}
- /polymarket/stocks/v1/compare
mentions, total_upvotes, total_mentions with:trade_count
- market_count
- unique_traders (nullable where source data is unavailable)
volume_24h from trending and compare responses.daily_trend[] now uses trade_count (instead of mentions).top_mentions[] now includes trade_count and sentiment_score while keeping market-level volume_24h./polymarket/stocks/v1 with Reddit/X-parity endpoint set:GET /trending
- GET /trending/sectors
- GET /trending/countries
- GET /stock/{ticker}
- GET /search
- GET /compare
- GET /stats
- GET /health (public)
--mode=polymarket with hourly ingest and daily maintenance window.polymarket_mentions (append-only snapshots)
- polymarket_daily_stats (daily API read model)
worker-polymarket.polymarket.openapi.polymarket.yaml.worker_type='polymarket'.trend, bullish_pct, bearish_pct fields on /stock/{ticker} endpoint (Reddit + X)buzz_score in daily_trend items for historical buzz visibility (Reddit + X)SENTIMENT_USE_ENSEMBLE config flag for runtime toggle (production compose: disabled for API only)analyze_sentiment_batch()POST /auth/v1/key-token - Create one-time token for secure API key delivery (Bearer auth)GET /auth/v1/key-token/{token} - Redeem token to retrieve API key (no auth, token is auth)/) response docs.swagger and docs.redoc replaced with docs.api_referencePOST /auth/v1/provision - Internal API key provisioning (Bearer auth)external_order_id, source/auth/v1/register (old /reddit/stocks/v1/register removed)trend_history field in /reddit/stocks/v1/trending response - daily buzz scores (length = max(days, 7))type query parameter for /reddit/stocks/v1/trending - filter by stock, etf, or allf915c0f)6148ca4)GOOGL → GOOG) (fdaa403)GET /reddit/stocks/v1/trending/sectors - Trending by GICS sector (6876724)GET /reddit/stocks/v1/trending/countries - Trending by country (6876724)GET /reddit/stocks/v1/stock/{ticker}/explanation - AI trend explanations (a05d7be)sector and country fields in /search response (48b5646)abc76df)bb37679)5926828)983fc55)offset parameter for pagination on /trending endpoints (5e8a300)/openapi.yaml (41be106)c68946b)6da430d)4cb7866)stock_* → reddit_* (a3eb28b)/x/stocks/v1 (39c1735)GET /x/stocks/v1/trending - Trending stocks from Grok
- GET /x/stocks/v1/stock/{ticker} - X data for ticker
- GET /x/stocks/v1/stats - Service statistics
- GET /x/stocks/v1/health - Health check
api.adanos.org/reddit/stocks/v1 (c1696c3)8c7ca64)65beeb4)6ee12df)177ca90)company_name field in API responses (958b4b0)617ee3f)b28a79a)80c6a20)free, premium (6021563)4e261e9)$TICKER detection in posts (9b938a3)c87a5ad)GET /reddit/stocks/v1/trending - Trending stocks by buzz score
- GET /reddit/stocks/v1/stock/{ticker} - Stock sentiment report
- GET /reddit/stocks/v1/search - Search by ticker/name
- POST /reddit/stocks/v1/register - Self-service API key registration
- GET /reddit/stocks/v1/health - Health check