# Tradytics API > A JSON API for options flow, dark pool prints, prices, the market, research, the scanner and AI trade signals, plus an MCP server. Base URL https://tradytics.com/api/public/v1. Docs: https://tradytics.com/docs. Included with Tradytics Pro. # Overview One API for options flow, dark pools and the whole stock market: every options print and dark pool print, dealer positioning, chains and volatility, prices, fundamentals, SEC filings and disclosures, company KPIs, prediction markets and Signals. Included with Tradytics Pro. # Quickstart Make your first call in a minute. ## Create a key Sign in and open [API keys](/developer/keys): your first key is made for you; see and copy it there any time, and make more, each with its own scopes. Calls answer on Pro. ```bash export TRADYTICS_API_KEY="tdy_..." ``` ## Make a call Send your API key in the URL as the `apiKey` query parameter. The [libraries](/docs/libraries) add it for you. This asks for the latest NVDA options prints with at least $1 million in premium: ```bash curl "https://tradytics.com/api/public/v1/options/flow?symbol=NVDA&min_premium=1000000&limit=5&apiKey=$TRADYTICS_API_KEY" ``` ## Read the response Every answer is JSON with the data under `data`. A list says where the next page starts, as a cursor and as a ready URL: ```json { "data": [{ "id": 60946937, "time": "2026-10-29T20:02:02Z", "symbol": "NVDA", "type": "call", "premium_usd": 1508035 }], "next_cursor": "2026-10-29:60946937", "next_url": "https://tradytics.com/api/public/v1/options/flow?symbol=NVDA&cursor=2026-10-29:60946937", "meta": { "as_of": "2026-10-29T20:15:04Z", "count": 1 } } ``` A single object also carries `meta.as_of`. This is the snapshot or build time when available, otherwise the response time. Use a row’s source timestamp or session date to determine the age of its data: ```json { "data": { "symbol": "NVDA", "name": "Nvidia", "price": 210.09 }, "meta": { "as_of": "2026-10-29T20:15:04Z" } } ``` ## Next - [API keys](/docs/authentication): sending the key, scopes and keeping it safe - [Time and history](/docs/time): live data, past sessions, ranges and points in time - [Options flow](/docs/options-flow): filters, history and polling for new prints # MCP server Connect Claude, ChatGPT, Cursor or any MCP client to Tradytics. You sign in with your Tradytics Pro account and the app answers from the same data as the API. ## Server URL ```text https://tradytics.com/mcp ``` The server speaks Streamable HTTP. Apps sign in with OAuth: you approve them on a Tradytics page that lists what they can read. Each connection counts toward the same [rate limits](/docs/rate-limits) as a key and shows on the [API keys](/developer/keys) page, where you can disconnect it. ## Claude - Open Customize, then Connectors, and select Add custom connector. - Name it Tradytics, paste `https://tradytics.com/mcp` as the URL and select Add. - Select Connect, sign in to Tradytics if asked, and select Allow. - In a chat, turn Tradytics on from the + menu under Connectors. On Team and Enterprise plans an owner adds it in Organization settings, under Connectors; members then select Connect in Customize. In Claude Code, run this and then `/mcp` to sign in: ```bash claude mcp add --transport http tradytics https://tradytics.com/mcp ``` ## ChatGPT - Open chatgpt.com/plugins, select +, then Add custom MCP server. - Name it Tradytics, choose Public endpoint and paste `https://tradytics.com/mcp`. - Set Authentication to OAuth, confirm and select Create. - Sign in to Tradytics and select Allow. Mention @Tradytics in a chat to use it. ## Cursor Add the server to `~/.cursor/mcp.json`, or to `.cursor/mcp.json` in a project: ```json { "mcpServers": { "tradytics": { "url": "https://tradytics.com/mcp" } } } ``` Then open Cursor's MCP settings, select Connect next to Tradytics, sign in and select Allow. ## Other clients Any client that supports Streamable HTTP and MCP OAuth connects the same way. ## Scopes The approval page lists the scopes the app asks for. An app sees only the tools its scopes open. The `account` tools answer for the signed-in account only: they take no account or email, so an app can't reach anyone else's data. | Scope | Tools | | --- | --- | | `market` | `get_quotes`, `get_price_bars`, `get_stock_snapshot`, `get_stock_data`, `get_market`, `get_calendar`, `get_news`, `get_insights`, `find_symbol` | | `options` | `get_options_flow`, `get_flow_summary`, `get_option_contracts`, `get_dealer_positioning`, `get_volatility` | | `darkpool` | `get_dark_pool` | | `research` | `get_fundamentals`, `get_transcripts`, `get_filings`, `get_disclosures`, `get_kpis` | | `scanner` | `screen_stocks`, `get_screener_fields` | | `signals` | `get_signals`, `get_signal_performance` | | `probabilities` | `get_probabilities` | | `fund` | `get_ai_fund` | | `account` | `get_my_portfolio`, `get_my_backtests`, `get_my_dashboards`, `get_my_watchlists` | ## Answers - Tools answer in compact JSON: numbers rounded, chart series trimmed to their latest points, rows as `columns` and `rows`. - Times are New York time. Money is US dollars and percent fields are percent. - Lists come newest or largest first. Pass a result's `next_cursor` back as `cursor` for more. - Every tool call is one API call per endpoint it reads, counted against the connection's limits. # MCP tools 30 tools cover every endpoint, one per kind of question. All of them only read. ## get_quotes Live quotes for US stocks and ETFs. Quotes for up to 100 distinct tickers, or the full market ranked by dollar volume. Refreshes about every 30 seconds. meta.as_of is the snapshot time; price_at is the source minute. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `symbol` | string | Comma-separated tickers, up to 100. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## get_price_bars OHLCV bars for a stock, ETF or index. Split-adjusted OHLCV bars with VWAP, oldest first, including the forming bar. Daily and weekly bars go back to 2004 for every US stock; intraday bars cover two years of the ~3,000 most traded symbols and the four major indices, 1-second bars the last 7 days. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker symbol, e.g. `AAPL`. Required. | | `timeframe` | string | `1s`, `1m`, `5m`, `15m`, `30m`, `1h`, `4h`, `1d` or `1w`. | | `from` | string | Start of the range, `YYYY-MM-DD` or an RFC 3339 time. Weekly bars include the week containing this date, starting Monday. | | `to` | string | End of the range, `YYYY-MM-DD` or an RFC 3339 time. A date includes the whole New York session. A historical timestamp includes only daily sessions that had closed by then. Default now. | | `limit` | integer | Rows per page, up to 5000. | | `cursor` | string | `next_cursor` from the previous page: the bars before it. | ## get_stock_snapshot Every US stock right now; sort it for movers. Every listed stock, fund and index at once with its move, volume and size, sorted any way: movers, most active and the heatmap from one call. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `sort` | string | `change_pct`, `change`, `price`, `volume`, `dollar_volume_usd`, `relative_volume`, `market_cap_usd` or `symbol`. | | `order` | string | `asc` or `desc`. | | `kind` | string | `stock`, `etf`, `adr` or `index`. | | `sector` | string | One sector, e.g. `Technology` or `Financial Services`. | | `min_market_cap_usd` | number | Only companies at least this large. | | `min_dollar_volume_usd` | number | Only symbols trading at least this much today. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## get_stock_data Technicals, short interest, short volume, dividends and splits. Views: `technicals`, `short_interest`, `short_volume`, `corporate_actions`. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `technicals`: A technical rating with the signals, moving averages and oscillators behind it, and monthly seasonality, on daily bars through today. `short_interest`: Short interest at every FINRA settlement date, twice a month, newest first. `short_volume`: Daily off-exchange short sale volume reported to FINRA, newest first. `corporate_actions`: Dividends and splits, newest first: one symbol's whole history, or the whole market's within up to 93 days (default a week back to a month ahead). Default `technicals`. | | `symbol` | string | Ticker symbol, e.g. `AAPL`. | | `from` | string | First day, `YYYY-MM-DD`. | | `to` | string | Last day, `YYYY-MM-DD`. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `type` | string | `dividend` or `split`. Default both. | ## get_market Market hours, the major indices, breadth, sectors and themes. Views: `status`, `indices`, `breadth`, `sectors`. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `status`: Whether the market is open now, the next open and close, and the holidays and early closes ahead. `indices`: The S&P 500, Nasdaq 100, Russell 2000, Dow Jones Industrial Average and VIX, live in the session. `breadth`: How many liquid stocks and ADRs ($20M+ traded today, funds left out) are up and down, how today's moves spread, and the equal-weight S&P 500 against the cap-weighted one. `sectors`: The 11 sectors through their SPDR ETFs, or two dozen investing themes as equal-weight baskets, with returns over six periods and today's best and worst members. Default `status`. | | `type` | string | `sector` or `theme`. | ## get_calendar Earnings reports and economic releases. Views: `earnings`, `economic`. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `earnings`: Reports by date then company size, with estimates and results. Actuals use the same filed figures and verified releases as `/fundamentals/earnings`. Without `symbol`, every US listing in the range, past or ahead (default the next 7 days, up to 93 a call); with it, the company's whole history, newest first. `economic`: Economic releases and central bank events by time. FMP supplies the readings and estimates. The official BEA schedule fills gaps in upcoming US GDP release dates, with readings and estimates null when unavailable. Default the US, yesterday to a week ahead, up to 93 days a call. Default `earnings`. | | `symbol` | string | One ticker. | | `from` | string | First day, `YYYY-MM-DD`. Default today. | | `to` | string | Last day, `YYYY-MM-DD`. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `country` | string | Two-letter country code, `EU`, or `all`. | | `impact` | string | `low`, `medium` or `high`. | ## get_news Market and company news. Stories newest first, all of them or one symbol's. Default the last 30 days. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `symbol` | string | One ticker. | | `from` | string | Earliest, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | Latest, `YYYY-MM-DD` or an RFC 3339 time. | | `limit` | integer | Rows per page, up to 500. | | `cursor` | string | `next_cursor` from the previous page. | ## get_insights Written reads: the market today and why stocks move. Views: `market`, `movers`. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `market`: The market in a headline, a summary and three stories, with the week's events ahead. Rewritten every 30 minutes in the session. `movers`: Each stock's latest story behind its move, newest first: the 100 largest companies and the most viewed, rewritten through the day. Default `market`. | | `date` | string | The last digest of a past session, `YYYY-MM-DD`. | | `symbol` | string | Comma-separated tickers. | | `limit` | integer | Rows per page, up to 500. | | `cursor` | string | `next_cursor` from the previous page. | ## get_options_flow Every options print over $25K, live and historical. Prints newest first: the live session by default, one session with `date`, or a range since 2025-03-31. Pass `since` to poll the live session, oldest first. Cancelled trades are left out. One print with the session's flow up to it, and what the contract did after: its close the next session and its value at expiry (the latest close until then). `outcome` is null until the session after the print has closed, or the contract has expired. Needs the `options` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `symbol` | string | Underlyings, comma separated, e.g. `NVDA,AMD`. Default all. | | `date` | string | One session, `YYYY-MM-DD`, as it closed. | | `from` | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `since` | integer | Only prints after this `id`, oldest first. | | `type` | string | `call` or `put`. | | `kind` | string | `sweep`, `block`, `split` or `single`. | | `side` | string | `bought`, `sold` or `mid`. | | `min_premium` | integer | Minimum premium, USD. | | `expiry` | string | One expiry, `YYYY-MM-DD`. | | `dte` | integer | Only contracts expiring within this many days; `0` for same-day. | | `contract` | string | One contract, OCC symbol, e.g. `NVDA261218C00150000`. | | `opening` | boolean | Only prints larger than the open interest. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `id` | integer | A print's `id`. | ## get_flow_summary Net premium through time, leaders, strikes and unusual contracts. Views: `timeline`, `leaders`, `strikes`, `unusual`. Needs the `options` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `timeline`: Net call and put premium, net delta and put/call per interval, oldest first, with the price. Without `symbol`: every single stock (no ETFs or index products), priced by SPY. Intraday intervals cover one session (default the latest); `1d` takes `from`/`to` (default 30 days). `leaders`: Single stocks, or their sectors, ranked by net premium for the latest session or `date`, with premium against their 20-session average. `strikes`: Premium by strike and expiry for one underlying over the latest session, `date` or a range, busiest first. `unusual`: Contracts whose session volume ran past their open interest, with volume against their 20-session average, for the latest session or `date`. Largest premium first. Default `timeline`. | | `symbol` | string | Underlyings, comma separated. Default all single stocks. | | `interval` | string | `1m`, `5m`, `15m`, `1h` or `1d`. | | `date` | string | One session, `YYYY-MM-DD`, as it closed. | | `from` | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `dte` | integer | Only contracts expiring within this many days; `0` for same-day. | | `by` | string | `symbol` or `sector`. | | `direction` | string | `bullish` or `bearish`. Bullish puts the most net bought first. | | `limit` | integer | Rows per page, up to 100. | | `cursor` | string | `next_cursor` from the previous page. | | `expiry` | string | One expiry, `YYYY-MM-DD`. | | `type` | string | `call` or `put`. | | `min_premium` | integer | Minimum premium in the contract's prints, USD. | | `sort` | string | `premium` or `volume_to_open_interest`. | ## get_option_contracts Chains, expirations, the most active contracts, one contract and its bars. Views: `chain`, `expirations`, `contracts`, `contract`, `bars`. Needs the `options` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `chain`: A symbol's standard contracts (100 shares) with quotes, volume, open interest, IV and greeks, live (refreshed every 30 seconds) or any session since 2026-11-06 at its close. Sorted by expiry, strike, calls first. `expirations`: Every listed expiry, soonest first, with its contracts, strikes and cycle. `contracts`: Contracts of the ~4,000 most traded stocks and ETFs at the latest close (or `date`'s), ranked by volume, premium, IV, open interest or the change in either: the options screener. `contract`: One contract now: the quote with sizes, the last trade, the session's range and volume, open interest, IV, greeks and the stock's price. `bars`: OHLCV bars with VWAP for one contract, oldest first. Without `from`: 5 days of `1m`, 10 of `5m`, 20 of `15m`, 60 of `1h`, a year of `1d`. Default `chain`. | | `symbol` | string | Underlying, e.g. `AAPL`. | | `expiry` | string | One expiry, `YYYY-MM-DD`. | | `type` | string | `call` or `put`. | | `min_dte` | integer | Fewest days to expiry. | | `max_dte` | integer | Most days to expiry. | | `min_otm_pct` | number | Least out of the money, % (negative is in the money). | | `max_otm_pct` | number | Most out of the money, %. | | `min_delta` | number | Lowest absolute delta, 0 to 1. | | `max_delta` | number | Highest absolute delta, 0 to 1. | | `min_strike` | number | Lowest strike. | | `max_strike` | number | Highest strike. | | `date` | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `sort` | string | `volume`, `premium`, `iv`, `iv_change`, `open_interest` or `open_interest_change`. | | `order` | string | `desc` or `asc`. | | `min_volume` | integer | Fewest contracts traded. | | `min_open_interest` | integer | Least open interest. | | `min_price` | number | Lowest mid (the last trade without a quote). | | `max_price` | number | Highest mid. | | `contract` | string | OCC symbol, e.g. `SPY271217C00750000` (`O:` prefix optional). | | `timeframe` | string | `1m`, `5m`, `15m`, `1h` or `1d`. | | `from` | string | Earliest bar, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | Latest bar, `YYYY-MM-DD` or an RFC 3339 time. Default now. | ## get_dealer_positioning Dealer gamma, delta, vanna and charm by strike or expiry, their history, and open interest. Views: `exposure`, `history`, `open_interest`. Needs the `options` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `exposure`: The latest run of the dealer model (every 5 minutes of the session) or the one standing at `at` (since 2026-11-06), by strike or by expiry, with its walls, gamma flip and max pain. `history`: Daily dealer net delta and net gamma against the close, each session of about 18 months, oldest first. `open_interest`: Call and put open interest by strike or by expiry with the change since the session before, at the latest close (or `date`'s). Default `exposure`. | | `symbol` | string | Underlying, e.g. `SPY`. Required. | | `greek` | string | `gamma`, `delta`, `vanna` or `charm`. | | `by` | string | `strike` or `expiry`. | | `expiry` | string | One expiry, `YYYY-MM-DD`. | | `dte` | integer | Only expiries within this many days; `0` for same-day. | | `at` | string | A moment, RFC 3339: the run standing then. | | `from` | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `date` | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## get_volatility Implied and realized volatility, IV rank, skew, term structure and expected moves. Views: `current`, `history`. Needs the `options` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `current`: One symbol's 30-day ATM IV against its past year and its realized vol, the ATM term structure, 25-delta skew and the moves options price. Live in regular hours until the close is stored (about 16:25 New York), then that close. `history`: Daily 30-day ATM IV with its rank and percentile, realized vol and the close, oldest first, from November 2025. Default `current`. | | `symbol` | string | Underlying, e.g. `AAPL`. Required. | | `date` | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `from` | string | First day, `YYYY-MM-DD`. Default a year before `to`. | | `to` | string | Last day, `YYYY-MM-DD`. Default today. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## get_dark_pool Dark pool prints ranked against each stock's year, levels and daily totals. Views: `prints`, `levels`, `daily`. Needs the `darkpool` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `prints`: Prints newest first (or largest): the live session by default (07:00 to 18:00 New York), one session with `date`, or a range since 2025-06-09. The morning after, each session is final: 04:00 to 20:00, the auctions and ranks, the same ids. Pass `since` to poll the live session as prints arrive. `levels`: The price levels with the most dark pool block money over the last `window` sessions to `date`, biggest first: off-exchange block trades in bins of 0.25% of the last close. `daily`: Session totals newest first: one stock's sessions (default the last year, zeros on a session it traded without blocks), or without `symbol` one session's names by dark pool notional. Each session ranked against the stock's own year. Default `prints`. | | `symbol` | string | Tickers, comma separated. Default all. | | `date` | string | One session, `YYYY-MM-DD`. | | `from` | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `since` | integer | Only prints that arrived after the one with this `id`, as they arrived. | | `min_notional` | integer | Minimum notional, USD. | | `kind` | string | `trade`, `close` or `open` (the auctions). | | `venue` | string | `dark_pool` or `exchange`. Dark pool prints are off exchange. | | `max_rank` | integer | Only prints ranked this high or better. | | `sort` | string | `time` or `notional`. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `window` | integer | Sessions, up to 250. | ## get_fundamentals A company's profile, statements, ratios, segments, earnings, estimates and analysts; an ETF's holdings. Views: `profile`, `income_statement`, `balance_sheet`, `cash_flow`, `ratios`, `segments`, `earnings`, `estimates`, `analysts`, `etf_holdings`. Needs the `research` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `profile`: The company, its size and its valuation at the price now. `income_statement`: Quarterly, annual or trailing-twelve-month income statements from the 10-Qs and 10-Ks, newest first, at the latest filed figures; a renamed ticker keeps its history (`META` includes its years as `FB`). Q4 is the year less nine months. A line the filing doesn't show, or shows as zero, is `null`. `balance_sheet`: Quarterly or annual balance sheets from the 10-Qs and 10-Ks, newest first, at the latest filed figures. A line the filing doesn't show, or shows as zero, is `null`. `cash_flow`: Quarterly, annual or trailing-twelve-month cash flow statements, newest first: a quarter is the filing's year to date less the quarter before's. A line the filing doesn't show, or shows as zero, is `null`. `ratios`: Valuation, margin, return and balance sheet ratios on the trailing twelve months: at the price now, or at each close since 2009 with `from` and `to`, on the statements on file that day. `segments`: Revenue by product line or by region as reported, newest period first, largest segment first. `earnings`: Every report with EPS and revenue against the estimates, newest first. The next report comes first, its actuals `null`. `estimates`: Consensus for each fiscal period not reported yet, nearest first. `analysts`: Ratings consensus, price targets and the latest 50 calls by firm. `etf_holdings`: Everything a fund holds, largest weight first, as its issuer last published. Default `profile`. | | `symbol` | string | Ticker symbol, e.g. `AAPL`. Required. | | `period` | string | `quarter`, `annual` or `ttm` (trailing twelve months). | | `limit` | integer | Periods, newest first, up to 200 (every filing since 2009). | | `from` | string | Earliest period end, `YYYY-MM-DD`. | | `to` | string | Latest period end, `YYYY-MM-DD`. | | `cursor` | string | `next_cursor` from the previous page. | | `by` | string | `product` or `region`. | ## get_transcripts Earnings call transcripts. Earnings call transcripts: the latest, one quarter, or every quarter of a fiscal year. Needs the `research` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker symbol, e.g. `AAPL`. Required. | | `year` | integer | Fiscal year. Alone, every quarter of it. | | `quarter` | integer | Fiscal quarter, 1 to 4, with `year`. | ## get_filings SEC filings as they land, one filing, its sections as text, and full-text search. Views: `filings`, `filing`, `sections`, `search`. Needs the `research` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `filings`: Filings newest first, for the whole market or a few companies, by form, 8-K item and date. `filing`: One filing with every document and exhibit in it. `sections`: Sections of a 10-K, 10-Q or 8-K as plain text. A section asked for the first time can answer `warming_up` for a few seconds. `search`: Full-text search of every filing and exhibit since 2001: the documents that match. Default `filings`. | | `symbol` | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every filer. | | `form` | string | Form types, comma separated, e.g. `10-K,10-Q,8-K`, `4`, `SCHEDULE 13D`. | | `item` | string | 8-K items, comma separated, e.g. `2.02` (results), `5.02` (officers and directors). | | `from` | string | Filed on or after, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | Filed on or before. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `accession` | string | Accession number, e.g. `0000320193-25-000079`. | | `section` | string | Comma separated. 10-K and 10-Q: `business`, `risk_factors`, `mda`, `market_risk`, `financial_statements`, `legal_proceedings`, `controls`, `cybersecurity`, `properties`, `market_for_equity`, `other_information`, `exhibits` and the other items by name. 8-K: items like `2.02`. Default business, risk factors and MD&A of a 10-K, MD&A and risk factors of a 10-Q, the items of an 8-K. | | `q` | string | Words, or an exact phrase in quotes; `AND`, `OR`, `NOT`, e.g. `"supply agreement" AND China`. | ## get_disclosures Insider trades, 13F holders, one manager's book, activist stakes and Congress trades. Views: `insiders`, `institutions`, `manager`, `activists`, `congress`. Needs the `research` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `insiders`: Every Form 4 transaction, newest filing first: officers, directors and 10% owners buying, selling, exercising and receiving stock. Two years back, new ones within a minute of filing. `institutions`: Every institution that reported a stock on its 13F for a quarter, biggest position first, with what it bought or sold since the quarter before. The last 8 quarters. `manager`: One institution's whole 13F book for a quarter, biggest position first, with the changes from the quarter before. `activists`: Schedule 13D (activist) and 13G (passive) filings of holders of 5% or more, newest first. Two years back. `congress`: Stock trades members of the House and Senate disclosed, newest disclosure first. Three years back. Default `insiders`. | | `symbol` | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every company. | | `type` | string | Comma separated: `buy`, `sell`, `grant`, `exercise`, `tax`, `gift`, `conversion`, `disposition`, `expiration`, `inheritance`, `other`. | | `min_value` | number | Smallest `value_usd`, e.g. `1000000`. | | `from` | string | Filed on or after, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | Filed on or before. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `quarter` | string | Quarter end, `YYYY-MM-DD` or `2026Q2`. Default the latest quarter past its 45-day filing deadline. | | `put_call` | string | `call` or `put`. Returns option positions instead of shares. | | `cik` | integer | The manager's SEC CIK, e.g. `1067983` (Berkshire Hathaway). | | `form` | string | `13d` or `13g`. | | `chamber` | string | `house` or `senate`. | ## get_kpis Company operating numbers with their sources. Views: `values`, `definitions`. Needs the `research` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `values`: One company's KPI values, newest first: each fiscal quarter's numbers from its results release, 10-Q or 10-K, and the weekly numbers tracked for it. `definitions`: The KPIs covered for each company, the periods they span, and whether the company still reports them. A KPI is never removed: one the company stops reporting is `stopped`, one it redefines is `replaced` by a new id from that quarter on. Default `values`. | | `symbol` | string | Ticker, e.g. `TSLA`. | | `kpi` | string | KPI ids, comma separated, e.g. `vehicle_deliveries,vehicle_production`. Default every KPI. | | `kind` | string | `reported` or `tracked`. Reported values come from filings. Tracked values come from the web. | | `from` | string | Periods ending on or after, `YYYY-MM-DD`. | | `to` | string | Periods ending on or before, `YYYY-MM-DD`. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## screen_stocks Filter every US stock on any screener field. Filter on any numeric field with `min_` and `max_` (`min_relative_volume=2&max_rsi=30`), require labels and sort by any field; or pass `symbol` for those rows. Metadata separates the scan build time (`scan_as_of`) from the quote snapshot time (`quote_as_of`). Needs the `scanner` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `labels` | string | Comma-separated label ids; a row must carry all of them. | | `sector` | string | One sector, e.g. `Technology` or `Financial Services`. | | `kind` | string | `stock`, `etf` or `adr`. | | `symbol` | string | Comma-separated tickers, up to 100: just these rows, unfiltered. | | `fields` | string | Comma-separated fields to return, or `all`. Default `symbol`, `name`, `kind`, `sector`, `date`, `price`, `change_pct`, `volume`, `relative_volume`, `market_cap_usd`, `rsi`, `technical_rating`, `options_premium_usd`, `options_net_premium_usd`, `implied_volatility_pct`, `dark_pool_value_usd`, `labels`. | | `sort` | string | Field to sort by. | | `order` | string | `asc` or `desc`. | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | | `filters` | object | Field filters as name to value, e.g. {"min_rvol": 2, "max_rsi": 30}. | ## get_screener_fields Every screener field and label. Every field with its group and type, and every label with its group and lean. Needs the `scanner` scope. No parameters. ## get_signals Signals: flow patterns, marked to expiry. Signals newest first, today's live. One signal with the numbers its pattern read, the prints behind it and every mark. Needs the `signals` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `source` | string | `repeat-flow`, `opening-calls`, `heavy-calls`, `etf-repeat-calls`, `itm-puts`, `burst-calls` or `index-tide-calls`. | | `symbol` | string | One ticker. | | `status` | string | `open` or `settled`. | | `date` | string | Fired on this session, `YYYY-MM-DD`. | | `from` | string | First session, `YYYY-MM-DD`. | | `to` | string | Last session, `YYYY-MM-DD`. | | `limit` | integer | Rows per page, up to 500. | | `cursor` | string | `next_cursor` from the previous page. | | `id` | integer | A signal's `id`. | ## get_signal_performance Signals' record by source, losers included. Each pattern's record from every signal's latest mark or settlement, losers included, over the last 7, 30 and 90 days and all time. Needs the `signals` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `source` | string | `repeat-flow`, `opening-calls`, `heavy-calls`, `etf-repeat-calls`, `itm-puts`, `burst-calls` or `index-tide-calls`. Omit to include every pattern and their combined results. | | `window` | string | `7d`, `30d`, `90d` or `all`. Default each. | | `status` | string | `open` or `settled`. Default both. | ## get_probabilities Kalshi and Polymarket finance questions. Views: `questions`, `question`, `history`, `outlook`, `settled`. Needs the `probabilities` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `questions`: Every live question with a tight book and trades in the last day, with its leading outcomes. `question`: One open question with every outcome, and for an earnings question the stock's past reports and moves. `history`: One outcome's chance through time, live or settled: the last trade in each hour or day. `outlook`: Where Kalshi and Polymarket put the S&P 500 at each date they price, from the next close to year end, and the last 30 sessions' 10 AM calls on the S&P 500 and Nasdaq-100 against the close. `settled`: Every finance market Kalshi has settled since June 2021, and Polymarket's, the latest to close first. Default the last 30 days unless `series` is set. Default `questions`. | | `group` | string | `close`, `range`, `hit` or `earnings`. | | `symbol` | string | One underlying, e.g. `SPX`, `NDX`, `NVDA`. | | `id` | string | A question's `id`. | | `market` | string | One of the question's outcomes (its `market`). Default its first. | | `interval` | string | `hour` or `day`. | | `from` | string | Earliest, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | string | Latest, `YYYY-MM-DD` or an RFC 3339 time. | | `source` | string | `kalshi` or `polymarket`. | | `series` | string | A Kalshi series (`KXINXU`, the S&P 500 close) or a Polymarket event id. | | `category` | string | A Kalshi category (`Financials`, `Economics`) or a Polymarket tag (`stocks`, `economy`, `fed`). | | `limit` | integer | Rows per page, up to 1000. | | `cursor` | string | `next_cursor` from the previous page. | ## get_ai_fund The Tradytics AI Fund's book and trades. Views: `book`, `trades`. Needs the `fund` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `book`: Exposure, open positions and the latest 20 posts and letters. `trades`: Every trade, open and closed, newest first. Default `book`. | | `status` | string | `open` or `closed`. | | `symbol` | string | One ticker. | | `limit` | integer | Rows per page, up to 200. | | `cursor` | string | `next_cursor` from the previous page. | ## get_my_portfolio The user's own linked brokerage accounts, read only. Views: `holdings`, `trades`, `factors`. Needs the `account` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `view` | string | `holdings`: Your linked brokerage accounts, read only: holdings, options and recent orders, in each account's currency. `trades`: A year of closed round trips, newest first, with dividends and fees per account. `factors`: Your book's risk by source, beta, value at risk and tracking error, each holding's share, crash replays, and returns split into market, sectors, styles and stock picking. `404 not_connected` before a brokerage is linked. Default `holdings`. | ## get_my_backtests The user's own backtests. Your backtests, the latest first. One backtest: the conversation and every run it made. Needs the `account` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `q` | string | Only backtests whose title or messages mention this. | | `limit` | integer | Rows, up to 200. | | `id` | integer | A backtest's `id`. | ## get_my_dashboards The user's own dashboards. Your dashboards. One dashboard's layout on a 12-column grid. Needs the `account` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `id` | integer | A dashboard's `id`. | ## get_my_watchlists The user's own watchlists. Your watchlists, the default first, each with its symbols in the order added. Needs the `account` scope. No parameters. ## find_symbol Look up a US stock, ETF or index. An exact ticker returns its name, kind, sector, industry, market cap and live quote; anything else searches tickers and names, most traded first. Use it to turn a company name into a ticker. Needs the `market` scope. **Parameters:** | Name | Type | Description | | --- | --- | --- | | `query` | string | A ticker (`NVDA`) or part of a company or fund name (`nvidia`, `s&p 500`). Required. | | `limit` | integer | How many matches to return when searching. Up to 50. Default `10`. | # Libraries Official clients for Python and JavaScript: one method per endpoint, retries on rate limits, paging and streaming built in. No dependencies. ## Install ```bash pip install tradytics ``` ```bash npm install tradytics ``` Both read your key from `TRADYTICS_API_KEY`, or take it as `Client(api_key=...)` and `new Tradytics({ apiKey })`. ## Make a call ```python from tradytics import Client client = Client() flow = client.options.flow(symbol="NVDA", min_premium=1_000_000, opening=True) bars = client.stocks.bars(symbol="SPY", timeframe="5m", limit=500) gamma = client.options.exposure(symbol="SPY", greek="gamma") income = client.fundamentals.income_statement(symbol="AAPL", period="quarter") ``` ```js import Tradytics from 'tradytics' const client = new Tradytics() const flow = await client.options.flow({ symbol: 'NVDA', min_premium: 1_000_000, opening: true }) const bars = await client.stocks.bars({ symbol: 'SPY', timeframe: '5m', limit: 500 }) ``` Answers are the API's JSON as it comes: `data` and `meta` for objects, plus `next_cursor` and `next_url` for lists. Every endpoint page shows its call in both. ## Resources | Resource | Covers | | --- | --- | | `options` | Flow, contracts and chains, dealer positioning, volatility | | `darkpool` | Prints, levels, daily totals | | `stocks` | Quotes, bars, snapshot, technicals, short interest, corporate actions | | `fundamentals` | Profiles, statements, ratios, segments, earnings, estimates, analysts, transcripts | | `filings` | SEC filings, sections, full-text search | | `disclosures` | Insiders, institutions, activists, Congress | | `kpis` | Company operating numbers | | `market` | Status, indices, breadth, sectors | | `calendar` | Earnings and economic calendars | | `news` | News | | `screener` | The stock screener | | `signals` | Signals and their record | | `insights` | Written market reads | | `probabilities` | Kalshi and Polymarket | | `fund` | The AI Fund | | `symbols` | Symbol search | | `account` | Your portfolio, backtests, dashboards and watchlists | ## Every page ```python for p in client.paginate(client.options.flow, symbol="TSLA", min_premium=500_000, from_="2026-10-01"): print(p["time"], p["premium_usd"]) ``` ```js for await (const p of client.paginate(client.options.flow, { symbol: 'TSLA', min_premium: 500_000, from: '2026-10-01' })) console.log(p.time, p.premium_usd) ``` ## Stream new prints `stream` polls options flow or dark pool prints with `since` and yields each new print once, oldest first. ```python for p in client.stream(client.options.flow, min_premium=250_000): print(p["symbol"], p["type"], p["strike"], p["premium_usd"]) ``` ```js for await (const p of client.stream(client.options.flow, { min_premium: 250_000 })) console.log(p.symbol, p.premium_usd) ``` ## Errors and retries A failed call raises `TradyticsError` with `status`, `code`, `message` and the request id. `429` and `5xx` answers are retried up to three times, waiting as `Retry-After` says; the daily quota is not retried. ## Coding agents The [Tradytics skill](https://skills.sh/tradytics/skills/tradytics) gives Claude Code, Codex, Cursor and other agents every endpoint, its parameters and fields, so they call the API without reading these pages. ```bash npx skills add tradytics/skills ``` # API keys Send your API key in the URL as the `apiKey` query parameter. ```text https://tradytics.com/api/public/v1/options/flow?symbol=NVDA&apiKey=tdy_3cK... ``` Your key is on the [API keys](/developer/keys) page, readable any time. Calls answer on Pro. The libraries add it for you. ## Scopes A key opens only the data its scopes cover. A call outside them answers `403 missing_scope`. Change a key's scopes on the keys page at any time. | Scope | Covers | | --- | --- | | `options` | Options flow, contracts and chains, dealer positioning, volatility | | `darkpool` | Dark pool prints, levels and daily totals | | `market` | Stocks, the market, calendars, news, symbols and insights | | `research` | Fundamentals, filings, disclosures and KPIs | | `scanner` | The stock screener | | `signals` | Signals and their track record | | `probabilities` | Kalshi and Polymarket finance questions | | `fund` | The Tradytics AI Fund | | `account` | Your own portfolio, backtests, dashboards and watchlists (a key reads only its own account) | ## Keeping keys safe - Keep it secret: anyone with the key uses your quota. - Leaked? Revoke it on the keys page and make a new one. A revoked key stops within 15 seconds. - An account can hold up to 10 live keys. # Pay per call Call any endpoint without an API key: pay $0.004 a call in USDC on Base with x402. ## How it works - Call an endpoint with no `apiKey`. It answers `402` with its price in the `PAYMENT-REQUIRED` header. - An x402 client signs a USDC payment from your wallet and sends the call again with it in `PAYMENT-SIGNATURE`. - The answer is the same as with a key. The payment settles only when the call succeeds, and the receipt comes back in `PAYMENT-RESPONSE`. Your account endpoints need an [API key](/docs/authentication). ## Make a call ```bash pip install "x402[evm,httpx]" ``` ```python import asyncio, os from eth_account import Account from x402 import x402Client from x402.http.clients import wrapHttpxWithPayment from x402.mechanisms.evm.exact import ExactEvmScheme from x402.mechanisms.evm.signers import EthAccountSigner client = x402Client() client.register("eip155:8453", ExactEvmScheme(signer=EthAccountSigner(Account.from_key(os.environ["WALLET_KEY"])))) async def main(): async with wrapHttpxWithPayment(client) as http: r = await http.get("https://tradytics.com/api/public/v1/options/flow?symbol=NVDA&limit=5") print(r.json()) asyncio.run(main()) ``` Clients for TypeScript, Go and more are on [x402.org](https://www.x402.org). Every endpoint is also listed in the x402 Bazaar, where agents find paid APIs. # Rate limits The API is included with Pro. Each key gets 300 calls a minute and 50,000 a day. The minute limit counts every call. The daily quota counts answered calls only: errors are handed back. The day resets at 00:00 UTC. ## Headers Every response says where you stand: | Header | Meaning | | --- | --- | | `X-RateLimit-Limit` | Calls allowed per minute | | `X-RateLimit-Remaining` | Calls left this minute | | `X-RateLimit-Reset` | Seconds until the minute resets | | `X-RateLimit-Limit-Day` | Calls allowed per day | | `X-RateLimit-Remaining-Day` | Calls left today | | `X-RateLimit-Reset-Day` | Seconds until 00:00 UTC | | `X-Request-Id` | This call's id, for support | | `X-Response-Time` | Time spent on our side | ## Going over Past either limit the API answers `429` with `rate_limited` (the minute) or `quota_exceeded` (the day), and a `Retry-After` header in seconds. Wait that long and retry. ```text HTTP/1.1 429 Too Many Requests Retry-After: 41 X-RateLimit-Remaining: 0 {"error": {"status": 429, "code": "rate_limited", "message": "Over 300 calls a minute. Slow down and retry after the reset."}, "request_id": "5b415ac3ea78"} ``` # Errors A failed call answers a 4xx or 5xx status with the same JSON shape every time. ```json { "error": { "status": 400, "code": "invalid_parameter", "message": "limit: Input should be less than or equal to 1000" }, "request_id": "28edc0daeeae" } ``` | Status | Code | When | | --- | --- | --- | | 400 | `invalid_parameter` | A parameter is malformed or out of range | | 400 | `symbol_required` | This data exists per symbol: pass `symbol` | | 400 | `invalid_symbol` | The symbol isn't a ticker | | 400 | `conflicting_parameters` | Both `date` and `from`/`to` were sent | | 400 | `invalid_cursor` | The cursor wasn't taken from a previous response | | 401 | `missing_key` | No key was sent | | 401 | `invalid_key` | The key is unknown or revoked | | 403 | `pro_required` | The key's account isn't on Pro | | 403 | `missing_scope` | The key lacks the scope this endpoint needs | | 404 | `not_found` | No such endpoint, symbol or record | | 429 | `rate_limited` | Over the per-minute limit | | 429 | `quota_exceeded` | Over the daily quota | | 500 | `internal_error` | Something broke on our side | | 503 | `warming_up` | The data is being prepared for the first time: retry after `Retry-After` seconds | | 503 | `unavailable` | The source is down for a moment | Quote the `request_id` when you contact support. # Pagination Long lists come a page at a time, newest first. Ask for up to `limit` rows. When there are more, send `next_cursor` back as `cursor` with the same parameters, or call `next_url` with your key. Both fields are `null` on the last page. ```bash curl "https://tradytics.com/api/public/v1/options/flow?symbol=SPY&date=2026-10-29&limit=1000&cursor=2026-10-29:60911822&apiKey=$TRADYTICS_API_KEY" ``` Cursors are opaque: pass them as they come. A page with filters can hold fewer rows than `limit` and still have a next page, so follow `next_cursor` until it is `null`. ## Polling for new prints Options flow and dark pool prints take `since`: the newest `id` you hold. The answer lists only prints after it, oldest first, so a loop that keeps the last `id` sees every print once. ```python import os, time, requests last = 0 while True: r = requests.get("https://tradytics.com/api/public/v1/options/flow", params={"since": last, "min_premium": 250000, "apiKey": os.environ["TRADYTICS_API_KEY"]}).json() for p in r["data"]: print(p["time"], p["symbol"], p["type"], p["strike"], p["premium_usd"]) last = p["id"] time.sleep(2) ``` # Time and history Every endpoint reads time the same way. | Send | Get | | --- | --- | | Nothing | Live data, or the latest | | `date=2026-11-05` | That session as it closed (New York date) | | `from=2026-10-01&to=2026-11-05` | A range. Dates mean whole New York days; RFC 3339 times like `2026-11-05T15:30:00Z` cut inside a day | | `at=2026-11-05T15:30:00Z` | The data as it stood at that moment, nothing after it (dealer positioning) | | `since=60946937` | Rows after that `id`, oldest first: polling a live feed | Each endpoint lists the ones it takes. `date` together with `from` or `to` answers `400 conflicting_parameters`. ## How far back | Data | From | | --- | --- | | Options flow | 2025-03-31 | | Dark pool prints | 2025-06-09 | | Daily bars | 2004 | | Minute bars | Two years | | Dealer positioning, daily | About 18 months | # Data conventions What the numbers and fields mean across every endpoint. | Topic | Convention | | --- | --- | | Names | Full words in snake_case: `open_interest`, `premium_usd`. | | Money | US dollars. Fields holding a dollar amount end in `_usd`. Prices (`price`, `strike`, `open`, `close`) are dollars too. | | Percent | A field ending in `_pct` is in percent: `2.5` means 2.5%. Every other fraction is a decimal: `iv` 0.42 is 42%, `weight` 0.07 is 7%. | | Times | ISO 8601 in UTC: `2026-10-29T20:02:02Z`, named `time` or ending in `_at`. | | Days | `date` and fields ending in `_date` are New York days, `YYYY-MM-DD`. | | Options | `contract` is the OCC symbol (`NVDA261218C00150000`); `type` is `call` or `put`; `expiry` is a date. A print's `side` is `bought`, `sold` or `mid`; `aggression` runs from `-3` (below the bid) to `3` (above the ask). | | Symbols | Upper-case tickers in the `symbol` parameter, comma-separated where a list is allowed. Share classes are merged: `GOOG` reads as `GOOGL`. Index options read `SPX`. | | Missing | A value we don't have is `null`, never `0`. | | Freshness | `meta.as_of` is the snapshot or build time when available, otherwise the response time. Check source timestamps and session dates for individual values. | # Support Talk to the Tradytics team about your account, billing, API keys, the MCP server, or Tradytics in ChatGPT and Claude. | Channel | For | | --- | --- | | [hello@tradytics.com](mailto:hello@tradytics.com) | Account, billing, API keys and connected apps | | [Discord](https://discord.gg/QuvE2Z8) | Questions, ideas and the Tradytics community | For an API error, include the `request_id` from the response. # Options flow Every options print of $25K+ as it happens and back to 2025-03-31, with side, sweep or block, opening and outcome, and the flow summed by time, name, strike and contract. ## Options flow `GET /options/flow` (scope `options`, cursor-paged) Prints newest first: the live session by default, one session with `date`, or a range since 2025-03-31. Pass `since` to poll the live session, oldest first. Cancelled trades are left out. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlyings, comma separated, e.g. `NVDA,AMD`. Default all. | | `date` | query | string | One session, `YYYY-MM-DD`, as it closed. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `since` | query | integer | Only prints after this `id`, oldest first. | | `type` | query | string | `call` or `put`. | | `kind` | query | string | `sweep`, `block`, `split` or `single`. | | `side` | query | string | `bought`, `sold` or `mid`. | | `min_premium` | query | integer | Minimum premium, USD. Default `0`. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. | | `dte` | query | integer | Only contracts expiring within this many days; `0` for same-day. | | `contract` | query | string | One contract, OCC symbol, e.g. `NVDA261218C00150000`. | | `opening` | query | boolean | Only prints larger than the open interest. Default `false`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id` | integer | Print id; ids rise with time within a session. | | `time` | string | When it printed, UTC. | | `contract` | string | OCC symbol, with the root it traded under (`SPXW` for SPX weeklies, `NDXP`, `RUTW`, `VIXW`). | | `symbol` | string | Underlying (index options read `SPX`, `NDX`, `VIX`). | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry from the session. | | `spot` | number | Underlying price at the print. | | `size` | integer | Contracts. | | `price` | number | Fill price (a sweep's or split's size-weighted average). | | `premium_usd` | integer | Premium paid. | | `bid, ask` | number | The NBBO in force just before the print; `ask` null without an offer. | | `side` | string | `bought` (`aggression` above 0), `sold` (below 0) or `mid`. | | `aggression` | integer | `-3` below the bid, `-2` at the bid, `-1` near it, `0` mid, `1` near the ask, `2` at it, `3` above. | | `side_checked` | boolean | `true` once `bid`, `ask`, `side` and `aggression` are checked against the NBBO at the print's exact time, about a minute after it prints; final from then on. | | `kind` | string | `sweep` (across exchanges), `block` (a cross or 5,000+ contracts), `split` or `single`. | | `condition` | string | `spread`, `complex`, `floor`, `auction`, `iso` or null. | | `opening` | boolean | Size above the open interest: new positions. | | `open_interest` | integer | Open interest before the session. | | `volume` | integer | The contract's volume in the session so far. | | `iv` | number | Implied volatility; null for VIX options and where the price allows none. | | `delta` | number | Delta (puts negative). | | `events` | array | `pre_earnings`, `post_earnings`, `ex_dividend`, `ssr`. | ```bash curl "https://tradytics.com/api/public/v1/options/flow?symbol=NVDA&from=2026-11-03&min_premium=500000&limit=3&apiKey=YOUR_API_KEY" ``` ## One print `GET /options/flow/{id}` (scope `options`) One print with the session's flow up to it, and what the contract did after: its close the next session and its value at expiry (the latest close until then). `outcome` is null until the session after the print has closed, or the contract has expired. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | integer | A print's `id`. Required. | | Field | Type | Description | | --- | --- | --- | | `id` | integer | Print id; ids rise with time within a session. | | `time` | string | When it printed, UTC. | | `contract` | string | OCC symbol, with the root it traded under (`SPXW` for SPX weeklies, `NDXP`, `RUTW`, `VIXW`). | | `symbol` | string | Underlying (index options read `SPX`, `NDX`, `VIX`). | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry from the session. | | `spot` | number | Underlying price at the print. | | `size` | integer | Contracts. | | `price` | number | Fill price (a sweep's or split's size-weighted average). | | `premium_usd` | integer | Premium paid. | | `bid, ask` | number | The NBBO in force just before the print; `ask` null without an offer. | | `side` | string | `bought` (`aggression` above 0), `sold` (below 0) or `mid`. | | `aggression` | integer | `-3` below the bid, `-2` at the bid, `-1` near it, `0` mid, `1` near the ask, `2` at it, `3` above. | | `side_checked` | boolean | `true` once `bid`, `ask`, `side` and `aggression` are checked against the NBBO at the print's exact time, about a minute after it prints; final from then on. | | `kind` | string | `sweep` (across exchanges), `block` (a cross or 5,000+ contracts), `split` or `single`. | | `condition` | string | `spread`, `complex`, `floor`, `auction`, `iso` or null. | | `opening` | boolean | Size above the open interest: new positions. | | `open_interest` | integer | Open interest before the session. | | `volume` | integer | The contract's volume in the session so far. | | `iv` | number | Implied volatility; null for VIX options and where the price allows none. | | `delta` | number | Delta (puts negative). | | `events` | array | `pre_earnings`, `post_earnings`, `ex_dividend`, `ssr`. | | `context` | object | The session up to and including the print: `session`, `contract_prints`, `contract_premium_usd`, `contract_net_premium_usd` (bought minus sold), `symbol_prints`, `symbol_premium_usd`, `symbol_net_premium_usd` (bullish minus bearish). | | `outcome` | object | `next_date`, `next_close` and `next_return_pct` (null if it didn't trade); `final_date`, `final_price` (intrinsic value at the expiry close once `expired`, at the open for AM-settled index monthlies and VIX, else the latest close) and `final_return_pct`; returns are from the print's price. | ```bash curl "https://tradytics.com/api/public/v1/options/flow/61360107?apiKey=YOUR_API_KEY" ``` ## Flow timeline `GET /options/flow/timeline` (scope `options`, cursor-paged) Net call and put premium, net delta and put/call per interval, oldest first, with the price. Without `symbol`: every single stock (no ETFs or index products), priced by SPY. Intraday intervals cover one session (default the latest); `1d` takes `from`/`to` (default 30 days). | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlyings, comma separated. Default all single stocks. | | `interval` | query | string | `1m`, `5m`, `15m`, `1h` or `1d`. Default `5m`. | | `date` | query | string | One session, `YYYY-MM-DD`, as it closed. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `dte` | query | integer | Only contracts expiring within this many days; `0` for same-day. | | Field | Type | Description | | --- | --- | --- | | `time` | string | Interval start, UTC (`1d`: the session's open). | | `date` | string | Session. | | `call_premium_usd` | integer | Bought minus sold, calls. | | `put_premium_usd` | integer | Bought minus sold, puts. | | `net_premium_usd` | integer | Call minus put: positive is bullish. | | `net_delta_usd` | integer | Delta bought minus sold, in stock dollars. | | `put_call_ratio` | number | Put premium over call premium, all prints. | | `prints` | integer | Prints. | | `price` | number | The underlying's close at the interval's end (one symbol, or SPY market-wide). | ```bash curl "https://tradytics.com/api/public/v1/options/flow/timeline?symbol=NVDA&interval=1d&from=2026-10-28&apiKey=YOUR_API_KEY" ``` ## Flow leaders `GET /options/flow/leaders` (scope `options`, cursor-paged) Single stocks, or their sectors, ranked by net premium for the latest session or `date`, with premium against their 20-session average. | Param | In | Type | Description | | --- | --- | --- | --- | | `by` | query | string | `symbol` or `sector`. Default `symbol`. | | `direction` | query | string | `bullish` or `bearish`. Bullish puts the most net bought first. Default `bullish`. | | `date` | query | string | One session, `YYYY-MM-DD`, as it closed. | | `limit` | query | integer | Rows per page, up to 100. Default `25`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker (null by sector). | | `sector` | string | Sector. | | `net_premium_usd` | integer | Bullish minus bearish. | | `bullish_premium_usd` | integer | Calls bought and puts sold. | | `bearish_premium_usd` | integer | Puts bought and calls sold. | | `premium_usd` | integer | All premium. | | `prints` | integer | Prints. | | `premium_vs_average` | number | Premium over its 20-session daily average. | | `change_pct` | number | The stock's change, % (a sector's: market-cap weighted). | | `price` | number | Close or last (null by sector). | ```bash curl "https://tradytics.com/api/public/v1/options/flow/leaders?direction=bullish&limit=5&apiKey=YOUR_API_KEY" ``` ## Flow by strike `GET /options/flow/strikes` (scope `options`, cursor-paged) Premium by strike and expiry for one underlying over the latest session, `date` or a range, busiest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `SPY`. Required. | | `date` | query | string | One session, `YYYY-MM-DD`, as it closed. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `strike` | number | Strike. | | `expiry` | string | Expiration. | | `call_premium_usd` | integer | Bought minus sold, calls. | | `put_premium_usd` | integer | Bought minus sold, puts. | | `net_premium_usd` | integer | Call minus put. | | `premium_usd` | integer | All premium. | | `prints` | integer | Prints. | ```bash curl "https://tradytics.com/api/public/v1/options/flow/strikes?symbol=NVDA&from=2026-10-30&to=2026-11-05&limit=10&apiKey=YOUR_API_KEY" ``` ## Unusual contracts `GET /options/unusual` (scope `options`, cursor-paged) Contracts whose session volume ran past their open interest, with volume against their 20-session average, for the latest session or `date`. Largest premium first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlyings, comma separated, e.g. `NVDA,AMD`. Default all. | | `date` | query | string | One session, `YYYY-MM-DD`, as it closed. | | `type` | query | string | `call` or `put`. | | `min_premium` | query | integer | Minimum premium in the contract's prints, USD. Default `100000`. | | `sort` | query | string | `premium` or `volume_to_open_interest`. Default `premium`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `contract` | string | OCC symbol, with the root it traded under (`SPXW` for SPX weeklies, `NDXP`, `RUTW`, `VIXW`). | | `symbol` | string | Underlying (index options read `SPX`, `NDX`, `VIX`). | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry from the session. | | `volume` | integer | Contracts traded in the session (so far, live). | | `open_interest` | integer | Open interest before the session. | | `volume_to_open_interest` | number | Volume over open interest. | | `average_volume` | number | Daily volume over the 20 sessions before. | | `volume_to_average` | number | Volume over `average_volume`. | | `premium_usd` | integer | Premium in its prints. | | `net_premium_usd` | integer | Bought minus sold. | | `prints` | integer | Prints. | | `spot` | number | Underlying price at the last print. | | `price` | number | Last print's price. | | `iv` | number | Implied volatility at the last print. | | `last_time` | string | Last print, UTC. | ```bash curl "https://tradytics.com/api/public/v1/options/unusual?limit=10&apiKey=YOUR_API_KEY" ``` # Options contracts Every listed contract with quotes, greeks and IV, the market-wide contract screener, one contract's bars and open interest by strike or expiry. ## Option chain `GET /options/chain` (scope `options`, cursor-paged) A symbol's standard contracts (100 shares) with quotes, volume, open interest, IV and greeks, live (refreshed every 30 seconds) or any session since 2026-11-06 at its close. Sorted by expiry, strike, calls first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `AAPL`. Required. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. | | `type` | query | string | `call` or `put`. | | `min_dte` | query | integer | Fewest days to expiry. | | `max_dte` | query | integer | Most days to expiry. | | `min_otm_pct` | query | number | Least out of the money, % (negative is in the money). | | `max_otm_pct` | query | number | Most out of the money, %. | | `min_delta` | query | number | Lowest absolute delta, 0 to 1. | | `max_delta` | query | number | Highest absolute delta, 0 to 1. | | `min_strike` | query | number | Lowest strike. | | `max_strike` | query | number | Highest strike. | | `date` | query | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `contract` | string | OCC symbol. | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry. | | `bid, ask, mid` | number | The quote; null without an offer. | | `last` | number | Last trade. | | `volume` | integer | Contracts traded in the session. | | `open_interest` | integer | Open contracts as of the session before. | | `iv` | number | Implied volatility. At a close: Black-Scholes on the mid, 4% rate, each expiry's carry (0 to 100%) from put-call parity. | | `delta, gamma, theta, vega` | number | Greeks; theta per day, vega per vol point. | | `underlying_price` | number | The stock's price now; with `date`, its close. | | `updated_at` | string | Time of the quote, UTC. | ```bash curl "https://tradytics.com/api/public/v1/options/chain?symbol=SPY&max_dte=7&min_otm_pct=-1&max_otm_pct=1&apiKey=YOUR_API_KEY" ``` ## Expirations `GET /options/expirations` (scope `options`, cursor-paged) Every listed expiry, soonest first, with its contracts, strikes and cycle. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `AAPL`. Required. | | Field | Type | Description | | --- | --- | --- | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry. | | `contracts` | integer | Calls and puts listed. | | `strikes` | integer | Distinct strikes. | | `cycle` | string | `monthly` (the third Friday), `quarterly` (a quarter's last weekday) or `weekly`. | ```bash curl "https://tradytics.com/api/public/v1/options/expirations?symbol=TSLA&apiKey=YOUR_API_KEY" ``` ## Contracts `GET /options/contracts` (scope `options`, cursor-paged) Contracts of the ~4,000 most traded stocks and ETFs at the latest close (or `date`'s), ranked by volume, premium, IV, open interest or the change in either: the options screener. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Comma-separated underlyings, up to 100. Default the whole market. | | `sort` | query | string | `volume`, `premium`, `iv`, `iv_change`, `open_interest` or `open_interest_change`. Default `volume`. | | `order` | query | string | `desc` or `asc`. Default `desc`. | | `type` | query | string | `call` or `put`. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. | | `min_dte` | query | integer | Fewest days to expiry. | | `max_dte` | query | integer | Most days to expiry. | | `min_otm_pct` | query | number | Least out of the money, % (negative is in the money). | | `max_otm_pct` | query | number | Most out of the money, %. | | `min_delta` | query | number | Lowest absolute delta, 0 to 1. | | `max_delta` | query | number | Highest absolute delta, 0 to 1. | | `min_volume` | query | integer | Fewest contracts traded. | | `min_open_interest` | query | integer | Least open interest. | | `min_price` | query | number | Lowest mid (the last trade without a quote). | | `max_price` | query | number | Highest mid. | | `date` | query | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `contract` | string | OCC symbol. | | `symbol` | string | Underlying. | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry. | | `underlying_price` | number | The stock's close. | | `otm_pct` | number | Out of the money, % (negative is in the money). | | `bid, ask, mid` | number | The quote; null without an offer. | | `last` | number | Last trade. | | `vwap` | number | The session's volume-weighted price. | | `volume` | integer | Contracts traded. | | `premium_usd` | integer | Dollars traded. | | `open_interest` | integer | Open contracts as of the session before. | | `open_interest_change` | integer | Change since the session before. | | `volume_to_open_interest` | number | Volume over open interest. | | `iv_change` | number | IV change since the session before. | | `iv` | number | Implied volatility. At a close: Black-Scholes on the mid, 4% rate, each expiry's carry (0 to 100%) from put-call parity. | | `delta, gamma, theta, vega` | number | Greeks; theta per day, vega per vol point. | ```bash curl "https://tradytics.com/api/public/v1/options/contracts?sort=premium&limit=5&apiKey=YOUR_API_KEY" ``` ## Contract `GET /options/contracts/{contract}` (scope `options`) One contract now: the quote with sizes, the last trade, the session's range and volume, open interest, IV, greeks and the stock's price. | Param | In | Type | Description | | --- | --- | --- | --- | | `contract` | path | string | OCC symbol, e.g. `SPY271217C00750000` (`O:` prefix optional). Required. | | Field | Type | Description | | --- | --- | --- | | `contract` | string | OCC symbol. | | `symbol` | string | Underlying. | | `type` | string | `call` or `put`. | | `strike` | number | Strike. | | `expiry` | string | Expiration, `YYYY-MM-DD`. | | `dte` | integer | Calendar days to expiry. | | `shares_per_contract` | integer | Shares delivered. | | `adjusted` | boolean | A non-standard deliverable after a split, spin-off or special dividend (BABA2: 100 shares and $95): no IV, greeks or break-even. | | `bid, ask, mid` | number | The quote; null without an offer. | | `last` | number | Last trade. | | `bid_size, ask_size` | integer | Contracts at the bid and ask. | | `last_size` | integer | Contracts in the last trade. | | `last_trade_at` | string | Time of the last trade, UTC. | | `open, high, low, close` | number | The session's prices. | | `previous_close` | number | The session before's close. | | `change_pct` | number | Change from `previous_close`, %. | | `volume` | integer | Contracts traded in the session. | | `open_interest` | integer | Open contracts as of the session before. | | `iv` | number | Implied volatility. At a close: Black-Scholes on the mid, 4% rate, each expiry's carry (0 to 100%) from put-call parity. | | `delta, gamma, theta, vega` | number | Greeks; theta per day, vega per vol point. | | `underlying_price` | number | The stock's price. | | `break_even_price` | number | Strike plus (call) or minus (put) the mid. | | `updated_at` | string | Time of the quote, UTC. | ```bash curl "https://tradytics.com/api/public/v1/options/contracts/SPY271217C00750000?apiKey=YOUR_API_KEY" ``` ## Contract bars `GET /options/contracts/{contract}/bars` (scope `options`, cursor-paged) OHLCV bars with VWAP for one contract, oldest first. Without `from`: 5 days of `1m`, 10 of `5m`, 20 of `15m`, 60 of `1h`, a year of `1d`. | Param | In | Type | Description | | --- | --- | --- | --- | | `contract` | path | string | OCC symbol, e.g. `SPY271217C00750000` (`O:` prefix optional). Required. | | `timeframe` | query | string | `1m`, `5m`, `15m`, `1h` or `1d`. Default `1d`. | | `from` | query | string | Earliest bar, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Latest bar, `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `limit` | query | integer | Rows per page, up to 5000. Default `500`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `time` | string | Bar start, UTC; daily bars carry the session date at 00:00 UTC. | | `open, high, low, close` | number | Prices. | | `volume` | integer | Contracts. | | `vwap` | number | Volume-weighted average price. | | `trades` | integer | Trades in the bar. | ```bash curl "https://tradytics.com/api/public/v1/options/contracts/SPY271217C00750000/bars?timeframe=1d&limit=5&apiKey=YOUR_API_KEY" ``` ## Open interest `GET /options/open-interest` (scope `options`, cursor-paged) Call and put open interest by strike or by expiry with the change since the session before, at the latest close (or `date`'s). | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `AAPL`. Required. | | `by` | query | string | `strike` or `expiry`. Default `strike`. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. Default all. | | `date` | query | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | `limit` | query | integer | Rows per page, up to 1000. Default `1000`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `strike` | number | Strike; null by expiry. | | `expiry` | string | `YYYY-MM-DD`; null by strike across all expiries. | | `call_open_interest, put_open_interest` | integer | Open contracts. | | `call_open_interest_change, put_open_interest_change` | integer | Change since the session before. | ```bash curl "https://tradytics.com/api/public/v1/options/open-interest?symbol=SPY&by=expiry&apiKey=YOUR_API_KEY" ``` # Dealer positioning Dealer gamma, delta, vanna and charm by strike or expiry for about 2,500 stocks, ETFs and indices, every 5 minutes of the session, at any moment since 2026-11-06, and 18 months of daily totals. ## Dealer exposure `GET /options/exposure` (scope `options`) The latest run of the dealer model (every 5 minutes of the session) or the one standing at `at` (since 2026-11-06), by strike or by expiry, with its walls, gamma flip and max pain. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `SPY`. Required. | | `greek` | query | string | `gamma`, `delta`, `vanna` or `charm`. Default `gamma`. | | `by` | query | string | `strike` or `expiry`. Default `strike`. | | `expiry` | query | string | One expiry, `YYYY-MM-DD`. | | `dte` | query | integer | Only expiries within this many days; `0` for same-day. | | `at` | query | string | A moment, RFC 3339: the run standing then. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Underlying. | | `time` | string | When the run was written, UTC. | | `date` | string | The model's session. | | `spot` | number | The underlying's price: now for the latest run, at the run with `at`. | | `greek` | string | As asked. | | `unit` | string | `usd_per_1pct_move` (gamma), `shares` (delta), `usd_per_vol_point` (vanna), `shares_per_day` (charm). | | `model` | string | Who the dealers are short and long. | | `total` | number | Net over the rows. | | `levels` | object | `call_wall` and `put_wall` (the strikes with the most call and put gamma in the view), `flip` (where net gamma changes sign within 5% of spot, else null), `max_pain` (the strike where the expiry's open contracts pay holders least: the expiry asked, else the nearest). | | `rows[]` | array | `strike` (by strike) or `expiry` (by expiry), the other null, then: | | `call` | number | Calls' exposure (null for vanna and charm). | | `put` | number | Puts' exposure (null for vanna and charm). | | `net` | number | Both. | ```bash curl "https://tradytics.com/api/public/v1/options/exposure?symbol=SPY&greek=gamma&dte=7&apiKey=YOUR_API_KEY" ``` ## Exposure history `GET /options/exposure/history` (scope `options`, cursor-paged) Daily dealer net delta and net gamma against the close, each session of about 18 months, oldest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `SPY`. Required. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | Field | Type | Description | | --- | --- | --- | | `date` | string | Session. | | `close` | number | Close. | | `net_delta` | integer | Dealer delta, shares, every expiry. | | `net_gamma_usd` | integer | Dealer gamma, dollars of delta per 1% move. | ```bash curl "https://tradytics.com/api/public/v1/options/exposure/history?symbol=SPY&from=2026-10-01&apiKey=YOUR_API_KEY" ``` # Volatility Implied against realized volatility for every optionable stock and ETF: IV rank, term structure, skew, expected moves and a daily history. ## Volatility `GET /options/volatility` (scope `options`) One symbol's 30-day ATM IV against its past year and its realized vol, the ATM term structure, 25-delta skew and the moves options price. Live in regular hours until the close is stored (about 16:25 New York), then that close. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `AAPL`. Required. | | `date` | query | string | A past session, `YYYY-MM-DD`: as it stood at the close. Default the latest. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Underlying. | | `date` | string | Session, `YYYY-MM-DD`. | | `underlying_price` | number | The stock's price. | | `atm_iv_30d` | number | 30-day constant-maturity at-the-money IV. | | `iv_rank` | number | Where `atm_iv_30d` sits between the past year's low (0) and high (1). | | `iv_percentile` | number | Share of the past year's sessions with lower `atm_iv_30d`. | | `realized_vol_20d, realized_vol_30d` | number | Close-to-close volatility, annualized. | | `vrp` | number | `atm_iv_30d` minus `realized_vol_30d`. | | `expected_move` | object | The 1-sd move to the next expiry: `expiry`, `dte`, `move_usd`, `move_pct`. | | `earnings_move` | object | The same to the first expiry after `earnings_date`; null without a date. | | `term[]` | array | `expiry`, `dte`, `atm_iv`. | | `skew[]` | array | `expiry`, `dte`, `put_25d_iv`, `call_25d_iv`, `skew` (put minus call). | ```bash curl "https://tradytics.com/api/public/v1/options/volatility?symbol=NVDA&apiKey=YOUR_API_KEY" ``` ## Volatility history `GET /options/volatility/history` (scope `options`, cursor-paged) Daily 30-day ATM IV with its rank and percentile, realized vol and the close, oldest first, from November 2025. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Underlying, e.g. `AAPL`. Required. | | `from` | query | string | First day, `YYYY-MM-DD`. Default a year before `to`. | | `to` | query | string | Last day, `YYYY-MM-DD`. Default today. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `date` | string | Session, `YYYY-MM-DD`. | | `close` | number | The stock's close. | | `atm_iv_30d` | number | 30-day constant-maturity at-the-money IV. | | `iv_rank` | number | Where `atm_iv_30d` sits between the past year's low (0) and high (1). | | `iv_percentile` | number | Share of the past year's sessions with lower `atm_iv_30d`. | | `realized_vol_20d, realized_vol_30d` | number | Close-to-close volatility, annualized. | ```bash curl "https://tradytics.com/api/public/v1/options/volatility/history?symbol=NVDA&from=2026-10-01&to=2026-10-31&apiKey=YOUR_API_KEY" ``` # Dark pool Block prints of 25,000+ shares and $250K+ on and off exchange, live and since 2025-06-09, each ranked against the stock's own year, with price levels and daily totals. ## Dark pool prints `GET /darkpool/prints` (scope `darkpool`, cursor-paged) Prints newest first (or largest): the live session by default (07:00 to 18:00 New York), one session with `date`, or a range since 2025-06-09. The morning after, each session is final: 04:00 to 20:00, the auctions and ranks, the same ids. Pass `since` to poll the live session as prints arrive. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Tickers, comma separated. Default all. | | `date` | query | string | One session, `YYYY-MM-DD`. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `since` | query | integer | Only prints that arrived after the one with this `id`, as they arrived. | | `min_notional` | query | integer | Minimum notional, USD. Default `0`. | | `kind` | query | string | `trade`, `close` or `open` (the auctions). | | `venue` | query | string | `dark_pool` or `exchange`. Dark pool prints are off exchange. | | `max_rank` | query | integer | Only prints ranked this high or better. | | `sort` | query | string | `time` or `notional`. Default `time`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id` | integer | Print id, the same live and archived: the session, the ticker and the tape's sequence number. Unique; pages run by time, then id. | | `time` | string | When it printed, UTC. | | `symbol` | string | Ticker. | | `price` | number | Price. | | `size` | integer | Shares. | | `notional_usd` | integer | Price times shares. | | `venue` | string | `dark_pool` or the exchange: `nyse`, `nasdaq`, `nyse_arca`, `cboe_bzx` … | | `conditions` | array | Sale conditions: `form_t`, `average_price`, `prior_reference_price`, `contingent`, `qualified_contingent`, `derivatively_priced`, `cross`, `closing`, `intermarket_sweep`, `seller`, `sold_out_of_sequence`, `stock_option`. | | `kind` | string | `trade`, `close` or `open`. | | `rank` | integer | Its place by notional among the stock's prints of its kind over the 12 months to its session (1 is the largest); null until the morning after. | ```bash curl "https://tradytics.com/api/public/v1/darkpool/prints?symbol=AAPL&from=2026-10-28&to=2026-11-04&limit=3&apiKey=YOUR_API_KEY" ``` ## Dark pool levels `GET /darkpool/levels` (scope `darkpool`, cursor-paged) The price levels with the most dark pool block money over the last `window` sessions to `date`, biggest first: off-exchange block trades in bins of 0.25% of the last close. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker, e.g. `AAPL`. Required. | | `date` | query | string | One session, `YYYY-MM-DD`. | | `window` | query | integer | Sessions, up to 250. Default `10`. | | `limit` | query | integer | Levels, up to 200. Default `20`. | | Field | Type | Description | | --- | --- | --- | | `price` | number | Notional-weighted price. | | `low, high` | number | The bin's bounds. | | `notional_usd` | integer | Dark pool notional. | | `prints` | integer | Prints. | | `share` | number | Of the window's dark pool notional. | | `distance_pct` | number | From the last close, %. | ```bash curl "https://tradytics.com/api/public/v1/darkpool/levels?symbol=AAPL&window=10&apiKey=YOUR_API_KEY" ``` ## Dark pool by day `GET /darkpool/daily` (scope `darkpool`, cursor-paged) Session totals newest first: one stock's sessions (default the last year, zeros on a session it traded without blocks), or without `symbol` one session's names by dark pool notional. Each session ranked against the stock's own year. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | One ticker. Leave out for a session's top names. | | `date` | query | string | One session, `YYYY-MM-DD`. | | `from` | query | string | Start: `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | End: `YYYY-MM-DD` or an RFC 3339 time. Default now. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `date` | string | Session. | | `symbol` | string | Ticker. | | `dark_notional_usd` | integer | Off-exchange block trades. | | `exchange_notional_usd` | integer | Block trades on exchanges. | | `closing_auction_usd, opening_auction_usd` | integer | The auctions; null for the live session. | | `prints` | integer | Block trades. | | `close` | number | Close (last for the live session). | | `rank` | integer | The session's place by `dark_notional_usd` among the stock's sessions over the 12 months to it; null without dark pool trades. | ```bash curl "https://tradytics.com/api/public/v1/darkpool/daily?symbol=AAPL&from=2026-10-01&apiKey=YOUR_API_KEY" ``` # Stocks Live quotes, chart bars down to the second, the whole market in one call, technicals, short data and corporate actions for every US stock. ## Quotes `GET /stocks/quotes` (scope `market`, cursor-paged) Quotes for up to 100 distinct tickers, or the full market ranked by dollar volume. Refreshes about every 30 seconds. meta.as_of is the snapshot time; price_at is the source minute. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Comma-separated tickers, up to 100. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, name` | string | Ticker and short name. | | `date` | string | The session the price, change and volume are from: today, or the last one the symbol traded in. | | `price` | number | Latest price, including premarket and after-hours. | | `price_at` | string | UTC start of the minute that supplied the price. Null when only the prior daily close is available. | | `session` | string | Trading phase of the price: premarket, regular, or after_hours. | | `regular_close` | number | Regular-session close for the quote date when available. | | `stale` | boolean | True when the price is from an earlier trading date. | | `volume_source` | string | daily, consolidated, consolidated_cached, or minute_bars. Null for an index. | | `change, change_pct` | number | Change from the previous close, in dollars and percent. | | `previous_close` | number | The previous session's close. | | `volume` | integer | Shares traded that session, 04:00 to 20:00 New York; null for an index. | | `dollar_volume_usd` | integer | Dollars traded that session. | | `gap_pct` | number | The open against the previous close (before the open, the pre-market move); null before the first trade. | | `relative_volume` | number | Today's volume over the 20-session average; null before the first trade. | ```bash curl "https://tradytics.com/api/public/v1/stocks/quotes?symbol=AAPL%2CMSFT%2CNVDA&apiKey=YOUR_API_KEY" ``` ## Bars `GET /stocks/bars` (scope `market`, cursor-paged) Split-adjusted OHLCV bars with VWAP, oldest first, including the forming bar. Daily and weekly bars go back to 2004 for every US stock; intraday bars cover two years of the ~3,000 most traded symbols and the four major indices, 1-second bars the last 7 days. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `timeframe` | query | string | `1s`, `1m`, `5m`, `15m`, `30m`, `1h`, `4h`, `1d` or `1w`. Default `1d`. | | `from` | query | string | Start of the range, `YYYY-MM-DD` or an RFC 3339 time. Weekly bars include the week containing this date, starting Monday. | | `to` | query | string | End of the range, `YYYY-MM-DD` or an RFC 3339 time. A date includes the whole New York session. A historical timestamp includes only daily sessions that had closed by then. Default now. | | `limit` | query | integer | Rows per page, up to 5000. Default `500`. | | `cursor` | query | string | `next_cursor` from the previous page: the bars before it. | | Field | Type | Description | | --- | --- | --- | | `time` | string | Bar start, UTC. Intraday bars align to New York time; daily and weekly bars carry the session date at 00:00 UTC. | | `open, high, low, close` | number | Prices. | | `volume` | integer | Shares; null for an index. | | `vwap` | number | Volume-weighted average price of the bar; null for an index. | ```bash curl "https://tradytics.com/api/public/v1/stocks/bars?symbol=SPY&timeframe=1d&limit=5&apiKey=YOUR_API_KEY" ``` ## Market snapshot `GET /stocks/snapshot` (scope `market`, cursor-paged) Every listed stock, fund and index at once with its move, volume and size, sorted any way: movers, most active and the heatmap from one call. | Param | In | Type | Description | | --- | --- | --- | --- | | `sort` | query | string | `change_pct`, `change`, `price`, `volume`, `dollar_volume_usd`, `relative_volume`, `market_cap_usd` or `symbol`. Default `dollar_volume_usd`. | | `order` | query | string | `asc` or `desc`. Default `desc`. | | `kind` | query | string | `stock`, `etf`, `adr` or `index`. | | `sector` | query | string | One sector, e.g. `Technology` or `Financial Services`. | | `min_market_cap_usd` | query | number | Only companies at least this large. | | `min_dollar_volume_usd` | query | number | Only symbols trading at least this much today. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, name, kind` | string | Ticker, short name, `stock`, `etf`, `adr` or `index`. | | `sector, industry` | string | The company's sector and industry, named as on every endpoint; null for funds and indices. | | `market_cap_usd` | integer | Shares outstanding at the price. | | `date` | string | The session the price, change and volume are from. | | `price, change, change_pct` | number | Last trade and its change from the previous close. | | `volume, dollar_volume_usd` | integer | Shares and dollars traded that session. | | `relative_volume` | number | Today's volume over the 20-session average; null before the first trade. | ```bash curl "https://tradytics.com/api/public/v1/stocks/snapshot?sort=change_pct&min_market_cap_usd=2000000000&min_dollar_volume_usd=20000000&limit=10&apiKey=YOUR_API_KEY" ``` ## Technicals `GET /stocks/technicals` (scope `market`) A technical rating with the signals, moving averages and oscillators behind it, and monthly seasonality, on daily bars through today. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | Field | Type | Description | | --- | --- | --- | | `symbol, price` | mixed | Ticker and price. | | `rating` | number | -1 (strong sell) to 1 (strong buy). | | `signals[]` | array | `name` and `lean` (-1, 0 or 1). | | `moving_averages[]` | array | `name`, `days`, `average` (`simple` or `exponential`), `value`, `price_above`. | | `oscillators[]` | array | `name` (RSI, MFI, stochastic, CCI), `value`, `overbought` and `oversold` levels. | | `macd, macd_signal, adx, atr` | number | MACD (12, 26, 9) and its signal line, ADX, average true range in dollars. | | `seasonality[]` | array | `month`, `up_years`, `down_years`. | ```bash curl "https://tradytics.com/api/public/v1/stocks/technicals?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Short interest `GET /stocks/short-interest` (scope `market`, cursor-paged) Short interest at every FINRA settlement date, twice a month, newest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `from` | query | string | First day, `YYYY-MM-DD`. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, settlement_date` | string | Ticker and settlement date. | | `short_interest` | integer | Shares sold short. | | `average_daily_volume` | integer | Average daily shares traded. | | `days_to_cover` | number | Short interest over average daily volume. | ```bash curl "https://tradytics.com/api/public/v1/stocks/short-interest?symbol=AAPL&limit=5&apiKey=YOUR_API_KEY" ``` ## Short volume `GET /stocks/short-volume` (scope `market`, cursor-paged) Daily off-exchange short sale volume reported to FINRA, newest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `from` | query | string | First day, `YYYY-MM-DD`. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, date` | string | Ticker and session. | | `short_volume, short_exempt_volume` | integer | Shares sold short, and those exempt. | | `total_volume` | integer | All shares reported. | | `short_volume_ratio` | number | Short volume over total volume, decimal. | ```bash curl "https://tradytics.com/api/public/v1/stocks/short-volume?symbol=AAPL&limit=5&apiKey=YOUR_API_KEY" ``` ## Dividends and splits `GET /stocks/corporate-actions` (scope `market`, cursor-paged) Dividends and splits, newest first: one symbol's whole history, or the whole market's within up to 93 days (default a week back to a month ahead). | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | One ticker. Omit for the whole market. | | `type` | query | string | `dividend` or `split`. Default both. | | `from` | query | string | First day, `YYYY-MM-DD`. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id, symbol, type` | string | The action, its ticker, `dividend` or `split`. | | `date` | string | Ex-dividend date, or the split's execution date. | | `declaration_date, record_date, pay_date` | string | Dividends: when declared, recorded and paid. | | `amount, currency` | mixed | Dividends: cash per share and its currency. | | `frequency` | integer | Dividends: payments a year (0 one-off). | | `distribution` | string | Dividends: `recurring`, `special` and the like. | | `split_from, split_to` | number | Splits: old shares for new (1 to 4 is a 4-for-1). | | `split_type` | string | `forward_split`, `reverse_split` or `stock_dividend`. | | `adjustment_factor` | number | What earlier prices are multiplied by for this action. | ```bash curl "https://tradytics.com/api/public/v1/stocks/corporate-actions?symbol=AAPL&limit=5&apiKey=YOUR_API_KEY" ``` # Fundamentals Every US filer's income statements, balance sheets and cash flow since 2009, built from its own filings the day they are filed, ratios at the price now or any close, and what analysts expect, report by report. ## Company profile `GET /fundamentals/profile` (scope `research`) The company, its size and its valuation at the price now. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `name` | string | Short name, e.g. `Apple`. | | `legal_name` | string | Registered name. | | `description` | string | What the company does. | | `sector, industry` | string | Sector and industry. | | `exchange, country` | string | Listing exchange and country. | | `employees` | integer | Full-time employees. | | `website` | string | Company site. | | `ipo_date` | string | First trading day, `YYYY-MM-DD`. | | `is_etf` | boolean | Whether it is a fund. | | `price` | number | Price now, as `/stocks/quotes` has it. | | `price_date` | string | Session of the price. | | `market_cap_usd, enterprise_value_usd` | number | Market cap (every share class) and enterprise value at that price. | | `shares_outstanding, float_shares` | integer | Shares outstanding and free float. | | `valuation` | object | `pe`, `forward_pe` (on the next fiscal year's average EPS estimate), `ps`, `pb`, `ev_to_ebitda`. | | `margins` | object | `gross`, `operating`, `net` over the trailing twelve months, decimals. | | `dividend_yield` | number | Trailing yield, decimal. | | `beta` | number | Beta. | | `year_high, year_low` | number | Highest and lowest price of the last 52 weeks. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/profile?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Income statement `GET /fundamentals/income-statement` (scope `research`, cursor-paged) Quarterly, annual or trailing-twelve-month income statements from the 10-Qs and 10-Ks, newest first, at the latest filed figures; a renamed ticker keeps its history (`META` includes its years as `FB`). Q4 is the year less nine months. A line the filing doesn't show, or shows as zero, is `null`. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `period` | query | string | `quarter`, `annual` or `ttm` (trailing twelve months). Default `quarter`. | | `limit` | query | integer | Periods, newest first, up to 200 (every filing since 2009). Default `12`. | | `from` | query | string | Earliest period end, `YYYY-MM-DD`. | | `to` | query | string | Latest period end, `YYYY-MM-DD`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `fiscal_year` | integer | Fiscal year, as the company names it. | | `fiscal_period` | string | `Q1` to `Q4` (for `ttm`, the quarter the twelve months end with) or `FY`. | | `period_end` | string | Last day of the period, `YYYY-MM-DD`. | | `filed_date` | string | Date of the latest filing behind these numbers (a later filing restates earlier periods). | | `first_filed_date` | string | Date the period was first on file in full. | | `accession` | string | SEC accession number of that latest filing. | | `template` | string | `standard`, `bank`, `insurer` or `reit`: which industry lines apply. | | `currency` | string | Reporting currency, `USD` (filers reporting in another currency, and 20-F and 40-F filers, are not covered). | | `revenue_usd` | number | Revenue (banks: net interest income plus noninterest income; insurers and REITs: total revenues). | | `cost_of_revenue_usd` | number | Cost of revenue (`null` for banks and insurers). | | `gross_profit_usd` | number | Gross profit, or revenue less cost of revenue where the statement doesn't show it (`null` for banks and insurers). | | `research_and_development_usd` | number | R&D. | | `selling_general_and_administrative_usd` | number | SG&A. | | `depreciation_and_amortization_usd` | number | Depreciation and amortization (the cash flow statement's where the income statement has none). | | `other_operating_expenses_usd` | number | Other operating expenses. | | `operating_expenses_usd` | number | Total operating expenses (banks: noninterest expense). | | `operating_income_usd` | number | Operating income. | | `interest_income_usd` | number | Interest income. | | `interest_expense_usd` | number | Interest expense. | | `other_income_expense_usd` | number | Other income or expense. | | `total_other_income_expense_usd` | number | Total non-operating income or expense. | | `income_before_tax_usd` | number | Pretax income. | | `income_tax_expense_usd` | number | Income tax. | | `discontinued_operations_usd` | number | Discontinued operations. | | `equity_in_affiliates_usd` | number | Equity in affiliates. | | `extraordinary_items_usd` | number | Extraordinary items. | | `consolidated_net_income_usd` | number | Net income including minority interests. | | `noncontrolling_interest_usd` | number | Minority interests' share. | | `net_income_attributable_to_parent_usd` | number | Net income of the company's shareholders. | | `preferred_dividends_usd` | number | Preferred dividends. | | `net_income_usd` | number | Net income to common shareholders. | | `ebitda_usd` | number | Operating income plus depreciation and amortization. | | `eps, eps_diluted` | number | Basic and diluted EPS, $, adjusted for later splits. Q4: the earnings release's where it agrees with the filings, else Q4 net income over its shares. | | `weighted_shares, weighted_shares_diluted` | number | Weighted average shares, basic and diluted, adjusted for later splits (integers). | | `net_interest_income_usd, noninterest_income_usd` | number | Banks: net interest income and noninterest income. | | `provision_for_credit_losses_usd` | number | Banks: provision for credit losses. | | `noninterest_expense_usd` | number | Banks: noninterest expense. | | `premiums_earned_usd, net_investment_income_usd` | number | Insurers: net premiums earned and net investment income. | | `claims_usd` | number | Insurers: losses, claims and policy benefits. | | `as_first_filed` | object | Lines a later filing changed, as first filed (`{"revenue_usd": …}`), or `null`. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/income-statement?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Balance sheet `GET /fundamentals/balance-sheet` (scope `research`, cursor-paged) Quarterly or annual balance sheets from the 10-Qs and 10-Ks, newest first, at the latest filed figures. A line the filing doesn't show, or shows as zero, is `null`. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `period` | query | string | `quarter` or `annual`. Default `quarter`. | | `limit` | query | integer | Periods, newest first, up to 200 (every filing since 2009). Default `12`. | | `from` | query | string | Earliest period end, `YYYY-MM-DD`. | | `to` | query | string | Latest period end, `YYYY-MM-DD`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `fiscal_year` | integer | Fiscal year, as the company names it. | | `fiscal_period` | string | `Q1` to `Q4` (for `ttm`, the quarter the twelve months end with) or `FY`. | | `period_end` | string | Last day of the period, `YYYY-MM-DD`. | | `filed_date` | string | Date of the latest filing behind these numbers (a later filing restates earlier periods). | | `first_filed_date` | string | Date the period was first on file in full. | | `accession` | string | SEC accession number of that latest filing. | | `template` | string | `standard`, `bank`, `insurer` or `reit`: which industry lines apply. | | `currency` | string | Reporting currency, `USD` (filers reporting in another currency, and 20-F and 40-F filers, are not covered). | | `cash_and_equivalents_usd` | number | Cash and equivalents. | | `short_term_investments_usd` | number | Short-term investments. | | `receivables_usd` | number | Receivables. | | `inventory_usd` | number | Inventory. | | `other_current_assets_usd` | number | Other current assets. | | `total_current_assets_usd` | number | Current assets. | | `property_plant_equipment_usd` | number | Net PP&E. | | `goodwill_usd` | number | Goodwill. | | `intangible_assets_usd` | number | Net intangibles. | | `other_assets_usd` | number | Other non-current assets. | | `total_assets_usd` | number | Total assets. | | `accounts_payable_usd` | number | Accounts payable. | | `deferred_revenue_usd` | number | Current deferred revenue. | | `short_term_debt_usd` | number | Debt due within a year. | | `accrued_and_other_current_liabilities_usd` | number | Accrued and other current liabilities. | | `total_current_liabilities_usd` | number | Current liabilities. | | `long_term_debt_usd` | number | Long-term debt and capital leases. | | `other_noncurrent_liabilities_usd` | number | Other non-current liabilities. | | `total_liabilities_usd` | number | Total liabilities (liabilities and equity less equity where the balance sheet shows no total). | | `commitments_and_contingencies_usd` | number | Commitments and contingencies. | | `temporary_equity_usd` | number | Redeemable (temporary) equity. | | `preferred_stock_usd` | number | Preferred stock. | | `common_stock_usd` | number | Common stock. | | `additional_paid_in_capital_usd` | number | Additional paid-in capital. | | `treasury_stock_usd` | number | Treasury stock. | | `accumulated_other_comprehensive_income_usd` | number | Accumulated other comprehensive income. | | `retained_earnings_usd` | number | Retained earnings (deficit). | | `other_equity_usd` | number | Other equity. | | `stockholders_equity_usd` | number | Equity of the parent's shareholders. | | `noncontrolling_interest_usd` | number | Minority interests. | | `total_equity_usd` | number | Total equity. | | `total_liabilities_and_equity_usd` | number | Liabilities and equity. | | `total_debt_usd` | number | Short-term plus long-term debt. | | `net_debt_usd` | number | Total debt less cash and equivalents. | | `loans_usd, deposits_usd` | number | Banks: net loans and deposits. | | `real_estate_investments_usd` | number | REITs: real estate, net. | | `as_first_filed` | object | Lines a later filing changed, as first filed (`{"revenue_usd": …}`), or `null`. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/balance-sheet?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Cash flow statement `GET /fundamentals/cash-flow` (scope `research`, cursor-paged) Quarterly, annual or trailing-twelve-month cash flow statements, newest first: a quarter is the filing's year to date less the quarter before's. A line the filing doesn't show, or shows as zero, is `null`. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `period` | query | string | `quarter`, `annual` or `ttm` (trailing twelve months). Default `quarter`. | | `limit` | query | integer | Periods, newest first, up to 200 (every filing since 2009). Default `12`. | | `from` | query | string | Earliest period end, `YYYY-MM-DD`. | | `to` | query | string | Latest period end, `YYYY-MM-DD`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `fiscal_year` | integer | Fiscal year, as the company names it. | | `fiscal_period` | string | `Q1` to `Q4` (for `ttm`, the quarter the twelve months end with) or `FY`. | | `period_end` | string | Last day of the period, `YYYY-MM-DD`. | | `filed_date` | string | Date of the latest filing behind these numbers (a later filing restates earlier periods). | | `first_filed_date` | string | Date the period was first on file in full. | | `accession` | string | SEC accession number of that latest filing. | | `template` | string | `standard`, `bank`, `insurer` or `reit`: which industry lines apply. | | `currency` | string | Reporting currency, `USD` (filers reporting in another currency, and 20-F and 40-F filers, are not covered). | | `net_income_usd` | number | Net income. | | `depreciation_and_amortization_usd` | number | Depreciation and amortization. | | `stock_based_compensation_usd` | number | Stock-based compensation. | | `other_cash_adjustments_usd` | number | Other non-cash adjustments. | | `change_in_working_capital_usd` | number | Change in operating assets and liabilities. | | `other_operating_activities_usd` | number | Other operating activities. | | `operating_cash_flow_continuing_usd, operating_cash_flow_discontinued_usd` | number | Operating cash flow of continuing and discontinued operations. | | `operating_cash_flow_usd` | number | Operating cash flow. | | `capital_expenditure_usd` | number | Capital expenditure (negative). | | `sale_of_property_plant_equipment_usd` | number | PP&E sold. | | `acquisitions_usd` | number | Businesses acquired, net of cash (negative). | | `other_investing_activities_usd` | number | Other investing activities. | | `investing_cash_flow_continuing_usd, investing_cash_flow_discontinued_usd` | number | Investing cash flow of continuing and discontinued operations. | | `investing_cash_flow_usd` | number | Investing cash flow. | | `net_short_term_debt_issued_usd, net_long_term_debt_issued_usd` | number | Debt issued less repaid, short and long term. | | `dividends_paid_usd` | number | Dividends paid (negative). | | `share_repurchases_usd` | number | Shares bought back (negative). | | `noncontrolling_interests_usd` | number | Paid to minority interests (negative). | | `other_financing_activities_usd` | number | Other financing. | | `financing_cash_flow_continuing_usd, financing_cash_flow_discontinued_usd` | number | Financing cash flow of continuing and discontinued operations. | | `financing_cash_flow_usd` | number | Financing cash flow. | | `effect_of_exchange_rates_usd` | number | Currency effect on cash. | | `discontinued_operations_income_usd` | number | Income from discontinued operations. | | `change_in_cash_usd` | number | Change in cash. | | `free_cash_flow_usd` | number | Operating cash flow plus capital expenditure. | | `as_first_filed` | object | Lines a later filing changed, as first filed (`{"revenue_usd": …}`), or `null`. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/cash-flow?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Ratios `GET /fundamentals/ratios` (scope `research`, cursor-paged) Valuation, margin, return and balance sheet ratios on the trailing twelve months: at the price now, or at each close since 2009 with `from` and `to`, on the statements on file that day. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `from` | query | string | First day, `YYYY-MM-DD`. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `date` | string | Session, `YYYY-MM-DD`. | | `price` | number | Price now, as `/stocks/quotes` has it, or the close. | | `market_cap_usd` | number | Market cap across all share classes. Historical values use the close and filed shares, with the historical issuer market cap series for Berkshire Hathaway. | | `enterprise_value_usd` | number | Market cap plus total debt less cash and equivalents. | | `eps` | number | Trailing net income to common per share outstanding, $. | | `pe, ps, pb` | number | Market cap over trailing net income to common, revenue and stockholders' equity (`null` for a loss). | | `price_to_cash_flow, price_to_free_cash_flow` | number | Market cap over trailing operating and free cash flow. | | `ev_to_sales, ev_to_ebitda` | number | Enterprise value over trailing revenue and EBITDA. | | `gross_margin, operating_margin, net_margin` | number | Trailing gross profit, operating income and net income to common over revenue, decimals. | | `dividend_yield` | number | Trailing dividends paid over market cap, decimal. | | `return_on_assets, return_on_equity` | number | Trailing net income to common over the latest total assets and stockholders' equity, decimals. | | `debt_to_equity` | number | Total debt over stockholders' equity. | | `current_ratio, quick_ratio, cash_ratio` | number | Current assets; cash, short-term investments and receivables; and cash, over current liabilities. | | `free_cash_flow_usd` | number | Trailing free cash flow. | | `average_volume` | integer | Average daily volume of the 30 sessions to the date, shares (`null` at the price now). | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/ratios?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Revenue segments `GET /fundamentals/segments` (scope `research`) Revenue by product line or by region as reported, newest period first, largest segment first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `by` | query | string | `product` or `region`. Default `product`. | | `period` | query | string | `annual` or `quarter`. Default `annual`. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `period_end` | string | Last day of the period. | | `fiscal_year` | integer | Fiscal year. | | `fiscal_period` | string | `Q1` to `Q4` or `FY`. | | `segment` | string | Segment as the company names it. | | `revenue_usd` | number | Its revenue. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/segments?symbol=AAPL&by=product&apiKey=YOUR_API_KEY" ``` ## Earnings `GET /fundamentals/earnings` (scope `research`, cursor-paged) Every report with EPS and revenue against the estimates, newest first. The next report comes first, its actuals `null`. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `limit` | query | integer | Rows per page, up to 1000. Default `40`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `date` | string | Report date. | | `fiscal_year, fiscal_period, period_end` | mixed | The quarter reported (`period_end` `null` until filed, for 52/53-week years). | | `eps_adjusted, eps_estimate` | number | EPS as analysts count it (adjusted, where the company reports adjusted EPS) and their consensus, $. | | `eps_surprise_pct` | number | `eps_adjusted` against the consensus, %. | | `eps_diluted` | number | GAAP diluted EPS of the quarter from the filings (the income statement's `eps_diluted`), `null` until filed, $. | | `revenue_usd, revenue_estimate_usd` | number | Reported revenue and the consensus. | | `revenue_surprise_pct` | number | Revenue against the consensus, %. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/earnings?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Analyst estimates `GET /fundamentals/estimates` (scope `research`) Consensus for each fiscal period not reported yet, nearest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `period` | query | string | `annual` or `quarter`. Default `annual`. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `period_end` | string | Last day of the fiscal period. | | `fiscal_year` | integer | Fiscal year. | | `fiscal_period` | string | `Q1` to `Q4` or `FY`. | | `revenue_low_usd, revenue_average_usd, revenue_high_usd` | number | Revenue: the lowest, average and highest estimate. | | `eps_low, eps_average, eps_high` | number | EPS, $. | | `ebitda_low_usd, ebitda_average_usd, ebitda_high_usd` | number | EBITDA. | | `net_income_low_usd, net_income_average_usd, net_income_high_usd` | number | Net income. | | `revenue_analysts, eps_analysts` | integer | Analysts behind the revenue and EPS estimates. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/estimates?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Analysts `GET /fundamentals/analysts` (scope `research`) Ratings consensus, price targets and the latest 50 calls by firm. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `consensus` | object | `rating` (`strong_buy` to `strong_sell`, the firms' average) and the firms at each on their latest call of the last 12 months: `strong_buy`, `buy`, `hold`, `sell`, `strong_sell`. | | `price_target` | object | `low`, `median`, `average`, `high`, $. | | `grades[]` | array | `date`, `firm`, `action` (`upgrade`, `downgrade`, `maintain` …), `previous_grade`, `grade` in the firm's own words. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/analysts?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Call transcripts `GET /fundamentals/transcripts` (scope `research`) Earnings call transcripts: the latest, one quarter, or every quarter of a fiscal year. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `year` | query | integer | Fiscal year. Alone, every quarter of it. | | `quarter` | query | integer | Fiscal quarter, 1 to 4, with `year`. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `fiscal_year` | integer | Fiscal year. | | `fiscal_period` | string | `Q1` to `Q4`. | | `date` | string | Call date. | | `content` | string | The whole call, one speaker per paragraph. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/transcripts?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## ETF holdings `GET /fundamentals/etf-holdings` (scope `research`, cursor-paged) Everything a fund holds, largest weight first, as its issuer last published. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | An ETF, e.g. `QQQ`. Required. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | The holding's ticker. | | `name` | string | Its name. | | `weight` | number | Share of the fund, decimal. | | `shares` | integer | Shares held. | | `market_value_usd` | number | Value of the position. | ```bash curl "https://tradytics.com/api/public/v1/fundamentals/etf-holdings?symbol=QQQ&apiKey=YOUR_API_KEY" ``` # Filings Every SEC filing of the last three years and each new one seconds after EDGAR accepts it, with 10-K, 10-Q and 8-K sections as text and full-text search. ## List filings `GET /filings` (scope `research`, cursor-paged) Filings newest first, for the whole market or a few companies, by form, 8-K item and date. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every filer. | | `form` | query | string | Form types, comma separated, e.g. `10-K,10-Q,8-K`, `4`, `SCHEDULE 13D`. | | `item` | query | string | 8-K items, comma separated, e.g. `2.02` (results), `5.02` (officers and directors). | | `from` | query | string | Filed on or after, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Filed on or before. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `accession` | string | Accession number, the filing's id. | | `symbol` | string | Ticker of the company it is about, null for a filer without one. | | `cik` | integer | SEC CIK of that company. | | `company` | string | Name as filed. | | `form` | string | Form type, e.g. `10-K`, `8-K/A`. | | `filed_at` | string | When EDGAR accepted it, UTC. | | `period_of_report` | string | Period it covers, `YYYY-MM-DD`. | | `items` | array | 8-K items, e.g. `["2.02", "9.01"]`. | | `description` | string | What it is: the form, or an 8-K's items in words. | | `url` | string | The filing on EDGAR. | | `document_url` | string | Its main document. | ```bash curl "https://tradytics.com/api/public/v1/filings?symbol=AAPL&form=10-K%2C10-Q%2C8-K&apiKey=YOUR_API_KEY" ``` ## Search filings `GET /filings/search` (scope `research`, cursor-paged) Full-text search of every filing and exhibit since 2001: the documents that match. | Param | In | Type | Description | | --- | --- | --- | --- | | `q` | query | string | Words, or an exact phrase in quotes; `AND`, `OR`, `NOT`, e.g. `"supply agreement" AND China`. Required. | | `symbol` | query | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every filer. | | `form` | query | string | Form types, comma separated, e.g. `10-K,10-Q,8-K`, `4`, `SCHEDULE 13D`. | | `from` | query | string | Filed on or after, `YYYY-MM-DD`. | | `to` | query | string | Filed on or before, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 100. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `accession, symbol, cik, company, form` | mixed | The filing, as in List filings. | | `filed_date` | string | Filing date, `YYYY-MM-DD`. | | `document_type` | string | The matching document, e.g. `8-K`, `EX-99.1`. | | `description` | string | Its description as filed. | | `url` | string | The matching document. | | `filing_url` | string | The filing on EDGAR. | ```bash curl "https://tradytics.com/api/public/v1/filings/search?q=%22supply%20agreement%22%20AND%20China&form=8-K&apiKey=YOUR_API_KEY" ``` ## Filing `GET /filings/{accession}` (scope `research`) One filing with every document and exhibit in it. | Param | In | Type | Description | | --- | --- | --- | --- | | `accession` | path | string | Accession number, e.g. `0000320193-25-000079`. Required. | | Field | Type | Description | | --- | --- | --- | | `accession` | string | Accession number, the filing's id. | | `symbol` | string | Ticker of the company it is about, null for a filer without one. | | `cik` | integer | SEC CIK of that company. | | `company` | string | Name as filed. | | `form` | string | Form type, e.g. `10-K`, `8-K/A`. | | `filed_at` | string | When EDGAR accepted it, UTC. | | `period_of_report` | string | Period it covers, `YYYY-MM-DD`. | | `items` | array | 8-K items, e.g. `["2.02", "9.01"]`. | | `description` | string | What it is: the form, or an 8-K's items in words. | | `url` | string | The filing on EDGAR. | | `document_url` | string | Its main document. | | `documents[]` | array | `sequence`, `type` (e.g. `10-K`, `EX-99.1`, `EX-101.INS`), `description`, `url`, and `size_bytes` when available. | ```bash curl "https://tradytics.com/api/public/v1/filings/0000320193-25-000079?apiKey=YOUR_API_KEY" ``` ## Filing sections `GET /filings/{accession}/sections` (scope `research`) Sections of a 10-K, 10-Q or 8-K as plain text. A section asked for the first time can answer `warming_up` for a few seconds. | Param | In | Type | Description | | --- | --- | --- | --- | | `accession` | path | string | Accession number, e.g. `0000320193-25-000079`. Required. | | `section` | query | string | Comma separated. 10-K and 10-Q: `business`, `risk_factors`, `mda`, `market_risk`, `financial_statements`, `legal_proceedings`, `controls`, `cybersecurity`, `properties`, `market_for_equity`, `other_information`, `exhibits` and the other items by name. 8-K: items like `2.02`. Default business, risk factors and MD&A of a 10-K, MD&A and risk factors of a 10-Q, the items of an 8-K. | | Field | Type | Description | | --- | --- | --- | | `section` | string | Its name, e.g. `risk_factors` or `2.02`. | | `title` | string | Its heading, e.g. `Risk factors`. | | `text` | string | The section's text. | ```bash curl "https://tradytics.com/api/public/v1/filings/0000320193-25-000079/sections?section=risk_factors&apiKey=YOUR_API_KEY" ``` # Disclosures Insider trades, institutional holdings, activist stakes and Congress trades. ## Insider trades `GET /disclosures/insiders` (scope `research`, cursor-paged) Every Form 4 transaction, newest filing first: officers, directors and 10% owners buying, selling, exercising and receiving stock. Two years back, new ones within a minute of filing. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every company. | | `type` | query | string | Comma separated: `buy`, `sell`, `grant`, `exercise`, `tax`, `gift`, `conversion`, `disposition`, `expiration`, `inheritance`, `other`. | | `min_value` | query | number | Smallest `value_usd`, e.g. `1000000`. | | `from` | query | string | Filed on or after, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Filed on or before. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `filed_at` | string | When the Form 4 was accepted, UTC. | | `transaction_date` | string | Trade date, `YYYY-MM-DD`. | | `symbol, company, cik` | mixed | The company and its SEC CIK. | | `insider, insider_cik` | mixed | Who traded and their SEC CIK. | | `relationship` | string | Their ties to the company, e.g. `Chief Financial Officer`, `Director, 10% owner`. | | `form` | string | `4` or `4/A`. | | `security` | string | What was traded, e.g. `Common Stock`, `Stock Option (Right to Buy)`. | | `derivative` | boolean | An option, unit or other derivative. | | `transaction_code` | string | The SEC code, e.g. `P`, `S`, `A`, `M`, `F`. | | `type` | string | The code in a word: `buy`, `sell`, `grant`, `exercise`, `tax`, `gift`, … | | `direction` | string | `acquired` or `disposed`. | | `shares, price` | number | Shares (or derivative units) and price per share. | | `value_usd` | number | Shares times price. | | `shares_owned_after` | number | Holding after the trade. | | `ownership` | string | `direct` or `indirect`. | | `rule_10b5_1` | boolean | The filing's Rule 10b5-1 plan box; null on forms without it (before April 2023). | | `accession` | string | The Form 4 filing. | ```bash curl "https://tradytics.com/api/public/v1/disclosures/insiders?symbol=NVDA&apiKey=YOUR_API_KEY" ``` ## Institutional holders `GET /disclosures/institutions` (scope `research`, cursor-paged) Every institution that reported a stock on its 13F for a quarter, biggest position first, with what it bought or sold since the quarter before. The last 8 quarters. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker symbol, e.g. `AAPL`. Required. | | `quarter` | query | string | Quarter end, `YYYY-MM-DD` or `2026Q2`. Default the latest quarter past its 45-day filing deadline. | | `put_call` | query | string | `call` or `put`. Returns option positions instead of shares. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `quarter` | string | Quarter end, `YYYY-MM-DD`. | | `manager` | string | The institution. | | `cik` | integer | Its SEC CIK. | | `symbol` | string | Ticker of the security, null when unknown. | | `issuer, cusip` | string | Security as filed and its CUSIP. | | `put_call` | string | `call` or `put` for an option position, else null. | | `shares` | number | Shares (or principal) held at quarter end. | | `prior_shares` | number | Shares the quarter before, null if new. | | `shares_change` | number | Shares bought (sold if negative) over the quarter. | | `change_pct` | number | Change in shares, percent. | | `value_usd` | number | Market value at quarter end in dollars; a 13F filed in thousands is multiplied by 1,000. | | `weight` | number | Share of the manager's reported book, decimal. | | `new, closed` | boolean | Opened this quarter; sold out this quarter (`shares` 0). `new` and the changes are null when the quarter before isn't on file. | | `filed_at` | string | When the 13F was accepted, UTC. | | `accession` | string | The 13F filing. | ```bash curl "https://tradytics.com/api/public/v1/disclosures/institutions?symbol=AAPL&apiKey=YOUR_API_KEY" ``` ## Institution holdings `GET /disclosures/institutions/{cik}` (scope `research`, cursor-paged) One institution's whole 13F book for a quarter, biggest position first, with the changes from the quarter before. | Param | In | Type | Description | | --- | --- | --- | --- | | `cik` | path | integer | The manager's SEC CIK, e.g. `1067983` (Berkshire Hathaway). Required. | | `quarter` | query | string | Quarter end, `YYYY-MM-DD` or `2026Q2`. Default its latest. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `quarter` | string | Quarter end, `YYYY-MM-DD`. | | `manager` | string | The institution. | | `cik` | integer | Its SEC CIK. | | `symbol` | string | Ticker of the security, null when unknown. | | `issuer, cusip` | string | Security as filed and its CUSIP. | | `put_call` | string | `call` or `put` for an option position, else null. | | `shares` | number | Shares (or principal) held at quarter end. | | `prior_shares` | number | Shares the quarter before, null if new. | | `shares_change` | number | Shares bought (sold if negative) over the quarter. | | `change_pct` | number | Change in shares, percent. | | `value_usd` | number | Market value at quarter end in dollars; a 13F filed in thousands is multiplied by 1,000. | | `weight` | number | Share of the manager's reported book, decimal. | | `new, closed` | boolean | Opened this quarter; sold out this quarter (`shares` 0). `new` and the changes are null when the quarter before isn't on file. | | `filed_at` | string | When the 13F was accepted, UTC. | | `accession` | string | The 13F filing. | ```bash curl "https://tradytics.com/api/public/v1/disclosures/institutions/1067983?apiKey=YOUR_API_KEY" ``` ## Activist stakes `GET /disclosures/activists` (scope `research`, cursor-paged) Schedule 13D (activist) and 13G (passive) filings of holders of 5% or more, newest first. Two years back. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every company. | | `form` | query | string | `13d` or `13g`. | | `from` | query | string | Filed on or after, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Filed on or before. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `filed_at` | string | When it was accepted, UTC. | | `symbol, company, cik` | mixed | The company and its SEC CIK. | | `filer, filer_cik` | mixed | Who filed it. | | `form` | string | `13D` or `13G`. | | `amendment` | boolean | An amendment to an earlier filing. | | `owned_pct` | number | Percent of the class owned. | | `shares` | number | Shares owned. | | `event_date` | string | Date of the event that required it, `YYYY-MM-DD`. | | `cusip` | string | CUSIP of the class. | | `accession` | string | The filing. | ```bash curl "https://tradytics.com/api/public/v1/disclosures/activists?form=13d&apiKey=YOUR_API_KEY" ``` ## Congress trades `GET /disclosures/congress` (scope `research`, cursor-paged) Stock trades members of the House and Senate disclosed, newest disclosure first. Three years back. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Tickers, comma separated, e.g. `AAPL,NVDA`. Default every company. | | `chamber` | query | string | `house` or `senate`. | | `type` | query | string | Comma separated: `buy`, `sell`, `exchange`, `other`. | | `from` | query | string | Disclosed on or after, `YYYY-MM-DD`. | | `to` | query | string | Disclosed on or before, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `chamber` | string | `house` or `senate`. | | `member, member_id` | string | The member and their Bioguide id, e.g. `P000197`. | | `party` | string | `democrat`, `republican` or `independent`. | | `state, district` | string | e.g. `CA` and `11`; no district for senators. | | `symbol, asset, asset_type` | string | What was traded, as reported. | | `owner` | string | `self`, `spouse`, `joint` or `child`. | | `type` | string | `buy`, `sell`, `exchange` or `other`. | | `amount` | string | The range reported, e.g. `$1,001 - $15,000`. | | `amount_min_usd, amount_max_usd` | number | Its bounds; an exact amount is both, an `Over` range has no max. | | `transaction_date, disclosure_date` | string | `YYYY-MM-DD`. | | `link` | string | The report. | ```bash curl "https://tradytics.com/api/public/v1/disclosures/congress?symbol=NVDA&apiKey=YOUR_API_KEY" ``` # KPIs The operating numbers that move stocks: deliveries, subscribers, same-store sales, nights booked, store counts, and weekly numbers published on the web. Every value comes with its source and the line it was read from, and each reported value is confirmed by a second, independent read of its filing before it is served. ## KPIs `GET /kpis` (scope `research`, cursor-paged) One company's KPI values, newest first: each fiscal quarter's numbers from its results release, 10-Q or 10-K, and the weekly numbers tracked for it. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker, e.g. `TSLA`. Required. | | `kpi` | query | string | KPI ids, comma separated, e.g. `vehicle_deliveries,vehicle_production`. Default every KPI. | | `kind` | query | string | `reported` or `tracked`. Reported values come from filings. Tracked values come from the web. | | `from` | query | string | Periods ending on or after, `YYYY-MM-DD`. | | `to` | query | string | Periods ending on or before, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `kpi` | string | KPI id, e.g. `vehicle_deliveries`. | | `name` | string | Its name, e.g. `Vehicle deliveries`. | | `period` | string | Fiscal quarter `2026-Q3`, ISO week `2026-W44` or day `2026-11-04`. | | `period_end` | string | Last day of the period, `YYYY-MM-DD`. | | `value` | number | As first reported, in whole units: `486532` vehicles, `59800000000` dollars, `3.1` for 3.1%. | | `restated_value` | number | The figure a filing a year later printed for this period, when it differs from `value`; else null. | | `unit` | string | `usd`, `percent`, `basis_points`, or what is counted, e.g. `vehicles`, `members`, `nights`. | | `kind` | string | `reported` or `tracked`. Reported values come from filings. Tracked values come from the web. | | `source_url` | string | The document or page it was read from. | | `accession` | string | The SEC filing, null for tracked. | | `quote` | string | The sentence or table row holding the number, as printed. | ```bash curl "https://tradytics.com/api/public/v1/kpis?symbol=TSLA&kpi=vehicle_deliveries&apiKey=YOUR_API_KEY" ``` ## KPI definitions `GET /kpis/definitions` (scope `research`, cursor-paged) The KPIs covered for each company, the periods they span, and whether the company still reports them. A KPI is never removed: one the company stops reporting is `stopped`, one it redefines is `replaced` by a new id from that quarter on. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Ticker, e.g. `TSLA`. Default every company covered. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `kpi` | string | KPI id. | | `symbol` | string | Ticker. | | `name` | string | Its name. | | `unit` | string | `usd`, `percent`, `basis_points`, or what is counted, e.g. `vehicles`, `members`, `nights`. | | `frequency` | string | `quarterly`, `weekly` or `daily`. | | `kind` | string | `reported` or `tracked`. Reported values come from filings. Tracked values come from the web. | | `description` | string | What it counts. | | `status` | string | `active`, `stopped` (not reported in the company's last two quarters, or dropped by the company) or `replaced` (redefined). | | `replaced_by` | string | For `replaced`: the KPI id that carries on. Else null. | | `added_period` | string | The quarter it was first tracked. | | `first_period` | string | The earliest period with a value. | | `last_period` | string | The latest. | ```bash curl "https://tradytics.com/api/public/v1/kpis/definitions?symbol=TSLA&apiKey=YOUR_API_KEY" ``` # Market The US stock market at a glance: whether it's open, the headline indices, breadth, and every sector and theme. ## Market status `GET /market/status` (scope `market`) Whether the market is open now, the next open and close, and the holidays and early closes ahead. | Field | Type | Description | | --- | --- | --- | | `open` | boolean | Whether the regular session is open. | | `session` | string | `pre_market`, `regular`, `after_hours` or `closed`. | | `time` | string | Now, UTC. | | `next_open_at, next_close_at` | string | The next regular open and close, UTC. | | `holidays[]` | array | `date`, `name`, `status` (`closed` or `early_close`), and an early close's `open_at` and `close_at`, UTC. | ```bash curl "https://tradytics.com/api/public/v1/market/status?apiKey=YOUR_API_KEY" ``` ## Indices `GET /market/indices` (scope `market`, cursor-paged) The S&P 500, Nasdaq 100, Russell 2000, Dow Jones Industrial Average and VIX, live in the session. | Field | Type | Description | | --- | --- | --- | | `symbol, name` | string | `SPX`, `NDX`, `RUT`, `DJI` or `VIX`, and its name. | | `price` | number | The index level. | | `change, change_pct` | number | Change from the previous close, in points and percent. | | `previous_close` | number | The previous close. | | `time` | string | When the level was taken, UTC. | ```bash curl "https://tradytics.com/api/public/v1/market/indices?apiKey=YOUR_API_KEY" ``` ## Breadth `GET /market/breadth` (scope `market`) How many liquid stocks and ADRs ($20M+ traded today, funds left out) are up and down, how today's moves spread, and the equal-weight S&P 500 against the cap-weighted one. | Field | Type | Description | | --- | --- | --- | | `up, down, total` | integer | Stocks up, down and counted. | | `strong_up, strong_down` | integer | Up or down 4% or more. | | `buckets[]` | array | `min_change_pct`, `max_change_pct` (null at the open ends) and `count`, from below -4% to above 4%. | | `equal_weight_change_pct` | number | The equal-weight S&P 500 (RSP) today. | | `cap_weight_change_pct` | number | The S&P 500 (SPY) today. | ```bash curl "https://tradytics.com/api/public/v1/market/breadth?apiKey=YOUR_API_KEY" ``` ## Sectors and themes `GET /market/sectors` (scope `market`, cursor-paged) The 11 sectors through their SPDR ETFs, or two dozen investing themes as equal-weight baskets, with returns over six periods and today's best and worst members. | Param | In | Type | Description | | --- | --- | --- | --- | | `type` | query | string | `sector` or `theme`. Default `sector`. | | Field | Type | Description | | --- | --- | --- | | `name, type` | string | The sector, named as `sector` is everywhere (`Healthcare`), or the theme; and `sector` or `theme`. | | `etf` | string | Sectors: the SPDR ETF. Null for themes. | | `basket` | array | Themes: the member tickers. Null for sectors. | | `description` | string | Themes: what it holds. | | `price` | number | Sectors: the ETF's price. | | `change_pct` | number | Today. | | `return_1w_pct, return_1m_pct, return_3m_pct, return_ytd_pct, return_1y_pct` | number | Returns over a week, a month, three months, the year so far and a year (sectors). | | `members, members_up, members_down, members_flat` | integer | Members ($10B+ companies for sectors) and counts with positive, negative and unchanged returns. | | `best[], worst[]` | array | The top and bottom three members today: `symbol`, `name`, `change_pct`. | ```bash curl "https://tradytics.com/api/public/v1/market/sectors?type=sector&apiKey=YOUR_API_KEY" ``` # Calendar Earnings reports and economic releases, past and ahead. ## Earnings calendar `GET /calendar/earnings` (scope `market`, cursor-paged) Reports by date then company size, with estimates and results. Actuals use the same filed figures and verified releases as `/fundamentals/earnings`. Without `symbol`, every US listing in the range, past or ahead (default the next 7 days, up to 93 a call); with it, the company's whole history, newest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | One ticker. | | `from` | query | string | First day, `YYYY-MM-DD`. Default today. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, name` | string | Ticker and short name. | | `date` | string | Report day, New York. | | `timing` | string | `before_open`, `after_close` or `unknown`. | | `confirmed` | boolean | The company itself has given this day: its press release, filing or investor site. | | `fiscal_period_end` | string | Last day of the quarter reported. | | `eps_estimate, eps_actual` | number | Expected EPS and reported EPS. Actuals use verified adjusted EPS when available and are null until supported. | | `revenue_estimate_usd, revenue_actual_usd` | integer | Revenue expected and reported. | | `market_cap_usd` | integer | Market cap. | ```bash curl "https://tradytics.com/api/public/v1/calendar/earnings?from=2026-11-09&to=2026-11-13&limit=20&apiKey=YOUR_API_KEY" ``` ## Economic calendar `GET /calendar/economic` (scope `market`, cursor-paged) Economic releases and central bank events by time. FMP supplies the readings and estimates. The official BEA schedule fills gaps in upcoming US GDP release dates, with readings and estimates null when unavailable. Default the US, yesterday to a week ahead, up to 93 days a call. | Param | In | Type | Description | | --- | --- | --- | --- | | `country` | query | string | Two-letter country code, `EU`, or `all`. Default `US`. | | `impact` | query | string | `low`, `medium` or `high`. | | `from` | query | string | First day, `YYYY-MM-DD`. Default yesterday. | | `to` | query | string | Last day, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `time` | string | Release time, UTC. | | `country, currency` | string | Where, and its currency. | | `event` | string | The release, e.g. `Nonfarm Payrolls (Oct)`. | | `impact` | string | `low`, `medium`, `high` or null. | | `actual, estimate, previous` | number | The reading, the consensus and the prior. | | `change, change_pct` | number | The actual against the prior. | | `unit` | string | Unit, e.g. `%` or `K`. | ```bash curl "https://tradytics.com/api/public/v1/calendar/economic?impact=high&apiKey=YOUR_API_KEY" ``` # News Market news with short summaries, tagged by ticker. ## News `GET /news` (scope `market`, cursor-paged) Stories newest first, all of them or one symbol's. Default the last 30 days. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | One ticker. | | `from` | query | string | Earliest, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Latest, `YYYY-MM-DD` or an RFC 3339 time. | | `limit` | query | integer | Rows per page, up to 500. Default `50`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id` | integer | Story id. | | `time` | string | Published, UTC. | | `title, summary` | string | Headline and a short summary. | | `symbols` | array | Tickers it covers. | | `source, url` | string | Publisher and the article. | | `sentiment` | string | `positive`, `negative`, `neutral` or `mixed`. | ```bash curl "https://tradytics.com/api/public/v1/news?symbol=NVDA&limit=10&apiKey=YOUR_API_KEY" ``` # Screener Every US stock and fund on 99 fields across price, technicals, fundamentals, options flow, dark pool and events, with 117 labels, rebuilt after each close. ## Screen stocks `GET /screener/stocks` (scope `scanner`, cursor-paged) Filter on any numeric field with `min_` and `max_` (`min_relative_volume=2&max_rsi=30`), require labels and sort by any field; or pass `symbol` for those rows. Metadata separates the scan build time (`scan_as_of`) from the quote snapshot time (`quote_as_of`). | Param | In | Type | Description | | --- | --- | --- | --- | | `min_, max_` | query | number | Bounds on any numeric field. | | `labels` | query | string | Comma-separated label ids; a row must carry all of them. | | `sector` | query | string | One sector, e.g. `Technology` or `Financial Services`. | | `kind` | query | string | `stock`, `etf` or `adr`. | | `symbol` | query | string | Comma-separated tickers, up to 100: just these rows, unfiltered. | | `fields` | query | string | Comma-separated fields to return, or `all`. Default `symbol`, `name`, `kind`, `sector`, `date`, `price`, `change_pct`, `volume`, `relative_volume`, `market_cap_usd`, `rsi`, `technical_rating`, `options_premium_usd`, `options_net_premium_usd`, `implied_volatility_pct`, `dark_pool_value_usd`, `labels`. | | `sort` | query | string | Field to sort by. Default `average_dollar_volume_usd`. | | `order` | query | string | `asc` or `desc`. Default `desc`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, name, kind` | string | Ticker, name, `stock`, `etf` or `adr`. | | `sector, industry` | string | The company's sector and industry, named as on every endpoint; null for funds. | | `date` | string | The session the price and change are from; returned with any of them. | | `price, change, change_pct, gap_pct, after_hours_change_pct` | number | Last trade, its change in dollars and percent, the opening gap, the after-hours move. | | `open, high, low` | number | The session's prices. | | `return_1w_pct, return_1m_pct, return_3m_pct, return_6m_pct, return_ytd_pct, return_1y_pct` | number | Returns. | | `from_52w_high_pct, from_52w_low_pct` | number | Distance from the 52-week high and low. | | `dollar_volume_usd` | number | Dollars traded in the quote session. Null when no session quote is available. | | `volume, average_volume, average_dollar_volume_usd, relative_volume` | number | Shares, the 20-session average, its dollars, and the session over the average. | | `average_true_range, average_true_range_pct, average_daily_range_pct, beta` | number | ATR in dollars and percent, average daily range, beta. | | `rsi, stochastic, adx` | number | RSI (14), stochastic %K, ADX (14). | | `macd_histogram_pct` | number | MACD histogram as a percent of price. | | `vs_sma_20_pct, vs_sma_50_pct, vs_sma_200_pct` | number | Price against each moving average. | | `bollinger_width_pct` | number | Bollinger band width. | | `relative_strength` | integer | The year's return weighted to its last quarter, ranked across the market, 1 to 99. | | `technical_rating` | number | -1 (strong sell) to 1 (strong buy). | | `closes_30d` | array | The last 30 closes scaled 0 to 99 within their range. | | `market_cap_usd, pe_ratio, peg_ratio, price_to_sales, price_to_book, price_to_free_cash_flow, ev_to_ebitda` | number | Size and trailing valuation. | | `free_cash_flow_yield_pct, dividend_yield_pct` | number | Yields. | | `eps_ttm` | number | Trailing twelve-month EPS. | | `gross_margin_pct, operating_margin_pct, net_margin_pct` | number | Margins. | | `return_on_equity_pct, return_on_assets_pct, return_on_invested_capital_pct` | number | Returns on capital. | | `debt_to_equity, current_ratio, payout_ratio_pct` | number | Leverage, liquidity, payout. | | `analyst_rating, analysts, analyst_buy_pct` | number | Average rating 1 (strong sell) to 5 (strong buy), analysts covering, share rating it a buy. | | `price_target, upside_to_target_pct` | number | Average target and the distance to it. | | `next_earnings_date, days_to_earnings` | mixed | Next report and days until it. | | `last_surprise_pct, days_since_earnings` | number | The last EPS surprise and days since. | | `insider_net_usd` | number | Insider buys less sells over 30 days. | | `congress_net_trades` | integer | Congress buys less sells over 45 days. | | `short_interest_pct, days_to_cover, short_volume_pct` | number | Short interest of shares outstanding, days to cover, short share of volume. | | `options_premium_usd, options_net_premium_usd, options_bullish_pct` | number | Options premium in the session, bullish less bearish, and the bullish share. | | `put_call_premium_ratio` | number | Put premium over call premium. | | `options_net_premium_5d_usd, options_net_premium_5d_pct` | number | Net premium over five sessions, and as a percent of their premium. | | `options_premium_relative` | number | Premium over the 20-session average. | | `sweep_premium_usd, opening_premium_usd` | number | Premium in sweeps and in opening trades. | | `million_dollar_trades` | integer | Prints of $1M or more. | | `implied_volatility_pct, iv_rank, iv_change` | number | IV, its rank over the year 0 to 100, its change in points. | | `implied_move_pct` | number | The daily move IV implies. | | `dark_pool_value_usd, dark_pool_relative, dark_pool_vs_5d_pct` | number | Off-exchange block value on `dark_pool_date`, over its 20-session average, and against its 5-session average. | | `dark_pool_average_5d_usd, dark_pool_5d_usd` | number | The 5-session daily average and total. | | `exchange_blocks_usd, closing_auction_usd, opening_auction_usd` | number | Exchange blocks and the auctions, apart. | | `dark_pool_ask_share_pct, off_exchange_share_pct` | number | Ask-side share of classified prints, and off-exchange share of block value, over five sessions. | | `labels` | array | Label ids the row carries. | ```bash curl "https://tradytics.com/api/public/v1/screener/stocks?min_relative_volume=2&min_market_cap_usd=1000000000&sort=change_pct&limit=10&apiKey=YOUR_API_KEY" ``` ## Screener fields `GET /screener/fields` (scope `scanner`) Every field with its group and type, and every label with its group and lean. | Field | Type | Description | | --- | --- | --- | | `fields[]` | array | `name`, `group` (Price, Technical, Options, Dark pool …), `type` (`number`, `string`, `date` or `array`). | | `labels[]` | array | `id`, `name`, `group`, `lean` (1 bullish, -1 bearish, 0 neither). | ```bash curl "https://tradytics.com/api/public/v1/screener/fields?apiKey=YOUR_API_KEY" ``` # Signals Live orders matching one of seven flow patterns tested on years of options flow, each the contract the flow bought, priced at the ask and marked every five minutes to expiry. ## List signals `GET /signals` (scope `signals`, cursor-paged) Signals newest first, today's live. | Param | In | Type | Description | | --- | --- | --- | --- | | `source` | query | string | `repeat-flow`, `opening-calls`, `heavy-calls`, `etf-repeat-calls`, `itm-puts`, `burst-calls` or `index-tide-calls`. | | `symbol` | query | string | One ticker. | | `status` | query | string | `open` or `settled`. | | `date` | query | string | Fired on this session, `YYYY-MM-DD`. | | `from` | query | string | First session, `YYYY-MM-DD`. | | `to` | query | string | Last session, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 500. Default `50`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id, date, fired_at` | mixed | Id, session, and when it fired, UTC. | | `source, pattern` | string | The pattern's id and name. | | `symbol, contract` | string | The underlying and the contract the flow bought (OCC). | | `type, strike, expiry` | mixed | `call` or `put`, strike, expiry. | | `price, bid, ask` | number | The print's price and the NBBO at its second; the signal is bought at `ask`. | | `premium_usd, size, open_interest` | integer | The order's premium, contracts, and open interest before today. | | `iv, delta, spot` | number | IV and delta (decimals), and the stock's price. | | `title, body` | string | The signal in a line and a paragraph. | | `status` | string | `open` or `settled` (at expiry). | | `return, best_return` | number | Its latest mark, or its settlement, and its best mark so far against the ask, as decimals (0.25 is 25%). | ```bash curl "https://tradytics.com/api/public/v1/signals?limit=10&apiKey=YOUR_API_KEY" ``` ## Signal `GET /signals/{id}` (scope `signals`) One signal with the numbers its pattern read, the prints behind it and every mark. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | integer | A signal's `id`. Required. | | Field | Type | Description | | --- | --- | --- | | `id, date, fired_at` | mixed | Id, session, and when it fired, UTC. | | `source, pattern` | string | The pattern's id and name. | | `symbol, contract` | string | The underlying and the contract the flow bought (OCC). | | `type, strike, expiry` | mixed | `call` or `put`, strike, expiry. | | `price, bid, ask` | number | The print's price and the NBBO at its second; the signal is bought at `ask`. | | `premium_usd, size, open_interest` | integer | The order's premium, contracts, and open interest before today. | | `iv, delta, spot` | number | IV and delta (decimals), and the stock's price. | | `title, body` | string | The signal in a line and a paragraph. | | `status` | string | `open` or `settled` (at expiry). | | `return, best_return` | number | Its latest mark, or its settlement, and its best mark so far against the ask, as decimals (0.25 is 25%). | | `facts` | object | `stock_price`, `stock_change`, `stock_prior_change`, `market_change`, `days_to_expiry`, `out_of_the_money` (share of spot, negative in the money), `size_to_open_interest`, `day_volume_to_open_interest`, `repeats_today`, `repeat_sessions` (of the last five), `net_premium_lean`, `premium_pace`, `premium_burst`, `iv_relative`, `realized_volatility_20d`, `dollar_volume_20d_usd`. Changes are decimals. | | `prints[]` | array | The contract's prints and the underlying's flow in the 15 minutes before it fired: `role`, `time`, `symbol`, `type`, `strike`, `expiry`, `price`, `bid`, `ask`, `size`, `premium_usd`, `side` (`bought`, `sold` or `mid`), `sweep`, `open_interest`, `iv`. | | `marks[]` | array | `time` and `value`: the NBBO mid every five minutes, then the settlement. | ```bash curl "https://tradytics.com/api/public/v1/signals/513?apiKey=YOUR_API_KEY" ``` ## Signal performance `GET /signals/performance` (scope `signals`, cursor-paged) Each pattern's record from every signal's latest mark or settlement, losers included, over the last 7, 30 and 90 days and all time. | Param | In | Type | Description | | --- | --- | --- | --- | | `source` | query | string | `repeat-flow`, `opening-calls`, `heavy-calls`, `etf-repeat-calls`, `itm-puts`, `burst-calls` or `index-tide-calls`. Omit to include every pattern and their combined results. | | `window` | query | string | `7d`, `30d`, `90d` or `all`. Default each. | | `status` | query | string | `open` or `settled`. Default both. | | Field | Type | Description | | --- | --- | --- | | `source, pattern` | string | The pattern (`all` for every signal) and its name. | | `window` | string | `7d`, `30d`, `90d` or `all`, by the day it fired. | | `signals, settled` | integer | Signals, and how many have settled. | | `win_rate` | number | Share with a gain, decimal. | | `average_return, median_return, best_return, worst_return` | number | Returns against the ask, decimals. | ```bash curl "https://tradytics.com/api/public/v1/signals/performance?apiKey=YOUR_API_KEY" ``` # Insights What the market did and why, and why each stock is moving. ## Market digest `GET /insights/market` (scope `market`) The market in a headline, a summary and three stories, with the week's events ahead. Rewritten every 30 minutes in the session. | Param | In | Type | Description | | --- | --- | --- | --- | | `date` | query | string | The last digest of a past session, `YYYY-MM-DD`. | | Field | Type | Description | | --- | --- | --- | | `title, summary` | string | Headline and summary. | | `time` | string | When it was written, UTC. | | `sections[]` | array | `title`, `summary` and `symbols` per story. | | `events` | array | Upcoming events, one line each. | ```bash curl "https://tradytics.com/api/public/v1/insights/market?apiKey=YOUR_API_KEY" ``` ## Why it's moving `GET /insights/movers` (scope `market`, cursor-paged) Each stock's latest story behind its move, newest first: the 100 largest companies and the most viewed, rewritten through the day. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | query | string | Comma-separated tickers. | | `limit` | query | integer | Rows per page, up to 500. Default `50`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol, name` | string | Ticker and short name. | | `title, summary` | string | The story in a line and a paragraph. | | `time` | string | Written, UTC. | ```bash curl "https://tradytics.com/api/public/v1/insights/movers?symbol=NVDA%2CAAPL&apiKey=YOUR_API_KEY" ``` # Probabilities Every live finance question on Kalshi and Polymarket, each outcome's chance through time, the S&P 500 outlook and the settled archive since 2021. ## List questions `GET /probabilities` (scope `probabilities`, cursor-paged) Every live question with a tight book and trades in the last day, with its leading outcomes. | Param | In | Type | Description | | --- | --- | --- | --- | | `group` | query | string | `close`, `range`, `hit` or `earnings`. | | `symbol` | query | string | One underlying, e.g. `SPX`, `NDX`, `NVDA`. | | Field | Type | Description | | --- | --- | --- | | `id, title, group` | string | The question, and `close`, `range`, `hit` or `earnings`. | | `source` | string | `kalshi` or `polymarket`. | | `symbol, name` | string | The underlying, e.g. `SPX`, `NVDA`. | | `resolves_at` | string | When it resolves, UTC. | | `underlying_price` | number | The underlying's price. | | `report_date, report_timing` | string | Earnings questions: the report day, `before_open` or `after_close`. | | `outcomes[]` | array | `market` (Kalshi ticker or Polymarket condition id), `label`, `kind`, `level`, `level_high`, `resolves_at`, `chance` (0.62 is 62%). | | `distribution` | object | `kind` and `bins` (`low`, `high`, `chance`): the crowd's distribution of the outcome. | ```bash curl "https://tradytics.com/api/public/v1/probabilities?apiKey=YOUR_API_KEY" ``` ## Question `GET /probabilities/{id}` (scope `probabilities`) One open question with every outcome, and for an earnings question the stock's past reports and moves. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | string | A question's `id`. Required. | | Field | Type | Description | | --- | --- | --- | | `id, title, group` | string | The question, and `close`, `range`, `hit` or `earnings`. | | `source` | string | `kalshi` or `polymarket`. | | `symbol, name` | string | The underlying, e.g. `SPX`, `NVDA`. | | `resolves_at` | string | When it resolves, UTC. | | `underlying_price` | number | The underlying's price. | | `report_date, report_timing` | string | Earnings questions: the report day, `before_open` or `after_close`. | | `outcomes[]` | array | `market` (Kalshi ticker or Polymarket condition id), `label`, `kind`, `level`, `level_high`, `resolves_at`, `chance` (0.62 is 62%). | | `distribution` | object | `kind` and `bins` (`low`, `high`, `chance`): the crowd's distribution of the outcome. | | `reports` | object | Earnings questions: `beats` of `rated`, `up`, `median_move_pct`, and `rows` (`date`, `eps`, `eps_estimate`, `beat`, `surprise_pct`, `move_pct`). | ```bash curl "https://tradytics.com/api/public/v1/probabilities/nvda-close-2026-11-30?apiKey=YOUR_API_KEY" ``` ## Outcome history `GET /probabilities/{id}/history` (scope `probabilities`) One outcome's chance through time, live or settled: the last trade in each hour or day. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | string | A question's `id`, or a settled market's `id`. Required. | | `market` | query | string | One of the question's outcomes (its `market`). Default its first. | | `interval` | query | string | `hour` or `day`. Default `hour`. | | `from` | query | string | Earliest, `YYYY-MM-DD` or an RFC 3339 time. | | `to` | query | string | Latest, `YYYY-MM-DD` or an RFC 3339 time. | | Field | Type | Description | | --- | --- | --- | | `question` | string | The question's `id`, null for a settled market. | | `market, outcome` | string | The outcome and its label. | | `interval` | string | `hour` or `day`. | | `points[]` | array | `time` (UTC) and `chance`. | ```bash curl "https://tradytics.com/api/public/v1/probabilities/KXINXU-26NOV04H1600-T7769.9999/history?apiKey=YOUR_API_KEY" ``` ## S&P 500 outlook `GET /probabilities/outlook` (scope `probabilities`) Where Kalshi and Polymarket put the S&P 500 at each date they price, from the next close to year end, and the last 30 sessions' 10 AM calls on the S&P 500 and Nasdaq-100 against the close. | Field | Type | Description | | --- | --- | --- | | `symbol, price` | mixed | `SPX` and its level. | | `horizons[]` | array | `resolves_at`, `horizon` (`close`, `week`, `month`, `year`), `basis` (`close` or `touch`), `levels` (`level`, `chance_at_or_above`). | | `track[]` | array | `symbol` (`SPX` or `NDX`), `date`, `called_low`, `called_middle`, `called_high` (the crowd at 10 AM) and `close`. | ```bash curl "https://tradytics.com/api/public/v1/probabilities/outlook?apiKey=YOUR_API_KEY" ``` ## Settled markets `GET /probabilities/settled` (scope `probabilities`, cursor-paged) Every finance market Kalshi has settled since June 2021, and Polymarket's, the latest to close first. Default the last 30 days unless `series` is set. | Param | In | Type | Description | | --- | --- | --- | --- | | `source` | query | string | `kalshi` or `polymarket`. Default `kalshi`. | | `series` | query | string | A Kalshi series (`KXINXU`, the S&P 500 close) or a Polymarket event id. | | `category` | query | string | A Kalshi category (`Financials`, `Economics`) or a Polymarket tag (`stocks`, `economy`, `fed`). | | `from` | query | string | Closed on or after, `YYYY-MM-DD`. | | `to` | query | string | Closed on or before, `YYYY-MM-DD`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id, source, series, category, title` | string | The market. | | `event_title, outcomes` | mixed | Polymarket: the event and its outcomes. | | `outcome, strike_type, floor, cap` | mixed | Kalshi: the yes outcome and its levels. | | `opened_at, closed_at, settled_at` | string | UTC. | | `result` | string | Kalshi `yes` or `no`; Polymarket the winning outcome. | | `settled_value` | number | Kalshi: the value it settled on. | ```bash curl "https://tradytics.com/api/public/v1/probabilities/settled?source=kalshi&series=KXINXU&limit=10&apiKey=YOUR_API_KEY" ``` # AI Fund The Tradytics AI Fund, an options book run by AI: its exposure, positions, trades and the portfolio manager's posts, sized as fractions of the fund. ## The fund `GET /fund` (scope `fund`) Exposure, open positions and the latest 20 posts and letters. | Field | Type | Description | | --- | --- | --- | | `started_date, total_return` | mixed | The first day, and the return since as a decimal. | | `exposure` | object | `names`, `net_delta`, `gross_delta`, `beta_adjusted_net_delta`, `largest_name_gross_delta`, `largest_sector_gross_delta`, `theta_per_day`, `vega_per_vol_point`, `premium_long`, `premium_short` (fractions of the fund) and `sectors` (`name`, `net_delta`, `gross_delta`). | | `positions[]` | array | Open trades as in Fund trades, without fills. | | `posts[]` | array | `id`, `time`, `kind` (`post` or `letter`), `trade_id`, `title`, `markdown`, newest first. | ```bash curl "https://tradytics.com/api/public/v1/fund?apiKey=YOUR_API_KEY" ``` ## Fund trades `GET /fund/trades` (scope `fund`, cursor-paged) Every trade, open and closed, newest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `status` | query | string | `open` or `closed`. | | `symbol` | query | string | One ticker. | | `limit` | query | integer | Rows per page, up to 200. Default `50`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `id, title, symbols, status, direction` | mixed | The trade: `open` or `closed`, `long` or `short`. | | `opened_at, closed_at` | string | UTC. | | `catalyst, idea_title, post_title` | string | Why it was opened, and its post. | | `net_premium, max_loss` | number | Premium paid (negative when collected) and the most it can lose at expiry, as fractions of the fund. | | `loss_unbounded` | boolean | Whether the loss has no cap. | | `legs[]` | array | `name`, `contract`, `symbol`, `type`, `strike`, `expiry`, `side` (`long` or `short`), `quantity`, `entry_price`, `bid`, `ask`, `mid`. | | `fills[]` | array | `name`, `contract`, `symbol`, `type`, `strike`, `expiry`, `side` (`bought` or `sold`), `quantity`, `price`, `time`. | ```bash curl "https://tradytics.com/api/public/v1/fund/trades?limit=10&apiKey=YOUR_API_KEY" ``` # Symbols Every US stock, fund and index Tradytics tracks, and each one's profile. ## List symbols `GET /symbols` (scope `market`, cursor-paged) The ~6,000 symbols Tradytics tracks, most traded first. Search by ticker or name with `q`. | Param | In | Type | Description | | --- | --- | --- | --- | | `q` | query | string | Matches the start of a ticker or any part of a name. | | `kind` | query | string | `stock`, `etf`, `adr` or `index`. | | `limit` | query | integer | Rows per page, up to 1000. Default `100`. | | `cursor` | query | string | `next_cursor` from the previous page. | | Field | Type | Description | | --- | --- | --- | | `symbol` | string | Ticker. | | `name` | string | Short company or fund name. | | `kind` | string | `stock`, `etf`, `adr` or `index`. | ```bash curl "https://tradytics.com/api/public/v1/symbols?q=apple&apiKey=YOUR_API_KEY" ``` ## Symbol `GET /symbols/{symbol}` (scope `market`) One symbol: its name, kind, sector, industry, size and live quote. | Param | In | Type | Description | | --- | --- | --- | --- | | `symbol` | path | string | Ticker symbol, e.g. `AAPL`. Required. | | Field | Type | Description | | --- | --- | --- | | `symbol, name, kind` | string | Ticker, short name, `stock`, `etf`, `adr` or `index`. | | `sector, industry` | string | The company's sector and industry, named as on every endpoint; null for funds and indices. | | `market_cap_usd` | integer | Shares outstanding at the price. | | `intraday_bars` | boolean | Whether it has intraday bars (Bars). | | `quote` | object | The live quote as in Quotes: `date` (the session it's from), `price`, `change`, `change_pct`, `previous_close`, `volume`, `dollar_volume_usd`, `gap_pct`, `relative_volume`. | ```bash curl "https://tradytics.com/api/public/v1/symbols/NVDA?apiKey=YOUR_API_KEY" ``` # Your account Your own linked portfolio, backtests, dashboards and watchlists; a key reads only its own account, and another account's id answers 404. ## Your portfolio `GET /account/portfolio` (scope `account`) Your linked brokerage accounts, read only: holdings, options and recent orders, in each account's currency. | Field | Type | Description | | --- | --- | --- | | `connected, syncing, synced_at` | mixed | The link's state. | | `accounts[]` | array | `id`, `broker`, `name`, `currency`, `value`, `cash`, `buying_power`, `disabled`, `duplicate` (a brokerage listed twice), `synced_at`. | | `stocks[]` | array | `account_id`, `symbol`, `name`, `kind`, `sector`, `quantity`, `price`, `average_cost`, `value`, `cost`, `pnl`, `pnl_pct`, `day_change`, `day_change_pct`, `currency`. | | `options[]` | array | `account_id`, `contract`, `symbol`, `type`, `strike`, `expiry`, `days_to_expiry`, `contracts`, `multiplier`, `price`, `average_cost`, `value`, `cost`, `pnl`, `pnl_pct`, `underlying_price`, `underlying_change_pct`. | | `orders[]` | array | The latest 80 order legs: `id`, `account_id`, `time`, `status`, `open`, `action`, `symbol`, `type`, `strike`, `expiry`, `quantity`, `filled`, `price`, `order_type`. | ```bash curl "https://tradytics.com/api/public/v1/account/portfolio?apiKey=YOUR_API_KEY" ``` ## Your trades `GET /account/portfolio/trades` (scope `account`) A year of closed round trips, newest first, with dividends and fees per account. | Field | Type | Description | | --- | --- | --- | | `since_date` | string | Where the history starts. | | `unmatched_closes` | integer | Closes with no opening in the history. | | `income` | object | Per account id: `dividends` and `fees`. | | `trips[]` | array | `id`, `account_id`, `kind`, `symbol`, `type`, `strike`, `expiry`, `side`, `quantity`, `opened_date`, `closed_date`, `open_price`, `close_price`, `pnl`, `pnl_pct`, `days_held`. | ```bash curl "https://tradytics.com/api/public/v1/account/portfolio/trades?apiKey=YOUR_API_KEY" ``` ## Your factors `GET /account/portfolio/factors` (scope `account`) Your book's risk by source, beta, value at risk and tracking error, each holding's share, crash replays, and returns split into market, sectors, styles and stock picking. `404 not_connected` before a brokerage is linked. | Field | Type | Description | | --- | --- | --- | | `model_date, value, cash` | mixed | The model's day, the book and its cash. | | `risk` | object | `volatility`, `beta`, `value_at_risk_95_1d`, `tracking_error`, `long`, `short`, `cash_share`, and the risk shares `market_share`, `sector_share`, `style_share`, `interaction_share`, `specific_share`. | | `factors[]` | array | `factor`, `name`, `group`, `exposure`, `volatility`, `risk_share`, `active_exposure`, `tracking_error_share`. | | `holdings[]` | array | `symbol`, `name`, `value`, `weight`, `options`, `beta`, `volatility`, `specific_volatility`, `risk_share`, `specific_risk_share`, `tracking_error_share`, `marginal_risk`, `sector`, `industry`, `kind`, `country`; `others` counts small holdings merged into one row. | | `not_modeled[]` | array | `symbol` and `value` of holdings the model can't price. | | `stress_tests[]` | array | `name`, `story`, `start_date`, `end_date`, `sp500_return`, `portfolio_return`, `market_part`, `other_part`, `change` (in money). | | `attribution[]` | array | `window` (`1D` to `1Y`), `days`, `portfolio_return`, `sp500_return`, `market_part`, `style_part`, `sector_part`, `specific_part`, `options_part`. | ```bash curl "https://tradytics.com/api/public/v1/account/portfolio/factors?apiKey=YOUR_API_KEY" ``` ## Your backtests `GET /account/backtests` (scope `account`, cursor-paged) Your backtests, the latest first. | Param | In | Type | Description | | --- | --- | --- | --- | | `q` | query | string | Only backtests whose title or messages mention this. | | `limit` | query | integer | Rows, up to 200. Default `50`. | | Field | Type | Description | | --- | --- | --- | | `id, title` | mixed | The backtest. | | `messages` | integer | Messages in it. | | `updated_at` | string | Last activity, UTC. | | `match` | string | With `q`: the words around the first hit. | ```bash curl "https://tradytics.com/api/public/v1/account/backtests?apiKey=YOUR_API_KEY" ``` ## A backtest `GET /account/backtests/{id}` (scope `account`) One backtest: the conversation and every run it made. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | integer | A backtest's `id`. Required. | | Field | Type | Description | | --- | --- | --- | | `id, title` | mixed | The backtest. | | `messages[]` | array | `role`, `content`, `time`. | | `runs[]` | array | `run_id`, `name`, `summary`, `spec`; `stats` (`strategy` and `benchmark`: `total_return`, `cagr`, `volatility`, `sharpe`, `sortino`, `max_drawdown`, `max_drawdown_start`, `max_drawdown_end`, `best_year`, `worst_year`; `start_date`, `end_date`, `fills`, `round_trips`, `win_rate`, `beta`, `fees_usd`); `equity` (`date`, `equity_usd`, `benchmark_usd`); `round_trips` (`symbol`, `entry_date`, `exit_date`, `shares`, `entry_price`, `exit_price`, `pnl_usd`, `return`, `days_held`, `exit_reason`). | ```bash curl "https://tradytics.com/api/public/v1/account/backtests/%7Bid%7D?apiKey=YOUR_API_KEY" ``` ## Your dashboards `GET /account/dashboards` (scope `account`, cursor-paged) Your dashboards. | Field | Type | Description | | --- | --- | --- | | `id, name` | mixed | The dashboard. | | `revision` | integer | Bumped on every save. | | `updated_at` | string | Last save, UTC. | | `widgets` | integer | Widgets it holds. | | `copied_from` | string | The public dashboard it was copied from. | ```bash curl "https://tradytics.com/api/public/v1/account/dashboards?apiKey=YOUR_API_KEY" ``` ## A dashboard `GET /account/dashboards/{id}` (scope `account`) One dashboard's layout on a 12-column grid. | Param | In | Type | Description | | --- | --- | --- | --- | | `id` | path | integer | A dashboard's `id`. Required. | | Field | Type | Description | | --- | --- | --- | | `id, name, revision, updated_at` | mixed | The dashboard. | | `widgets[]` | array | `id`, `widget`, `symbol`, `link_group`, `x`, `y`, `width`, `height`, `auto_height`, `options`. | | `links[]` | array | `link_group` and the `symbol` its widgets share. | ```bash curl "https://tradytics.com/api/public/v1/account/dashboards/%7Bid%7D?apiKey=YOUR_API_KEY" ``` ## Your watchlists `GET /account/watchlists` (scope `account`, cursor-paged) Your watchlists, the default first, each with its symbols in the order added. | Field | Type | Description | | --- | --- | --- | | `name` | string | The list. | | `default` | boolean | Whether it is your default list. | | `symbols` | array | Its tickers. | ```bash curl "https://tradytics.com/api/public/v1/account/watchlists?apiKey=YOUR_API_KEY" ``` # Integrations Tradytics in agent directories, skill registries and API tools. | Where | What | Get it | | --- | --- | --- | | [skills.sh](https://www.skills.sh/tradytics/skills/tradytics) | Agent skill | `npx skills add tradytics/skills` | | [GitHub](https://github.com/tradytics/skills) | Claude Code plugin | `/plugin marketplace add tradytics/skills` | | [ClawHub](https://clawhub.ai/tradytics/skills/tradytics) | OpenClaw skill | `clawhub install tradytics` | | [Postman](https://www.postman.com/tradytics/tradytics-api) | API collection | Fork the collection | | [Glama](https://glama.ai/mcp/connectors/com.tradytics/market-data) | MCP server | Connect from Glama | | [MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=com.tradytics) | MCP server | `com.tradytics/market-data` | | [LobeHub](https://lobehub.com/community/mcp/tradytics) | MCP server | Install from LobeHub | Claude, ChatGPT, Cursor and any other MCP client connect straight to the [MCP server](/docs/mcp).