{"openapi":"3.1.0","info":{"title":"Keltner Channels Screener (Multi-Asset) API","version":"1.0.0","description":"Which markets are breaking out of their volatility-adjusted trend channel, computed live from Yahoo Finance (no key, nothing stored). Keltner Channels wrap a 20-day exponential average in bands set at two Average-True-Ranges above and below it — and unlike Bollinger Bands, whose width is statistical standard deviation, Keltner's width is the market's actual trading range. A close above the upper Keltner band is a trend-following breakout (riding strength), below the lower a breakdown, and price hugging a band signals a powerful, persistent trend. For a cross-asset, cross-sector universe — equity indices and sectors, gold, oil, commodities, bonds and crypto — this computes each asset's Keltner upper, middle and lower bands, where price sits inside the channel, and flags fresh breakouts. The screener endpoint returns the upside and downside Keltner breakouts across the board. The asset endpoint returns one market's Keltner card. The universe endpoint lists what is covered. The cross-asset Keltner-channel / volatility-trend screener cut — distinct from the Bollinger-Bands screener (standard-deviation width, mean-reversion), the bring-your-own-candle ATR API and the other indicator screeners.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/keltner-api","description":"oanor gateway"}],"tags":[{"name":"Screener"},{"name":"Asset"},{"name":"Universe"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/screener":{"get":{"operationId":"get_v1_screener","tags":["Screener"],"summary":"Cross-asset board with Keltner breakouts and channel-position ranking","description":"","parameters":[{"name":"class","in":"query","required":false,"description":"Filter by class: equities, sector, commodities, bonds, crypto","schema":{"type":"string"},"example":"sector"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Each market's Keltner Channel: a 20-day EMA midline with bands at 2x the 10-day ATR. A close above the upper band is a trend-following breakout (strength), below the lower a breakdown; channel_position (0=lower, 100=upper) shows where price sits. Keltner width is the real trading range (ATR), unlike Bollinger's standard deviation. Sorted by channel position (strongest first).","class":"sector","assets":[{"key":"health_care","class":"sector","label":"Health Care","price":154.09,"atr_10":2.378,"status":"near upper band (strong)","lower_band":145.3058,"upper_band":154.818,"breakout_up":false,"middle_band":150.0619,"breakout_down":false,"channel_position":92.3},{"key":"financials","class":"sector","label":"Financials","price":52.62,"atr_10":0.6813,"status":"inside channel","lower_band":50.4731,"upper_band":53.1984,"breakout_up":false,"middle_band":51.8358,"breakout_down":false,"channel_position":78.8},{"key":"real_estate","class":"sector","label":"Real Estate","price":44.92,"atr_10":0.6353,"status":"inside channel","lower_band":43.0344,"upper_band":45.5757,"breakout_up":false,"middle_band":44.3051,"breakout_down":false,"channel_position":74.2},{"key":"industrials","class":"sector","label":"Industrials","price":175.15,"atr_10":3.3751,"status":"inside channel","lower_band":166.5597,"upper_band":180.0599,"breakout_up":false,"middle_band":173.3098,"breakout_down":false,"channel_position":63.6},{"key":"technology","class":"sector","label":"Technology","price":183.21,"atr_10":6.3177,"status":"inside channel","lower_band":169.2817,"upper_band":194.5524,"breakout_up":false,"middle_band":181.9171,"breakout_down":false,"channel_position":55.1},{"key":"utilities","class":"sector","label":"Utilities","price":44.05,"atr_10":0.6795,"status":"inside channel","lower_band":42.9953,"upper_band":45.7134,"breakout_up":false,"middle_band":44.3544,"breakout_down":false,"channel_position":38.8},{"key":"energy","class":"sector","label":"Energy","price":57.12,"atr_10":1.3911,"status":"inside channel","lower_band":55.1899,"upper_band":60.7541,"breakout_up":false,"middle_band":57.972,"breakout_down":false,"channel_position":34.7}],"source":"Yahoo Finance","scanned":7,"upside_breakouts":[],"downside_breakouts":[]},"meta":{"timestamp":"2026-06-12T10:34:58.407Z","request_id":"870b3563-4009-41e7-b7b6-9f713367a455"},"status":"ok","message":"Screener retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/asset":{"get":{"operationId":"get_v1_asset","tags":["Asset"],"summary":"One market Keltner Channel card","description":"","parameters":[{"name":"asset","in":"query","required":true,"description":"Asset key (see /v1/universe)","schema":{"type":"string"},"example":"sp500"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"key":"sp500","note":"One market's Keltner Channel card: 20-day EMA midline, upper/lower bands at 2x the 10-day ATR, where price sits in the channel, and breakout flags. Keltner uses ATR (the real range), not standard deviation.","class":"equities","label":"S&P 500","price":737.76,"atr_10":10.3533,"source":"Yahoo Finance","status":"inside channel","symbol":"SPY","lower_band":720.0125,"upper_band":761.4256,"breakout_up":false,"middle_band":740.719,"breakout_down":false,"channel_position":42.9},"meta":{"timestamp":"2026-06-12T10:34:58.596Z","request_id":"ddf3ac55-2956-487c-897c-dfba1d46ff07"},"status":"ok","message":"Asset retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/universe":{"get":{"operationId":"get_v1_universe","tags":["Universe"],"summary":"Supported instruments","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Supported instruments. Pass key as asset= to /v1/asset, class= to /v1/screener.","count":21,"assets":[{"key":"sp500","class":"equities","label":"S&P 500","symbol":"SPY"},{"key":"nasdaq100","class":"equities","label":"Nasdaq 100","symbol":"QQQ"},{"key":"small_caps","class":"equities","label":"US Small Caps","symbol":"IWM"},{"key":"developed_intl","class":"equities","label":"Developed ex-US","symbol":"EFA"},{"key":"emerging","class":"equities","label":"Emerging Markets","symbol":"EEM"},{"key":"technology","class":"sector","label":"Technology","symbol":"XLK"},{"key":"financials","class":"sector","label":"Financials","symbol":"XLF"},{"key":"energy","class":"sector","label":"Energy","symbol":"XLE"},{"key":"health_care","class":"sector","label":"Health Care","symbol":"XLV"},{"key":"industrials","class":"sector","label":"Industrials","symbol":"XLI"},{"key":"utilities","class":"sector","label":"Utilities","symbol":"XLU"},{"key":"real_estate","class":"sector","label":"Real Estate","symbol":"XLRE"},{"key":"gold","class":"commodities","label":"Gold","symbol":"GLD"},{"key":"silver","class":"commodities","label":"Silver","symbol":"SLV"},{"key":"oil","class":"commodities","label":"Crude Oil","symbol":"USO"},{"key":"natural_gas","class":"commodities","label":"Natural Gas","symbol":"UNG"},{"key":"broad_commodities","class":"commodities","label":"Broad Commodities","symbol":"DBC"},{"key":"long_treasuries","class":"bonds","label":"Long Treasuries","symbol":"TLT"},{"key":"high_yield","class":"bonds","label":"High-Yield Credit","symbol":"HYG"},{"key":"bitcoin","class":"crypto","label":"Bitcoin","symbol":"BTC-USD"},{"key":"ether","class":"crypto","label":"Ether","symbol":"ETH-USD"}],"source":"Yahoo Finance","classes":["equities","sector","commodities","bonds","crypto"]},"meta":{"timestamp":"2026-06-12T10:34:58.725Z","request_id":"9ca2a06e-1e18-4893-851f-529339d0d1d1"},"status":"ok","message":"Universe retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"screener class= filters by class. asset= is a supported key (see /v1/universe). Midline is the 20-day EMA; bands are 2x the 10-day Wilder ATR. Read fresh per call, nothing cached.","source":"Yahoo Finance daily OHLC (4mo range) across a multi-asset universe, live","classes":["equities","sector","commodities","bonds","crypto"],"service":"keltner-api","settings":{"atr":10,"ema":20,"mult":2},"endpoints":{"GET /v1/meta":"This document.","GET /v1/asset":"One market's Keltner Channel card (asset=sp500).","GET /v1/screener":"Cross-asset board with Keltner breakouts and channel-position ranking (class=sector optional).","GET /v1/universe":"The supported instruments."},"description":"Keltner Channels screener (multi-asset) — which markets are breaking out of their volatility-adjusted trend channel, live from Yahoo Finance (no key, nothing stored). screener returns the upside and downside Keltner breakouts across a cross-asset board with the channel-position ranking. asset returns one market's Keltner card (EMA midline, ATR-based bands, position, breakout flags). universe lists what is covered. The cross-asset Keltner-channel / volatility-trend screener cut — distinct from the Bollinger-Bands screener (standard-deviation width), the bring-your-own-candle ATR API and the other indicator screeners.","universe_size":21,"assets_scanned":21,"upstream_status":"ok"},"meta":{"timestamp":"2026-06-12T10:34:59.062Z","request_id":"54a4a312-736f-4797-8e6b-3557704038e8"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":790,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1092,"monthly_call_quota":17000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3420,"monthly_call_quota":89500,"rps_limit":16,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":7720,"monthly_call_quota":490000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/keltner-api"}