{"openapi":"3.1.0","info":{"title":"FX Range API","version":"1.0.0","description":"A live forex analytic that tells you where a currency pair is trading inside its recent range, computed from European Central Bank daily reference rates. For any pair it returns the period high and low (and the dates they happened), the current rate, and the percentile position in the range (0% = sitting on the low, 100% = sitting on the high) plus the distance from each extreme — the context traders use for mean-reversion and breakout calls. Get a pair's range over a month, quarter, half-year or year, or scan a basket to find what is pinned near its highs or lows. Built for forex, trading and dashboard apps. Live, no key. Distinct from rate, strength, volatility, correlation and signal APIs.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fxrange-api","description":"oanor gateway"}],"tags":[{"name":"Range"},{"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/range":{"get":{"operationId":"get_v1_range","tags":["Range"],"summary":"A pair's high/low/current/percentile","description":"","parameters":[{"name":"base","in":"query","required":true,"description":"Base currency","schema":{"type":"string"},"example":"EUR"},{"name":"quote","in":"query","required":true,"description":"Quote currency","schema":{"type":"string"},"example":"USD"},{"name":"period","in":"query","required":false,"description":"1m | 3m | 6m | 1y","schema":{"type":"string"},"example":"1y"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"low":1.1404,"base":"EUR","high":1.1974,"pair":"EURUSD","quote":"USD","period":"1y","current":1.154,"to_date":"2026-06-08","low_date":"2025-08-01","from_date":"2025-06-05","high_date":"2026-01-28","observations":257,"pct_above_low":1.19,"pct_below_high":-3.62,"percentile_pct":23.86},"meta":{"timestamp":"2026-06-09T03:03:20.606Z","request_id":"3d9b31e6-ccc4-44d2-b13e-f0c18c4ab6ef"},"status":"ok","message":"Range 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/scan":{"get":{"operationId":"get_v1_scan","tags":["Range"],"summary":"Scan a basket for range position","description":"","parameters":[{"name":"base","in":"query","required":false,"description":"Base currency","schema":{"type":"string"},"example":"USD"},{"name":"period","in":"query","required":false,"description":"1m | 3m | 6m | 1y","schema":{"type":"string"},"example":"1y"},{"name":"near","in":"query","required":false,"description":"high | low","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"base":"USD","as_of":"2026-06-08","count":7,"pairs":[{"low":142.845047,"high":159.965338,"pair":"USDJPY","quote":"JPY","current":159.965338,"percentile_pct":100},{"low":0.835143,"high":0.876885,"pair":"USDEUR","quote":"EUR","current":0.866551,"percentile_pct":75.24},{"low":1.35244,"high":1.412983,"pair":"USDCAD","quote":"CAD","current":1.393674,"percentile_pct":68.11},{"low":0.723763,"high":0.76662,"pair":"USDGBP","quote":"GBP","current":0.748354,"percentile_pct":57.38},{"low":1.63624,"high":1.784722,"pair":"USDNZD","quote":"NZD","current":1.715078,"percentile_pct":53.1},{"low":0.767025,"high":0.822619,"pair":"USDCHF","quote":"CHF","current":0.796101,"percentile_pct":52.3},{"low":1.377995,"high":1.565812,"pair":"USDAUD","quote":"AUD","current":1.413432,"percentile_pct":18.87}],"period":"1y"},"meta":{"timestamp":"2026-06-09T03:03:20.726Z","request_id":"651cb903-0f14-41e1-89d3-0675a7d0d40e"},"status":"ok","message":"Scan 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":{"as_of":"2026-06-08","source":"ECB daily reference rates via Frankfurter (live)","periods":["1m","3m","6m","1y"],"service":"fxrange-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/scan":"Scan a basket vs a base for range position (base=USD, period=, near=high|low).","GET /v1/range":"A pair's high/low/current/percentile in its range (base=EUR&quote=USD, period=1m|3m|6m|1y)."},"description":"Live FX range-position analytic from ECB reference rates (Frankfurter): for any currency pair, the period high/low (with dates), current rate, and percentile position in the range (0%=on the low, 100%=on the high) plus distance from each extreme. Get a pair's range or scan a basket for what's near its highs/lows. Live, no key. Distinct from rate, strength, volatility, correlation and signal APIs.","scan_basket":["USD","EUR","JPY","GBP","AUD","CAD","CHF","NZD"]},"meta":{"timestamp":"2026-06-09T03:03:20.816Z","request_id":"67bc6d43-b5a3-43a5-9f48-19dc338a08e3"},"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":350,"rps_limit":3,"hard_limit":true},{"slug":"trader","name":"Trader","price_cents_month":1100,"monthly_call_quota":10500,"rps_limit":10,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2300,"monthly_call_quota":52000,"rps_limit":25,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":5400,"monthly_call_quota":265000,"rps_limit":45,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fxrange-api"}