- Congress trade endpoints return pages of trades. Each response adds
page, the page returned, andtotal_pages, the number of pages for the given filters andlimit. The maximumlimitis 500 instead of 200./congress/recent-tradesand/congress/late-reportsadd thepageparameter./congress/congress-traderalready hadpage.
- Futures prices come formatted as CME quotes them, for example 106’025 for ZN and 425’2 for corn, with the fractions CME’s security definition lists for the contract.
main_fractionandsub_fractionare those fractions and are null when the prices show decimals./futures/flowaddsprice_display,nbbo_bid_display,nbbo_ask_display,quote_bid_display,quote_ask_display,main_fractionandsub_fraction./futures/{contract}/tradesadds the same fields andtick_size.
- Added Trading Journal endpoints that return the Trading Journal accounts of the user that owns the API token. Every active API token can call them. Accounts are linked in the Trading Journal on unusualwhales.com, which needs a Max or professional plan, so a token whose owner has linked no accounts gets empty results.
accountlimits a request to one account byidor exactname./portfolio/accounts: accounts with broker, sync status, last date with data and latest total value./portfolio/holdings: open positions with weights, unrealized P&L, sectors and options risk./portfolio/performance: time-weighted returns, P&L, monthly returns and risk metrics overrange./portfolio/trades: closed trades betweenfromandto, filtered bytickerandkindand sorted bysort./portfolio/edge: win rate, profit factor and expectancy overall and per type, side, ticker, strategy, holding period, entry condition and hour./portfolio/ticker/:ticker: positions and trade results in one ticker./portfolio/catalysts: earnings and ex-dividend dates in the next 30 days for holdings./portfolio/rank: Trade Rank per period.
- Added MCP tools
get_my_accounts,get_my_holdings,get_my_performance,get_my_trades,get_my_edge,get_my_ticker,get_my_catalystsandget_my_rankfor the data of these endpoints. - Added
next_earnings_confirmedto/stock/{ticker}/info. It is true if the company confirmednext_earnings_dateand false if the date is an estimate.
/stock/{ticker}/option-contractsreturnsdelta,gamma,theta,vegaandrhoas numbers instead of strings, for everydate.
exchangein/stock-directory/ticker-exchangescan betexas_stock_exchangefor tickers whose primary listing is on the Texas Stock Exchange.- Added the
@equityscope to the query language, also spelled@equities. It selects common stocks and ADRs, the same as@stock+adr, while@stockstill selects common stocks only. It works in:inputonPOST /alerts/configuration- the
queryparameter of/option-trades - the
queryparameter of/screener/stocks
- Added cursor pagination to
/insider/transactions. Each response includescursor.next, which is null on the last page. Pass it ascursorto fetch the next page.pageis deprecated on this endpoint and will be removed. - Added
min_volume_avg_7_day_volume_ratio,max_volume_avg_7_day_volume_ratio,min_volume_avg_30_day_volume_ratioandmax_volume_avg_30_day_volume_ratioto three endpoints. They filter on the contract’s volume for the day divided by the underlying’s average daily option volume over the previous 7 or 30 trading days, calls plus puts, as of the row’s trading date. For example,min_volume_avg_30_day_volume_ratio=0.5returns contracts whose volume is at least half of the underlying’s average daily option volume. A row does not match while the underlying has no average volume for that date. - Added
volume_avg_7_day_volume_ratioandvolume_avg_30_day_volume_ratioto the query language for theoption_tradealert type, to/alerts/query/grammar?target=option_tradeand to thequeryparameter of/option-trades. Option trade alert configurations onPOST /alerts/configurationaccept the samemin_andmax_filters. - Added
/predictions/ticker/:ticker, the open prediction markets about a stock ticker, such as “Will Apple (AAPL) close above $270?” or “Apple Vision Pro 2 released before 2027?” for AAPL. Each market has anevent_type(price,market_cap,earnings,product_release,corporateorother), andevent_types=price,earningsfilters on it.view=eventsreturns one row per event with the number of its matching markets, andinclude_closed=trueincludes closed markets. - Added
avg30d_volume, with the aliasesavg30d_stock_volumeandavg30d_share_volume, to the query language ininputonPOST /alerts/configurationfor theoption_trade,option_contract,option_contract_interval,flow_alertandmulti_leg_tradealert types, and to/alerts/query/grammarfor these targets. It is the 30-day average daily stock volume of the underlying in shares, rounded down and fixed for the trade’s trading date, from the same source asavg30d_volumeonstock_trade. It works in comparisons and arithmetic, e.g.where abs(delta_impact) * 20 > avg30d_stock_volume. Thequeryparameter of/option-tradesaccepts it as well. A comparison with it does not match while the underlying has no 30-day average volume for the trading date.
- A
limitthat is not a whole number from 1 to 500 now returns HTTP 400 with the codeinvalid_query_parameterson three endpoints. These requests used to return a different number of rows than requested, or an HTTP 500. On Flow Alerts the default is 50 and the maximum is 500, which is what the endpoint already served.
- Added
/sec-filings, the REST counterpart of thesec:filingswebsocket channel. It returns SEC EDGAR filings newest first and filters byticker,form,start_dateandend_date. Pages use a cursor: passnext_cursorfrom a response ascursorto get the next page. - Added
ticker_open_int, aliasticker_oi, to the query language ininputonPOST /alerts/configurationfor theoption_trade,option_contract,option_contract_interval,flow_alertandmulti_leg_tradealert types, and to/alerts/query/grammarfor these targets. It is the open interest of every option contract on the underlying, calls plus puts, from the latest published open interest. This iscall_open_interestplusput_open_interestfrom/stock/:ticker/options-volume. It works in comparisons and arithmetic, e.g.where ticker_open_int < 50000orwhere size > ticker_open_int * 0.02. A comparison with it does not match while the underlying has no published open interest. - Added
ticker_avg_7_day_volume(aliasticker_avg_7d_vol) andticker_avg_30_day_volume(aliasticker_avg_30d_vol) to the query language for theoption_tradealert type and to/alerts/query/grammar?target=option_trade. They are the average daily option volume of the underlying over the previous 7 and 30 trading days, calls plus puts, from the latest open interest update. - The
queryparameter of/option-tradesacceptsticker_open_int,ticker_avg_7_day_volumeandticker_avg_30_day_volume. Each trade carries the values of its underlying at the time it was published, so a comparison with them does not match trades published before this release. - The Kafka topic
all-option-tradescarriesticker_open_interest,ticker_avg_7_day_volumeandticker_avg_30_day_volumewith the same values, each absent while unknown.ticker-oi-statscarriesavg_30_day_call_volumeandavg_30_day_put_volume.
- The
x-uw-req-per-minute-remainingandx-uw-req-per-minute-resetresponse headers are deprecated and will be removed after 2026-12-31. They always hold1000000and60000and do not reflect a limit, because the API has no per-minute cap. The limits that apply are described under Rate limits. - With
include_agg_trades=true,/option-tradesnow returns a rolled up transaction for thereport_flag[]valuesintermarket_sweep,cross_tradeandfutures_floorwhen any of the transactions it rolls up carries that flag, and leaves those transactions out of the response. Before, every one of them had to carry the flag, so a rolled up transaction that mixed sweeps with other transactions did not matchreport_flag[]=intermarket_sweepand its sweeps were returned one by one. Fornormal, a rolled up transaction matches when any of its trade codes is atrade_codes[]value other than a floor, cross or sweep code. The MCP toolget_option_tradesmatches rolled up transactions the same way whenadd_agg_tradesis true.
- Added
min_created_atandmax_created_atto/crypto/list_tokens. Both take an RFC 3339 time and include tokens created exactly at that time. Tokens whosecreated_atisnullare left out when either filter is set.
- Added
created_atto/crypto/list_tokensand/crypto/token/:token, the time the token was created on chain in RFC 3339. It isnullwhen the creation time is not known. - Added
is_low_qualityto/crypto/list_tokensand/crypto/token/:token. It istruefor a token with fewer than 50 holders, a market cap of zero, or a market cap above $10,000,000 per holder, which is often a fake or spam token./crypto/list_tokenstakeshide_low_quality=trueto leave these tokens out. - Added
is_large_swapto/crypto/trades. It istruefor a swap of $50,000 or more in USD, and alwaysfalsefor liquidity adds and removes.
/option-tradesand the MCP toolget_option_tradesnow support ordering by premium and size. Setordertopremiumorsize, andorder_directiontoascordesc.
/crypto/token/:tokenand/crypto/list_tokensnow computeprice,price_change_24handvolume_24hfrom every pool the token trades in, not only its USDT pool.volume_24his in USD, andprice_change_24his a percent change over the last 24 hours, ornullwhen the price 24 hours ago is unknown. On/crypto/list_tokens,market_capandfdvare now the circulating and total supply timesprice, as on/crypto/token/:token, and tokens that traded in the last 24 hours are listed even without a USDT pool.
- Added
min_capped_pnlandmax_capped_pnlto/option-trades/multi-leg. They filter on the larger absolute value ofmax_lossandmax_profit, so a long and a short strangle of the same size match the same filter. Both acceptabs()like the other multi-leg filters, e.g.min_capped_pnl=abs(100000)is the same asmin_capped_pnl=100000. Multi-expiration strategies such as calendars and diagonals have no computedmax_lossormax_profitand are excluded. The MCP toolget_multi_tradesaccepts both filters.
- Added the
call_spread_collarandput_spread_collarstrategies to/option-trades/multi-leg, in thestrategyfield and thestrategyfilter. A short put with a long call spread is acall_spread_collar, and a long put spread with a short call is aput_spread_collar. These three-leg structures were returned asrisk_reversalbefore, and earlier trades keep that strategy. - Stock-tied multi-leg trades (trade codes
tlat,tlet,tlctandtlft) are now grouped into strategies on/option-trades/multi-legwhen two or more option legs trade together. Theircodefield holds the stock-tied trade code. - Added
min_notionaltofutures_printalert configurations onPOST /alerts/configuration, the smallest notional in USD a print must reach, price × size × multiplier. It combines withmin_size, and one of the two is required. A print of a contract without a usable multiplier carries no notional and never satisfies a notional floor. Triggered alerts carrynotionalandmultiplierinmeta. Rates and grains notionals use the corrected multipliers from the first security definition sync after the 2026-10-21 release. - Added the
futures_sweepalert type toPOST /alerts/configuration: a CME match event that filled several price levels on one contract,"contract": "NQZ6", or on every contract of a product,"product": "NQ".min_levelsis 2 by default and at least 2,min_sizeandmin_notionalare optional floors,sidelimits it tobuy,sellornoneandcontractstooutrights,spreadsorall, outrights by default. An event alerts each configuration once, at most once per minute per configuration and scope, and the alert is never paused. Triggered alerts carryside,levels,size,prints,low,high,notionalandexecuted_atinmeta. Needs the Advanced API tier or the futures add-on. - Added the
futures_blockalert type toPOST /alerts/configuration: a new CME block trade on one contract,"contract": "ESZ6", or on every contract of a product,"product": "ES", withmin_qtyandmin_notionalas optional floors. Multi-leg blocks are left out unless"multi_leg": true, and they carry no notional, so a notional floor never matches one. Updates and deletes of a block never alert. Each block alerts once, at most once per minute per configuration and scope, and the alert is never paused. Triggered alerts carryprice,qty,notional,legs,quote_bid,quote_ask,reported_atandtrade_dateinmeta. Needs the Advanced API tier or the futures add-on. - Added the
futures_rollalert type toPOST /alerts/configuration: the lead contract of a product changed, for one product,"product": "ES", or for every product,"product": "all". The lead is the contract with the highest 5-day rolling volume, so it can flip back, which alerts again. One alert per roll per configuration, never paused. Triggered alerts carryproduct,from,toandtrading_dateinmeta. Needs the Advanced API tier or the futures add-on. - Added the
futures_expiryalert type toPOST /alerts/configuration: one contract,"contract": "ESZ6", or the nearest unexpired contract of a product,"product": "ES".days_beforelists the days before expiry that alert, 1, 3 and 7 by default and each once per contract, with a day the check missed alerting on its next run, and"settlement": truealso alerts once the final settlement price is published. Checked hourly. Triggered alerts carryexpiry,trigger,daysandsettlementinmeta. Needs the Advanced API tier or the futures add-on. - The alert listing and configuration endpoints filter all futures alert types with
noti_types[]=futures_price,futures_print,futures_sweep,futures_block,futures_roll,futures_expiry.
- Added
2mand3mtocandle_sizeon/stock/:ticker/ohlc/:candle_size. The MCP toolsget_ticker_candles_by_range,get_ticker_indicator_seriesandget_ticker_indicator_eventsaccept the same values inrange. - Added
repeatandrearm_tickstoprice_targetandfutures_pricealert configurations onPOST /alerts/configuration. With"repeat": truethe configuration is not paused after a trigger. Each target re-arms once the price has come back inside it byrearm_ticksticks, 2 by default and at least 1, never less than 0.1% of the target, and the next crossing triggers again, at most once a minute per target. After a restart, a target the price already sits beyond waits for the price to come back inside before it can trigger. - Added the
futures_printalert type toPOST /alerts/configuration. Theconfignames one contract,"contract": "ESZ6", or a product,"product": "ES", which matches every contract of the product, plusmin_sizein contracts.sidelimits it tobuy,sellornoneprints andcontractstooutrights,spreadsorall, outrights by default. The alert fires on every matching print, at most once per minute per configuration and scope, and is never paused. Triggered alerts carryprice,sizeandsideinmeta. Likefutures_price, it needs the Advanced API tier or the futures add-on. - Futures display factors are versioned per contract symbol, because CME reuses a
security_idfor a new contract once the previous one expires./futures/display_factorsreturns the current definition of eachsecurity_id. It takeshistory=trueto include closed definitions andafter_symbolnext toafter_idas the cursor./futures/display_factors/:security_idreturns the current definition and takessymbolfor another one.- Added
/futures/display_factors/:security_id/history, every definition of asecurity_id, oldest first. - Display factor items carry
valid_fromandvalid_to.valid_tois null on the current definition.
/futures/flowprints carryevent_ts_ns,event_levelsandevent_sizeonce their CME match event is complete, andsweeps_only=truereturns only prints of events that filled at least two price levels.
- Starter-only accounts cannot create GEX, futures-price or prediction alerts through
POST /alerts/configuration. Independent qualifying subscriptions or permissions retain access. - Request-limit errors now describe both daily and billing-month resets instead of assuming every allowance resets daily.
- Full Tape now returns HTTP 403 for dates more than 30 calendar days old while an API subscription has status
trialing.
- Added
combosto/predictions/user/:user_id. It values the user’s Polymarket Combos, whichpositionsleaves out:count,settled_countandpnl, the PnL in USD before fees. Combos that have not settled yet count at cost. It is null for users with more than 20,000 Combo positions. - Added the
futures_pricealert type toPOST /alerts/configuration. Theconfignames either one CME futures contract,"contract": "ESZ6", or a product,"product": "ES", plusprice_target_upper,price_target_loweror both, in the contract’s display price. A product alert follows the product’s current lead contract, which is the outright contract with the highest 5-day rolling volume, so it rolls on its own. The alert fires on the first print at or through a target and the configuration is then paused. Triggered alerts carry the product or contract insymboland the contract that traded inmeta.sym, andnoti_types[]=futures_priceselects them on/alerts.
- Added
min_profit,max_profit,min_lossandmax_lossto/option-trades/multi-leg. They filter on themax_profitandmax_lossfields and acceptabs().max_lossis negative, somin_loss=abs(100000)returns strategies that can lose at least $100,000. Strategies with an unbounded profit or loss are excluded by the matching filter.
- Added the
queryparameter to/option-trades. It takes a Query language expression, such aswhere premium > 100k and strike > spot, and combines it with the other filters usingand. The fields, operators and functions are listed by/alerts/query/grammar?target=option_trade. /option-trades/flow-alerts: Default lookback is 7 days without a specifiednewer_than./predictions/user/:user_idnow returns at most 20,000positions, the ones with the highesttotal_invested_usd. The newpositions_truncatedfield is true when the user has more positions than that.
- Added
earnings_report_timeto/stock/:ticker/volatility/context. It ispremarket,postmarketorunknown, or null when no report is scheduled or its time is not recorded.expiry.earnings_in_expiryis now false when the report ispostmarketon the expiry date. - Whale Bundle Basic monthly and annual plans now include unlimited API requests.
- Added
chartandchart_memberto eachrev_breakdownrow of/stock/:ticker/fundamental-breakdown. A filing often reports the same revenue in several breakdowns, and subtotals next to their parts.chartisproductorregionfor the rows of the one breakdown picked for that chart, whose members add up to the report’s revenue where possible, andnullfor every other row. Withperiod=all, each period of a report has its own chart rows.chart_memberis the member to label the row with.
- Added endpoints to manage the stock and option watchlists of the user. These are the same watchlists as on unusualwhales.com, so changes made through the API show up on the website.
GET /watchlists/stocksandGET /watchlists/optionslist the watchlists.POST /watchlists/stocksandPOST /watchlists/optionscreate a watchlist.PUT /watchlists/stocks/:idandPUT /watchlists/options/:idreplace the name, contents and color of a watchlist. WARNING: Tickers or option symbols missing from the request are removed from the watchlist.POST /watchlists/stocks/:id/add-tickersandPOST /watchlists/stocks/:id/remove-tickersadd or remove tickers on a stock watchlist and keep the other tickers.DELETE /watchlists/stocks/:idandDELETE /watchlists/options/:iddelete a watchlist.
- Added the
periodquery parameter to/stock/:ticker/fundamental-breakdown.quarter, the default, returns the quarterlyrev_breakdownrows and the rows without a period, plus the 12-month rows ofannual_onlytickers.annualreturns only 12-month rows, including breakdowns that a company reports only in its annual report.allreturns every row. - Added
period_monthsto eachrev_breakdownrow of the same endpoint. It is the number of months the value covers, such as 3 for a quarter and 12 for a full fiscal year.nullmarks a count at a point in time, such as the number of stores, or a row stored before this field existed. - The
rev_groupdocumentation now listscountryandcontinent, which the endpoint already returned.
- Added FLEX option endpoints. FLEX option data always lags by one trading day:
/flex-optionsreturns the FLEX option contracts of a date with their open interest and mark, next to the values of the previous trading day./flex-options/marketreturns the market-wide FLEX open interest per day and the FLEX open interest per ticker on a date./flex-options/chain/:chainreturns the daily history of one FLEX option contract./flex-options/:tickerreturns the daily FLEX open interest history of a ticker.
- Added new SEC filing websocket channels:
sec:filings(every filing),sec:insider_trades(insider trades, aggregated per filing and transaction type),sec:13f_alertsandsec:13f_filings(13F reports),sec:13dg_filings(Schedule 13D and 13G),sec:company_reports(10-Q, 10-K, 20-F and 40-F financial statements) andsec:497_filings(Rule 497 prospectuses). Each channel streams one message type of the Kafka topicsec-filings, with the same fields as the Kafka message. The channels cover every ticker at once and have no per-ticker variant.
- The websocket documentation moved to https://api.unusualwhales.com/docs/websocket, with one page per channel. REST endpoints that serve the same data as a websocket channel link to that channel’s page.
- Added a new websocket channel
stock_screener. It streams the latest stock screener row of every ticker and is the live counterpart of/screener/stocks.
- Added a new websocket channel
ta_1d_live:{TICKER}. The channel streams technical-analysis indicator values (moving averages, RSI, MACD, Bollinger bands, ADX, Aroon, ATR, CCI, MFI, OBV, stochastics and Williams %R) computed on daily candles for one ticker. During regular trading hours it resends the day that is still forming as the price moves, so the newest message for adatereplaces the ones before it. An indicator reads asnulluntil enough daily history exists to compute it. The1din the name is the candle interval andlivemeans the values track the open session.
- Added new websocket channels
quotesandquotes:{TICKER}. They stream the live best bid and ask - for every ticker at once, or for a single ticker - and are the live counterpart of/stock/:ticker/quote.
- Added a global
greekswebsocket channel. It streams the same per-contract option greeks asgreeks:<TICKER>, but for every underlying at once. This is a high volume firehose - prefer the per-ticker channel unless you need the full tape.
- MCP now advertises build guidance:
instructionson initialize; builder promptsbuild_dashboard_app,build_confluence_alert,build_trading_bot,build_data_stream,start_from_example, andsetup_api_project; toolsget_build_recipeandget_api_examples(scripts from https://github.com/unusual-whales/api-examples); andresources/list/resources/templates/list/resources/readfor playbooks and example files.
- Added a new websocket channel
risk_reversal_skew. The channel streams live 25- and 10-delta risk reversal skew (put implied volatility minus call implied volatility) per expiry across every ticker, the live counterpart of/stock/:ticker/historical-risk-reversal-skew. The channel is global only; there is no per-ticker variant.
- Updated
/stock/:ticker/gex-levelsto derive its levels from directionalized volume instead of a cumulative total over the static open-interest snapshot. - Added
date,time,source, andnearby_flipsto the/stock/:ticker/gex-levelsresponse.nearby_flipslists the five zero-gamma crossings nearest spot, ordered by distance from it.timeis when the underlying exposure snapshot was calculated.
- Added new websocket channels
interpolated_ivandinterpolated_iv:TICKER. The channels stream interpolated implied volatility and expected moves at fixed horizons (1-365 trading days), the live counterpart of/stock/:ticker/interpolated-iv. - Added new websocket channels
iv_term_structureandiv_term_structure:TICKER. The channels stream ATM implied volatility and expected moves per real option expiry — the raw entries behindinterpolated_iv— the live counterpart of/stock/:ticker/volatility/term-structure.
Added a new advanced-tier endpoint group. All routes below require API Advanced, Enterprise Startup, Enterprise Startup + Kafka, or Enterprise tier.Congressional unusual trades (scope
Private markets (scope
Company fundamentals
- Added
/companies/:ticker/profilefor sector, industry, market cap, P/E, EPS, dividend yield, analyst targets, 52-week range, moving averages, and the full analyst rating breakdown. - Added
/companies/:ticker/dividendsfor historical dividend events. - Added
/companies/:ticker/splitsfor historical stock-split events. - Added
/companies/:ticker/earnings-estimatesfor forward analyst earnings and revenue estimates by quarter and year. - Added
/companies/:ticker/transcripts/:quarterfor earnings-call transcripts with speakers, statements, and per-statement sentiment. - Added
/companies/listingsfor the master list of US-traded securities (active or delisted).
Macro
- Added
/commodities/:namefor long-running price series across WTI, Brent, natural gas, copper, aluminum, wheat, corn, cotton, sugar, coffee, and the global commodities index. - Added
/economy/:indicatorfor US economic indicator series (GDP, GDP per capita, treasury yield, fed funds rate, CPI, inflation, retail sales, durables, unemployment, payrolls).
Forex
- Added
/forex/ratefor live FX spot rates with bid and ask. - Added
/forex/intradayfor 1min through 60min FX OHLC bars. - Added
/forex/historyfor daily, weekly, and monthly FX OHLC bars.
Digital currencies
- Added
/digital-currencies/intradayfor intraday OHLC bars priced against a fiat market. - Added
/digital-currencies/historyfor daily, weekly, and monthly OHLC bars.
Market intel and analytics
- Added
/market/moversfor pre-ranked top gainers, top losers, and most actively traded US tickers. - Added
/calendar/ipofor upcoming IPOs over the next 3 months. - Added
/analytics/windowfor fixed-window statistical analytics across baskets of tickers (mean, stddev, correlation, drawdown, autocorrelation, covariance, and more). - Added
/analytics/slidingfor sliding-window statistical analytics.
Congressional unusual trades (scope unusual-trades)
- Added
/congress/unusual-tradesfor unusual congressional trades filtered by reason tag (committee_conflict, first_person_to_trade, low_marketcap, unusual_industry, unusually_large_trade, fec_donation_conflict). - Added
/congress/unusual-trades/by-tickerswith ticker, transaction type, date range, and politician filters. - Added
/congress/unusual-trades/chart-datareturning trade points with SPY benchmark closes. - Added
/congress/unusual-trades/statsfor aggregate overview statistics.
Private markets (scope private-markets)
- Added
/private-markets/companiesfor the full Nasdaq Private Markets company list with sector and name filters. - Added
/private-markets/companies/:npm_tickerfor the company profile with latest price, total funding, and investor count. - Added
/private-markets/companies/:npm_ticker/fundingfor funding round history. - Added
/private-markets/companies/:npm_ticker/investorsfor disclosed investors. - Added
/private-markets/companies/:npm_ticker/managementfor disclosed leadership. - Added
/private-markets/companies/:npm_ticker/pricingfor historical implied per-share pricing. - Added
/private-markets/investorsfor top investors ranked by distinct company count. - Added
/private-markets/investors/:namefor an investor’s portfolio. - Added
/private-markets/searchfor substring search across companies and investors.
MCP
- Added 5 premium MCP catalogs covering the new endpoints:
uw_companies_extras,uw_macro,uw_forex,uw_digital_currencies,uw_intel. Plusuw_unusual_tradesanduw_private_marketsfor the scope-gated catalogs above. - Premium MCP catalogs and individual premium commands (
uw_stock.ownership,uw_flow.full_tape,uw_politicians) are now hidden by default. Operators opt in viaUW_ENABLE_PREMIUM_TOOLS=true(all on) orUW_PREMIUM_TOOLS=uw_companies_extras,uw_macro,...(per-tool allowlist supporting<catalog_id>or<catalog_id>.<command>form).
- Added MCP tool
get_short_volume_ratio_by_exchangefor/shorts/:ticker/volumes-by-exchangedata. - Added MCP tool
get_short_volume_ratio_by_tickerfor/shorts/:ticker/volume-and-ratiodata. - Added MCP tool
get_short_screenerfor/short_screener - Added MCP tool
get_short_data_by_tickerfor/shorts/:ticker/data
- Enhanced MCP
/api/mcptools/callvalidation to reject unsupported arguments, missing required arguments, and invalid enum values before tool execution. - MCP tool errors now include retry guidance telling clients to inspect
tools/listinputSchemaand retry with supported arguments.
- Added authenticated MCP endpoint
/api/mcpto expose existing AI tools to API subscribers using the sameAuthorization: Bearer <API_TOKEN>flow. - Supports MCP
initialize,tools/list, andtools/callmethods backed by the existing internal tool registry and execution pipeline.
- Updated interest-float endpoint with new version and deprecated old version
/shorts/:ticker/interest-float/v2- Added interest-float search screener endpoint
/short_screener
- Added new websocket channels
lit_tradesandoff_lit_tradesto stream live lit (exchange-based) and off-lit (dark pool) trades respectively.
- Added
newer_thanandolder_thantime filtering parameters to/alertsendpoint with 14-day maximum lookback period for custom alerts queries
- Added
/market/top-net-impactendpoint to get the top tickers by net premium (split between bullish and bearish). Supports filtering byissue_types[],date, andlimit(default 20, max 100).
- Added
/market/:sector/sector-tideendpoint to get the market tide for a specific sector
- Added
/stock/:ticker/interpolated-ivendpoint to get the interpolated iv for various days
- Added
/option-contract/:id/volume-profileendpoint to get the volume profile of an option contract (volume by fill price)
- Added
/option-contract/:id/intradayendpoint to get the volume, premium & OHLC for a contract in 1min ticks for a given trading day
- Added
prev_close_pricefield to/stock/:ticker/stock-stateendpoint to provide the previous close price.
- Enhanced
/option-trades/full-tape/{date}to allow users withwebsocketscope to access the last two trading days of data
- Added
/net-flow/expiryendpoint to track net premium flow by tide type, moneyness, and expiration categories. This powers charts like those found on the zero-DTE dashboard
- Enhanced
/market/correlationsendpoint with new date filtering options:start_dateandend_dateparameters to specify custom date ranges, complementing the existingintervalparameter
- Updated
/stock/{ticker}/net-prem-ticksendpoint to includecall_volume,put_volume,call_volume_bid_side,put_volume_bid_side,call_volume_ask_side,put_volume_ask_side&net_delta.
- Added
/news/headlinesendpoint to access financial news headlines with filtering capabilities - Added Shorts API endpoints:
- The endpoint
/stock/:ticker/spot-exposures/:expiry/strikehas been deprecated and been replaced by/stock/:ticker/spot-exposures/expiry-strike
/api/stock/:ticker/spot-exposures/:expiry/strike calls with /api/stock/:ticker/spot-exposures/expiry-strike?expirations[]=expiry- The endpoint
/congress/recent-reportshas been removed as it returns the same data as/congress/recent-trades.
- Enhanced
/market/fda-calendarwith better FDA data, additional fields (notes, outcomes, sources), and filtering by company metrics
- Added
gex_strike_expiry:<TICKER>channel to the websocket - Added
call_option_symbol&put_option_symbolto/stock/{ticker}/greeks
- Added
/alerts/configuration - Added
/alerts
- Added
perc_of_total&perc_of_share_valueto/institution/:name/holdings
- Added
/stock/:ticker/nope
- Added etf inflow & outflow endpoint
/etfs/:ticker/in_outflow
- Added institutional latest filings endpoint
/institution/latest_filings - Added institutional ownership endpoint
/institution/:ticker/ownership
- Added 2 new fields:
days_of_oi_increases&days_of_vol_greater_than_oito/market/oi-change
- Added institutional activity endpoint
/institution/:name/activity
- Added institutional list endpoint
institutions - Added institutional holdings endpoint
/institution/:name/holdings - Added institutional sector exposure endpoint
/institution/:name/sectors
- Added new flow per strike intraday endpoint
/stock/:ticker/flow-per-strike-intraday
- Added new correlation endpoint
/market/correlations?tickers=SPY,QQQ,JPM,BAC
- Added the ability to filter
/darkpool/:tickerby timestamps through the two new query parametersolder_thanandnewer_than
- Added directionalized volume fields to
/stock/:ticker/spot-exposuresand/stock/:ticker/spot-exposures/strike
- Added the channels
gex:TICKER&gex_strike:TICKERto the websocket
- Added the ability to filter
/option-trades/flow-alertsby timestamps through the two new query parametersolder_thanandnewer_than
- Added endpoint
/stock/:ticker/stock-stateto retrieve the last stock price & volume - Added endpoint
/stock/:ticker/volatility/realizedto retrieve a stock’s realized volatility
- Added endpoint
/market/:ticker/etf-tide
- Added endpoint
/stock/:ticker/spot-exposures/strike - Added new channel
price:TICKERto the websocket. The channel will push live price updates for the given ticker.
- Added endpoint
/stock/:ticker/greek-exposure/strike - Added endpoint
/stock/:ticker/greek-exposure/expiry - Added endpoint
/stock/:ticker/greek-exposure/strike-expiry
- Fixed field name volatility -> risk_reversal for endpoint
/stock/:ticker/historical_risk_reversal_skew
- Added endpoint
/stock/:ticker/greeks - Added endpoint
/stock/:ticker/historical_risk_reversal_skew
- BREAKING CHANGE:
Previously
/option-contract/:id/flowwould return the data as a json list. This has been now changed so that the endpoint returns the data in the format{"data": [], "date": "2024-03-22"}. Secondly, the endpoint will now only return data for a single trading day.
- Added endpoint
/option-trades/flow-alerts - Added flow-alerts streaming to the WebSocket.
- Added endpoint
/stock/:ticker/max-pain
- Added new endpoint section
Seasonalitywith new endpoints:
- Added endpoints
/stock/:ticker/expiry-breakdown&/stock/:ticker/option-contracts. These 2 endpoints allow access to the data located here: https://unusualwhales.com/stock/AAPL/option-chains
