{"openapi":"3.0.0","info":{"version":"1.8.3","title":"Leeway API","description":"Market data API: 70+ exchanges, 100,000+ tickers, 15,000+ ETFs, 1,000+ forex pairs. Fundamentals (up to 20y), EOD prices (up to 35y), intraday, dividends, splits, and forecasts. Forex/crypto quotes are realtime; other instruments ~15min delayed. Auth via apitoken query param (see your account page). Docs: https://leeway.tech/data-api. Contact: kontakt@leeway.tech."},"servers":[{"url":"https://api.leeway.tech"}],"paths":{"/api/v1/public/ai/research/equity/whatsnew/{symbolexchange}":{"get":{"description":"Latest company whats-new brief. Wallet pay-per-use (2 cent read; generate also bills provider cost). HTTP 402 if the wallet is too low. maxAgeDays=0 forces a refresh.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","description":"en or de","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/competitors/{symbolexchange}":{"get":{"description":"Competitor landscape for a stock. Wallet pay-per-use. HTTP 402 if the wallet is too low. maxAgeDays=0 forces a refresh.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","description":"en or de","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/risks/{symbolexchange}":{"get":{"description":"Key risks for a stock. Wallet pay-per-use. HTTP 402 if the wallet is too low. maxAgeDays=0 forces a refresh.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","description":"en or de","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/timeline/{symbolexchange}":{"get":{"description":"Five-year stock timeline and investor sentiment. Wallet pay-per-use. HTTP 402 if the wallet is too low. maxAgeDays=0 forces a refresh.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","description":"en or de","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/price-drivers/{symbolexchange}":{"get":{"description":"What is moving this stock. Wallet pay-per-use. HTTP 402 if the wallet is too low. maxAgeDays=0 forces a refresh.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/industry/{symbolexchange}":{"get":{"description":"Industry whats-new for the stock's industry. Wallet pay-per-use. HTTP 402 if the wallet is too low. 400 if the company has no industry.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/equity/sector/{symbolexchange}":{"get":{"description":"Sector whats-new for the stock's sector. Wallet pay-per-use. HTTP 402 if the wallet is too low. 400 if the company has no sector.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"SAP.XETRA","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/asset/timeline/{symbolexchange}":{"get":{"description":"Five-year timeline for an asset ticker (SYMBOL.EXCHANGE). Wallet pay-per-use. HTTP 402 if the wallet is too low.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"XAUUSD.COMM","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/asset/whatsnew/{symbolexchange}":{"get":{"description":"Whats-new brief for an asset ticker. Wallet pay-per-use. HTTP 402 if the wallet is too low.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"XAUUSD.COMM","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/asset/price-drivers/{symbolexchange}":{"get":{"description":"Price drivers for an asset ticker. Wallet pay-per-use. HTTP 402 if the wallet is too low.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"XAUUSD.COMM","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/asset/events/{symbolexchange}":{"get":{"description":"Events for an asset ticker. Wallet pay-per-use. HTTP 402 if the wallet is too low.","parameters":[{"name":"symbolexchange","in":"path","required":true,"schema":{"type":"string"},"example":"XAUUSD.COMM","description":"SYMBOL.EXCHANGE"},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/theme/map":{"get":{"description":"Theme map for a thesis query. Wallet pay-per-use. HTTP 402 if the wallet is too low. Requires thesis.","parameters":[{"name":"thesis","in":"query","required":true,"description":"Theme thesis","schema":{"type":"string"}},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/theme/timeline":{"get":{"description":"Theme timeline for a thesis query. Wallet pay-per-use. HTTP 402 if the wallet is too low. Requires thesis.","parameters":[{"name":"thesis","in":"query","required":true,"description":"Theme thesis","schema":{"type":"string"}},{"name":"maxAgeDays","in":"query","description":"Cache max age in days. 0 refreshes. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. 0 refreshes. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/market/whatsnew-weekly":{"get":{"description":"Latest weekly market briefing. length=short returns the email. length=long returns the website article. lang is required. Included for every account. Does not charge the wallet. Does not take a freshness window and does not generate. HTTP 404 if that version is missing.","parameters":[{"name":"length","in":"query","required":true,"description":"short returns the email. long returns the website article.","schema":{"type":"string"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","required":true,"description":"de or en","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/market/whatsnew-today":{"get":{"description":"Latest daily market briefing. Requires a trader subscription. The email sends the website article, so short and long return that article. lang is required. Does not charge the wallet. Does not take a freshness window and does not generate. HTTP 403 without a trader subscription. HTTP 404 if the article is missing.","parameters":[{"name":"length","in":"query","required":true,"description":"short or long. Both return the stored daily article.","schema":{"type":"string"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","required":true,"description":"de or en","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/market/cio-view":{"get":{"description":"Latest CIO view. Requires an investor or trader subscription. length=short returns the email. length=long returns the website CIO view. lang is required. Does not charge the wallet. Does not take a freshness window and does not generate. HTTP 403 without that subscription. HTTP 404 if that version is missing.","parameters":[{"name":"length","in":"query","required":true,"description":"short returns the email. long returns the website CIO view.","schema":{"type":"string"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","required":true,"description":"de or en","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/ai/research/market/timeline-weekly":{"get":{"description":"Cached weekly market timeline. Wallet read fee. HTTP 404 if missing or stale; does not generate. HTTP 402 if the wallet is too low.","parameters":[{"name":"maxAgeDays","in":"query","description":"Cache max age in days. Do not send with maxAgeHours.","schema":{"type":"integer"}},{"name":"maxAgeHours","in":"query","description":"Cache max age in hours. Do not send with maxAgeDays.","schema":{"type":"integer"}},{"name":"sources","in":"query","description":"Pass true to include sources. Omit to leave sources out.","schema":{"type":"string"}},{"name":"lang","in":"query","description":"en or de","schema":{"type":"string"}}],"responses":{}}},"/api/v1/public/general/isin/{isin}":{"get":{"description":"Resolve a company name or ISIN to its primary stock symbol and exchange. Use this first if you only have a name or ISIN.","parameters":[{"name":"isin","in":"path","required":true,"schema":{"type":"string"},"description":"ISIN (e.g. DE0007164600) or name/code substring (e.g. SAP)","example":"SAP"}],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/general/mainstock/{isin}":{"get":{"description":"Find the primary listing for a given ISIN. Useful to avoid secondary or illiquid listings.","parameters":[{"name":"isin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/general/symbols/{exchange}":{"get":{"description":"List all available stock symbols for a specific exchange (e.g., XETRA, NYSE).","parameters":[{"name":"exchange","in":"path","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Common Stock | ETF | FUND","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/general/exchanges":{"get":{"description":"List all supported stock exchanges and their codes.","parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/general/screener":{"get":{"description":"Screen stocks by listing fields, Highlights, keyfigures (incl. aliases like pe/roe/market_cap), and/or market signals. At least one of filters, signals, or preset is required. Supports preset=quality with explicit thresholds; pagination up to limit 1000. See OpenAPI filters/signals/preset params for the full field catalog.","parameters":[{"name":"filters","in":"query","description":"JSON array of [field, op, value]. Listing fields: adjusted_close, avgvol_1d, avgvol_200d, code, dividend_yield, earnings_share, exchange, industry, market_capitalization, name, refund_1d_p, refund_5d_p, sector. Highlights: BookValue, DilutedEpsTTM, DividendShare, DividendYield, EBITDA, EPSEstimateCurrentQuarter, EPSEstimateCurrentYear, EPSEstimateNextQuarter, EPSEstimateNextYear, EarningsShare, GrossProfitTTM, MarketCapitalization, MarketCapitalizationMln, MostRecentQuarter, OperatingMarginTTM, PEGRatio, PERatio, ProfitMargin, QuarterlyEarningsGrowthYOY, QuarterlyRevenueGrowthYOY, ReturnOnAssetsTTM, ReturnOnEquityTTM, RevenuePerShareTTM, RevenueTTM, WallStreetTargetPrice. Keyfigures: EBITDA_margin, EBITDA_margin_rolling_quarters, EBIT_margin, EBIT_margin_rolling_quarters, EPSEstimateCurrentQuarter, EPSEstimateCurrentYear, EPSEstimateNextQuarter, EPSEstimateNextYear, ForwardPE, PEGRatio, PercentInsiders, PercentInstitutions, ShortPercentFloat, analyst_rating, analyst_upside, cashflow_growth, cashflow_growth_rolling_quarters, cashflow_margin, cashflow_margin_rolling_quarters, current_ratio, current_ratio_rolling_quarters, debt_to_equity, debt_to_equity_rolling_quarters, dynamic_debt, dynamic_debt_rolling_quarters, earnings_growth, earnings_growth_5y_cagr, earnings_growth_rolling_quarters, equity_ratio, equity_ratio_rolling_quarters, estimate_eps_growth_1y, estimate_eps_growth_2y, free_cashflow, free_cashflow_rolling_quarters, free_cashflow_yield, free_cashflow_yield_rolling_quarters, gross_margin, gross_margin_rolling_quarters, interest_coverage, interest_coverage_rolling_quarters, leverage, leverage_rolling_quarters, liquidity, liquidity_rolling_quarters, net_income_margin, net_income_margin_rolling_quarters, r_and_d_investment_sales, r_and_d_investment_sales_rolling_quarters, return_on_assets, return_on_assets_rolling_quarters, return_on_equity, return_on_equity_rolling_quarters, return_on_liabilities, return_on_liabilities_rolling_quarters, sales_growth, sales_growth_3y_cagr, sales_growth_5y_cagr, sales_growth_rolling_quarters, stock_buybacks, stock_buybacks_rolling_quarters, wallstreet_estimate_upside. Derived: MarketCapitalizationUSD is USD-normalized from local-currency Highlights.MarketCapitalization using the latest available FX rate. Aliases: ebit_margin→EBIT_margin, market_cap→MarketCapitalization, market_cap_usd→MarketCapitalizationUSD, operating_margin→OperatingMarginTTM, pe→PERatio, pe_ratio→PERatio, roa→ReturnOnAssetsTTM, roe→ReturnOnEquityTTM. String ops: =, match. Numeric ops: =, >, <, >=, <=.","example":"[[\"exchange\",\"=\",\"XETRA\"],[\"pe\",\"<\",15]]","schema":{"type":"string"}},{"name":"signals","in":"query","description":"Comma-separated market signals: 200d_new_hi (price at a new 200-day high); 200d_new_lo (price at a new 200-day low); 50d_new_hi (price at a new 50-day high); 50d_new_lo (price at a new 50-day low); bookvalue_neg (price below book value); bookvalue_pos (price above book value); wallstreet_hi (price above Wall Street target); wallstreet_lo (price below Wall Street target).","example":"200d_new_hi","schema":{"type":"string"}},{"name":"preset","in":"query","description":"Named filter preset. Currently: quality (ReturnOnEquityTTM>0.15, ReturnOnAssetsTTM>0.1, OperatingMarginTTM>0.15, debt_to_equity<0.5, current_ratio>1.5, interest_coverage>5, earnings_growth_5y_cagr>0.05, sales_growth_5y_cagr>0.05, free_cashflow>0, MarketCapitalizationUSD>10000000000, PERatio<30). Matching filter fields in filters override the preset thresholds. Max limit 1000.","example":"quality","schema":{"type":"string"}},{"name":"sort","in":"query","description":"Sort by a numeric result field using field.asc or field.desc. market_capitalization is in the listing currency. MarketCapitalizationUSD is in USD, converted from the listing currency at the latest available FX rate. Sorting by MarketCapitalizationUSD requires a filter on MarketCapitalizationUSD or market_cap_usd.","example":"market_capitalization.desc","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of results to return. Default 50, min 1, max 1000.","example":50,"schema":{"type":"integer"}},{"name":"offset","in":"query","description":"Pagination offset. Default 0, max 999.","example":0,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid filters JSON or request"}}}},"/api/v1/public/general/tradingperiod/{symbolExchange}":{"get":{"description":"Get the first and last date the requested stock was tradable on the exchange. Returns two datestrings in an object.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not Found"}}}},"/api/v1/public/general/dailyrequestsleft":{"get":{"description":"Check how many API request units are remaining for the current day.","parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"}}}},"/api/v1/public/general/credits":{"get":{"description":"Wallet balance for this API token: included millieur, purchased millieur, total, and autoRecharge. Use after HTTP 402 on billed AI. Does not consume daily request units.","parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"}}}},"/api/v1/public/historicalquotes/benchmark":{"get":{"description":"Get absolute and relative performance vs. benchmark indices or ETFs.","parameters":[{"name":"symbol","in":"query","description":"Primary symbol in SYMBOL.EXCHANGE format","required":true,"example":"SAP.XETRA","schema":{"type":"string"}},{"name":"benchmark","in":"query","description":"Optional comma-separated benchmark symbols (SYMBOL.EXCHANGE). Each adds relative performance columns.","required":false,"example":"DAX.INDX,ACWI.US","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Missing or invalid symbol parameter"},"404":{"description":"No quotes found for symbol"},"500":{"description":"Internal Server Error"}}}},"/api/v1/public/historicalquotes/marketwide-lastday-quote/{exchange}":{"get":{"summary":"Last trading day quote for an entire exchange","description":"One OHLCV bar per listed instrument on an exchange for a trading day—useful for screening an entire market in one call across 70+ exchanges. Omit date for the latest session. Costs 1 request unit per call.","parameters":[{"name":"exchange","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code","example":"XETRA"},{"name":"date","in":"query","description":"Trading date (YYYY-MM-DD). Default: last trading day.","example":"2026-06-10","schema":{"type":"string"}},{"name":"symbols","in":"query","description":"Optional. Comma-separated symbols to limit results.","example":"SAP,RWE,ALV","schema":{"type":"string"}},{"name":"filter","in":"query","enum":["extended"],"description":"Extended fields (name, EMAs, avg volumes). Past 30 days only.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/v1/public/historicalquotes/{symbolExchange}":{"get":{"description":"Get historical end-of-day price data (OHLCV) for a symbol. Format: SYMBOL.EXCHANGE (e.g., SAP.XETRA).","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"filter","description":"Set this to e.g. close to get only ONE (e.g. close) for each day. Date is always returned. Keys are renamed to time,value","in":"query","schema":{"type":"string"}},{"name":"byname","in":"query","description":"Set this to true and pass a Companyname in symbolExchange.","schema":{"type":"string"}},{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/historicalquotes/marketcap/{symbolExchange}":{"get":{"description":"Get historical market capitalization data for a company.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"byname","in":"query","description":"Set this to true and pass a Companyname in symbolExchange.","schema":{"type":"string"}},{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}},{"name":"valuation","description":"Optional. pe, pb, ps, pc, or liab for one ratio; all returns an object with all five keys. Omit for market-cap history.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK. With valuation=all, returns pe, pc, pb, ps, and liab—each key is an array of daily OHLC bars for that multiple. Example shows pe for SAP.XETRA; other keys share the same shape."},"400":{"description":"Bad Request"}}}},"/api/v1/public/historicalquotes/marketcap/aggregation/{type}":{"get":{"description":"Aggregated valuation multiples across sectors, countries and market cap.","parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string"},"description":"History of common multiples, options are pe, pb, ps, pc, liab for ratios   of price in regard to earnings, bookvalue, sales, cashflow and liabilities."},{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}},{"name":"country","description":"Limits aggregation to companies of that country or area (EU, NA, ASIA, OTHER)","in":"query","schema":{"type":"string"}},{"name":"sector","description":"Limits aggregation to companies of that sector or industry","in":"query","schema":{"type":"string"}},{"name":"minCap","description":"Limits aggregation to companies of marketcap between greater than minCap","in":"query","schema":{"type":"string"}},{"name":"maxCap","description":"Limits aggregation to companies of marketcap between smaller than maxCap","in":"query","schema":{"type":"string"}},{"name":"symbolExchange","in":"path","description":"Symbol and Exchange","required":true,"example":"SAP.XETRA","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/fundamentals/{symbolExchange}":{"get":{"description":"Get comprehensive company fundamentals including balance sheet, income statement, and cash flow for up to 40 years.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"SYMBOL.EXCHANGE or ISIN","example":"SAP.XETRA"},{"name":"lang","description":"Language setting, default is english. Input 'german' for translated version.","in":"query","schema":{"type":"string"}},{"name":"fmt","description":"Output format, default is JSON. Options: XML","in":"query","schema":{"type":"string"}},{"name":"mainexchange","description":"When 'true', return the home listing’s full fundamentals (including General.Code and General.Exchange) instead of the requested listing. Without this flag, secondary listings keep their own General identity and merge Financials from the home listing when available.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response. The example below is abbreviated; the actual response may contain additional fields. Financials.Balance_Sheet, Financials.Cash_Flow, and Financials.Income_Statement contain quarterly and yearly time series. The available number of years depends on the instrument and can be determined from the dates returned."},"404":{"description":"Not Found"}}}},"/api/v1/public/fundamentals/keyfigures/{symbolExchange}":{"get":{"description":"Get calculated key figures (margins, growth, analyst metrics) as time series for a symbol.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and exchange","example":"SAP.XETRA"}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid SYMBOL.EXCHANGE or calculation error"}}}},"/api/v1/public/fundamentals/forecast/{symbolExchange}":{"get":{"description":"Get fundamental forecasts and analyst estimates for a company.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"SYMBOL.EXCHANGE or ISIN","example":"SAP.XETRA"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"}}}},"/api/v1/public/live/relative-move/{symbolExchange}":{"get":{"description":"Compare today's price change to the average daily range over the last year (unusual move detection).","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and exchange","example":"SAP.XETRA"}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid symbol format"},"429":{"description":"Too Many Requests"},"502":{"description":"Live or historical data unavailable"}}}},"/api/v1/public/live/{symbolExchange}":{"get":{"description":"Get the latest real-time or near-real-time price quote for a symbol.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"multi","in":"query","description":"Optional: Comma-separated list of additional SYMBOL.EXCHANGE tickers. Response is an array when provided.","required":false,"example":"SAP.XETRA,EURUSD.FOREX","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"No live quote for this symbol"},"429":{"description":"Too Many Requests"},"502":{"description":"Bad Gateway"}}}},"/api/v1/public/dividends/{symbolExchange}":{"get":{"description":"Get the most recent dividend information for a stock.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"from","description":"Format: YYYY-MM-DD. The start date.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date.","in":"query","schema":{"type":"string"}},{"name":"calculations","description":"Format: Boolean. If true, returns price at Ex-Div date as well as dividend payout ratio.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"},"429":{"description":"Too Many Requests"}}}},"/api/v1/public/dividends/history/{symbolExchange}":{"get":{"description":"Get a daily dividend-yield OHLC series derived from payouts and price. A zero value means that no dividend is active for that trading day.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"from","description":"Format: YYYY-MM-DD. The start date.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date.","in":"query","schema":{"type":"string"}},{"name":"calculations","description":"Format: Boolean. If true, returns price at Ex-Div date as well as dividend payout ratio.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"}}}},"/api/v1/public/splits/{symbolExchange}":{"get":{"description":"Get historical stock split data.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"from","description":"Format: YYYY-MM-DD. The start date.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"429":{"description":"Too Many Requests"}}}},"/api/v1/public/intraday/{symbolExchange}":{"get":{"description":"Get intraday price data (1m, 5m, 1h intervals) for a symbol.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and Exchange","example":"SAP.XETRA"},{"name":"interval","in":"query","description":"'5m' for 5 minutes, '1h' for 1 hour, and '1m' for 1 minute intervals. 1 minute is only available for US exchanges NYSE and NASDAQ.","schema":{"type":"string"}},{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not Found"},"429":{"description":"Too Many Requests"}}}},"/api/v1/public/events/ipos":{"get":{"description":"List upcoming or recent Initial Public Offerings (IPOs).","parameters":[{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}},{"name":"symbols","description":"List of tickers in format SYMBOL.EXCHANGE, comma-separated. Example: SAP.XETRA","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/v1/public/events/earnings":{"get":{"description":"Get the earnings calendar for upcoming corporate reports.","parameters":[{"name":"from","description":"Required. Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}},{"name":"symbols","description":"List of tickers in format SYMBOL.EXCHANGE, comma-separated. Example: SAP.XETRA","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/events/trends":{"get":{"description":"Get trending stocks and market sentiment signals.","parameters":[{"name":"symbols","in":"query","required":true,"description":"Required: List of tickers in format SYMBOL.EXCHANGE, comma-separated. Example: AAPL.US,SAP.XETRA,OR.PA","schema":{"type":"string"}},{"name":"from","description":"Format: YYYY-MM-DD. The start date, if not provided, today will be used.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date, if not provided, today in 7 days will be used.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/events/splits":{"get":{"description":"Historical and upcoming stock splits in the from/to window: effective date and share counts. symbols filters the result. Costs 2 request units per call.","parameters":[{"name":"from","description":"Format: YYYY-MM-DD. The start date. If omitted, the earliest split date is included.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date. If omitted, there is no end date.","in":"query","schema":{"type":"string"}},{"name":"symbols","description":"Optional. List of tickers in format SYMBOL.EXCHANGE, comma-separated. Example: SAP.XETRA,AAPL.US","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/img/logos/{path}":{"get":{"description":"Logos for publicly traded companies. Paths can be found in the fundamentals JSON.","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PNG logo image"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/v1/public/img/logosbycodeexchange/{codeexchange}":{"get":{"description":"Logos for publicly traded companies. Paths can be found in the fundamentals JSON.","parameters":[{"name":"codeexchange","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PNG logo image"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/v1/public/macro/indicators":{"get":{"description":"List available macroeconomic indicators (GDP, inflation, etc.).","parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/macro/countries":{"get":{"description":"List supported countries for macroeconomic data.","parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/macro/{country}":{"get":{"description":"Get macroeconomic data for a specific country.","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string"},"description":"Select Country in Alpha-3 ISO format."},{"name":"indicator","in":"query","description":"Select desired indicator. Default: gdp_current_usd","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/bond/{isin}":{"get":{"description":"Get data for corporate or government bonds by ISIN.","parameters":[{"name":"isin","in":"path","required":true,"schema":{"type":"string"},"description":"Bond ISIN.","example":"XS0971721963"}],"responses":{"200":{"description":"OK"}}}},"/api/v1/public/news/":{"get":{"description":"Get the latest financial news and articles.","parameters":[{"name":"from","description":"Format: YYYY-MM-DD. The start date.","in":"query","schema":{"type":"string"}},{"name":"to","description":"YYYY-MM-DD. The end date.","in":"query","schema":{"type":"string"}},{"name":"s","description":"Format: Code.Exchange. The code for which the news are queried .","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"}}}},"/api/v1/public/ratings/{symbolExchange}":{"get":{"description":"Get Leeway ratings for a listing. Market-Fit measures how well the company fits historically successful fundamental patterns using 18 metrics across profitability, financial strength and valuation; adaptive peer groups learn optimal ranges from roughly four years of returns, hit rates and stability, with rolling recalibration and forecasts. Business-Rating measures long-term business quality independently of price across twelve dimensions; it is produced from scored, fact-checked analysis. Cycle-Rating measures whether the listing is cheap or expensive versus its own valuation history using valuation multiples, leverage and dividend yield; higher means historically cheaper. Leeway-Score combines Market-Fit, Business and Cycle in equal thirds. Market-Fit, Business and Leeway-Score range from -100 to +100; Cycle ranges from 0 to 100. Factor statistics include the current raw value, machine-learning score, average performance, normalized performance, win rate and deviation. These are analytical ratings, not buy recommendations. Methodology: https://leeway.tech/en/hilfe/scores; Market-Fit: https://leeway.tech/en/hilfe/scores/marketfit; Business: https://leeway.tech/en/hilfe/scores/business; Cycle: https://leeway.tech/en/hilfe/scores/cycle. Free access is SAP only; Investor covers US/Europe; Trader worldwide.","parameters":[{"name":"symbolExchange","in":"path","required":true,"schema":{"type":"string"},"description":"Symbol and exchange","example":"SAP.XETRA"}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid symbol format"},"403":{"description":"Listing not included in the token plan"},"404":{"description":"No ratings found"},"500":{"description":"Internal Server Error"}}}},"/api/v1/public/sentiment/breadth/series/{symbol}":{"get":{"description":"Market breadth for one index. Pass the symbol from sentiment_breadth, for example GSPC.INDX. Points have date, the percent of constituents above their 20-, 50- and 200-day average, 252-session highs and lows, advancers, decliners, and the advance-decline line. A field is omitted when fewer than 75 percent of that day's constituents have the window. Optional from and to are YYYY-MM-DD. Costs 1 request unit.","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"},"description":"Index symbol from GET /sentiment/breadth, for example GSPC.INDX"},{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Breadth series"},"400":{"description":"symbol, from, or to is invalid"},"404":{"description":"Breadth series is not stored"}}}},"/api/v1/public/sentiment/breadth":{"get":{"description":"List stored market-breadth series for major indices. Each entry has the index symbol, name, member count, and the latest point. A day is stored when at least 75 percent of that day's constituents have a close. Costs 1 request unit.","parameters":[],"responses":{"200":{"description":"Breadth series list"},"404":{"description":"No breadth series are stored"}}}},"/api/v1/public/sentiment/naaim":{"get":{"description":"Weekly NAAIM Exposure Index. Each point has date and mean, plus the survey spread when published: most bearish, quartiles, median, most bullish and standard deviation. Optional from and to are YYYY-MM-DD. Costs 50 request units.","parameters":[{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"NAAIM series"},"400":{"description":"from or to is not YYYY-MM-DD, or from is after to"},"404":{"description":"NAAIM series is not available"}}}},"/api/v1/public/sentiment/fear-index":{"get":{"description":"Leeway Fear Index time series. Each point has date and value on a 0 to 100 scale. Optional from and to are YYYY-MM-DD. Costs 50 request units.","parameters":[{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Fear Index series"},"400":{"description":"from or to is not YYYY-MM-DD, or from is after to"},"404":{"description":"Fear Index series is not available"}}}},"/api/v1/public/sentiment/smart-money":{"get":{"description":"Leeway Smart Money Index time series. Each point has date and value. The value can be negative. Optional from and to are YYYY-MM-DD. Costs 50 request units.","parameters":[{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Smart Money Index series"},"400":{"description":"from or to is not YYYY-MM-DD, or from is after to"},"404":{"description":"Smart Money Index series is not available"}}}},"/api/v1/public/sentiment/cot/series/{series}":{"get":{"description":"One CFTC Commitments of Traders series. Pass the series id from sentiment_cot. Points have date and value (long minus short). long, short, spread, openInterest, the week-on-week change, the share of open interest, trader counts and cotIndex are included when the report has them. cotIndex is 0 to 100 over the last 156 weeks and is omitted until that window is complete or when the high equals the low. Shares of open interest are omitted when open interest is 0. Optional from and to are YYYY-MM-DD. Costs 1 request unit.","parameters":[{"name":"series","in":"path","required":true,"schema":{"type":"string"},"description":"Series id from GET /sentiment/cot"},{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"COT series"},"400":{"description":"series id, from, or to is invalid"},"404":{"description":"COT series is not stored"}}}},"/api/v1/public/sentiment/cot":{"get":{"description":"List stored CFTC Commitments of Traders series. Without parameters, the list is the standard contracts in the disaggregated and financial-futures reports, futures only and combined. set=all returns every stored contract, including the legacy report. contract is one CFTC market code. report is disagg, tff, or legacy. By default only active series are returned: the latest point falls within the last 28 days. Pass active=all for every stored series, or active=false for inactive ones. Each entry has the series id, title, active flag, and the latest point. Costs 1 request unit.","parameters":[{"name":"set","in":"query","description":"Pass all to list every stored series","schema":{"type":"string"}},{"name":"contract","in":"query","description":"One CFTC market code","schema":{"type":"string"}},{"name":"report","in":"query","description":"disagg, tff, or legacy","schema":{"type":"string"}}],"responses":{"200":{"description":"COT series list"},"400":{"description":"set, contract, or report is invalid"},"404":{"description":"No COT series are stored"}}}},"/api/v1/public/sentiment/sce/series/{series}":{"get":{"description":"One New York Fed Survey of Consumer Expectations series. Pass the series id from sentiment_sce. Points have date and value. The response includes the required citation and the retrieval date. Optional from and to are YYYY-MM-DD. Costs 1 request unit.","parameters":[{"name":"series","in":"path","required":true,"schema":{"type":"string"},"description":"Series id from GET /sentiment/sce"},{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"SCE series"},"400":{"description":"series id, from, or to is invalid"},"404":{"description":"SCE series is not stored"}}}},"/api/v1/public/sentiment/sce":{"get":{"description":"List stored headline series from the New York Fed Survey of Consumer Expectations. Each entry has the series id, title, unit, the citation the New York Fed requires, and the latest reading. Costs 1 request unit.","parameters":[],"responses":{"200":{"description":"SCE series list"},"404":{"description":"No SCE series are stored"}}}},"/api/v1/public/government/series/{series}":{"get":{"description":"One U.S. government series. Pass the series id from government. Points have date and value. The response includes the agency citation and the retrieval date. Optional from and to are YYYY-MM-DD. Costs 1 request unit.","parameters":[{"name":"series","in":"path","required":true,"schema":{"type":"string"},"description":"Series id from GET /government"},{"name":"from","in":"query","description":"First date, YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","description":"Last date, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Government series"},"400":{"description":"series id, from, or to is invalid"},"404":{"description":"Government series is not stored"}}}},"/api/v1/public/government/":{"get":{"description":"List stored U.S. government series from the Treasury and the Bureau of Labor Statistics. Each entry has the series id, title, source, unit, citation, and the latest reading. Costs 1 request unit.","parameters":[],"responses":{"200":{"description":"Government series list"},"404":{"description":"No government series are stored"}}}}},"components":{"securitySchemes":{"apiTokenAuth":{"type":"apiKey","in":"query","name":"apitoken"}}},"security":[{"apiTokenAuth":[]}]}