{"openapi":"3.1.0","info":{"title":"FX Cross-Rate Heatmap & Matrix API","version":"1.0.0","description":"The full grid of every major currency against every other, with the day's move in each cell, computed live from Yahoo Finance (no key, nothing stored). It is the dashboard every FX desk keeps open: an 8x8 matrix of the majors (USD, EUR, GBP, JPY, CHF, AUD, CAD, NZD) showing the cross rate and the percentage change on the day for every pair at once, so you can see in a single glance which currencies are bid and which are offered across the board. The matrix endpoint returns the whole rate grid plus the matching change-on-the-day heatmap, and derives the strongest and weakest currency from their average move against the basket. The cross endpoint returns one pair's rate and daily change. The currencies endpoint lists what is covered. The FX cross-rate matrix / heatmap cut — distinct from the bring-your-own-rates cross-rate & triangular-arbitrage calculator, the currency-strength meter (one aggregate score per currency) and the single-pair price APIs. It is the whole board, live.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fxheatmap-api","description":"oanor gateway"}],"tags":[{"name":"Matrix"},{"name":"Cross"},{"name":"Currencies"},{"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/matrix":{"get":{"operationId":"get_v1_matrix","tags":["Matrix"],"summary":"Full 8x8 cross-rate grid + daily-change heatmap + strongest/weakest","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"rates[BASE][QUOTE] is units of QUOTE per 1 BASE (e.g. rates.EUR.USD is EUR/USD). changes_pct is the move on the day for each cell. strongest/weakest rank currencies by their average change against the basket. Crosses are derived from each currency's USD value; daily change is from the legs' last two daily closes.","rates":{"AUD":{"AUD":1,"CAD":0.98527,"CHF":0.56066,"EUR":0.60848,"GBP":0.52523,"JPY":112.824,"NZD":1.20781,"USD":0.70467},"CAD":{"AUD":1.01495,"CAD":1,"CHF":0.56904,"EUR":0.61758,"GBP":0.53308,"JPY":114.51,"NZD":1.22586,"USD":0.71521},"CHF":{"AUD":1.78362,"CAD":1.75735,"CHF":1,"EUR":1.0853,"GBP":0.9368,"JPY":201.234,"NZD":2.15427,"USD":1.25687},"EUR":{"AUD":1.64343,"CAD":1.61922,"CHF":0.9214,"EUR":1,"GBP":0.86317,"JPY":185.417,"NZD":1.98494,"USD":1.15808},"GBP":{"AUD":1.90394,"CAD":1.8759,"CHF":1.06746,"EUR":1.15852,"GBP":1,"JPY":214.809,"NZD":2.29959,"USD":1.34165},"JPY":{"AUD":0.00886,"CAD":0.00873,"CHF":0.00497,"EUR":0.00539,"GBP":0.00466,"JPY":1,"NZD":0.01071,"USD":0.00625},"NZD":{"AUD":0.82795,"CAD":0.81575,"CHF":0.46419,"EUR":0.50379,"GBP":0.43486,"JPY":93.412,"NZD":1,"USD":0.58343},"USD":{"AUD":1.4191,"CAD":1.3982,"CHF":0.79563,"EUR":0.8635,"GBP":0.74535,"JPY":160.108,"NZD":1.714,"USD":1}},"source":"Yahoo Finance","weakest":[{"currency":"CAD","avg_change_pct":-0.68},{"currency":"USD","avg_change_pct":-0.4},{"currency":"JPY","avg_change_pct":-0.1}],"strongest":[{"currency":"AUD","avg_change_pct":0.46},{"currency":"NZD","avg_change_pct":0.39},{"currency":"CHF","avg_change_pct":0.22}],"currencies":["USD","EUR","GBP","JPY","CHF","AUD","CAD","NZD"],"changes_pct":{"AUD":{"AUD":0,"CAD":1.01,"CHF":0.21,"EUR":0.36,"GBP":0.34,"JPY":0.49,"NZD":0.06,"USD":0.75},"CAD":{"AUD":-1,"CAD":0,"CHF":-0.79,"EUR":-0.64,"GBP":-0.66,"JPY":-0.51,"NZD":-0.94,"USD":-0.25},"CHF":{"AUD":-0.21,"CAD":0.8,"CHF":0,"EUR":0.15,"GBP":0.13,"JPY":0.28,"NZD":-0.15,"USD":0.54},"EUR":{"AUD":-0.36,"CAD":0.64,"CHF":-0.15,"EUR":0,"GBP":-0.02,"JPY":0.13,"NZD":-0.3,"USD":0.39},"GBP":{"AUD":-0.34,"CAD":0.66,"CHF":-0.13,"EUR":0.02,"GBP":0,"JPY":0.15,"NZD":-0.28,"USD":0.41},"JPY":{"AUD":-0.49,"CAD":0.51,"CHF":-0.28,"EUR":-0.13,"GBP":-0.15,"JPY":0,"NZD":-0.43,"USD":0.26},"NZD":{"AUD":-0.06,"CAD":0.94,"CHF":0.15,"EUR":0.3,"GBP":0.28,"JPY":0.43,"NZD":0,"USD":0.69},"USD":{"AUD":-0.75,"CAD":0.25,"CHF":-0.54,"EUR":-0.39,"GBP":-0.41,"JPY":-0.26,"NZD":-0.69,"USD":0}}},"meta":{"timestamp":"2026-06-12T10:35:14.755Z","request_id":"8828286b-3d5f-4faa-ac23-ad7815ce485e"},"status":"ok","message":"Matrix 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/cross":{"get":{"operationId":"get_v1_cross","tags":["Cross"],"summary":"One cross rate and daily change","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":"JPY"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"base":"EUR","note":"The cross rate (units of JPY per 1 EUR) and its change on the day, derived from each currency's USD value.","pair":"EUR/JPY","rate":185.417,"quote":"JPY","source":"Yahoo Finance","change_1d_pct":0.13},"meta":{"timestamp":"2026-06-12T10:35:14.894Z","request_id":"d019e51f-e586-4a9c-b1e8-cf309f13d4b5"},"status":"ok","message":"Cross 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/currencies":{"get":{"operationId":"get_v1_currencies","tags":["Currencies"],"summary":"Supported currencies","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Supported major currencies. Pass any two as base=/quote= to /v1/cross. The matrix covers every pair.","count":8,"source":"Yahoo Finance","currencies":["USD","EUR","GBP","JPY","CHF","AUD","CAD","NZD"]},"meta":{"timestamp":"2026-06-12T10:35:14.973Z","request_id":"48e10b2f-ef6e-4e6a-b76d-18448499e926"},"status":"ok","message":"Currencies 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":"matrix is parameter-less; cross takes base= and quote= (majors only). Crosses are derived from each currency's USD value; daily change from the legs' last two closes. Read fresh per call, nothing cached.","source":"Yahoo Finance daily FX rates, live","service":"fxheatmap-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/cross":"One cross rate and daily change (base=EUR, quote=JPY).","GET /v1/matrix":"Full 8x8 cross-rate grid + daily-change heatmap + strongest/weakest.","GET /v1/currencies":"The supported currencies."},"currencies":["USD","EUR","GBP","JPY","CHF","AUD","CAD","NZD"],"description":"FX cross-rate heatmap & matrix — the full grid of every major currency against every other with the day's move in each cell, live from Yahoo Finance (no key, nothing stored). matrix returns the whole rate grid plus the change-on-the-day heatmap and the strongest/weakest currency. cross returns one pair's rate and daily change. currencies lists what is covered. The FX cross-rate matrix / heatmap cut — distinct from the bring-your-own-rates cross-rate & triangular-arbitrage calculator, the currency-strength meter and the single-pair price APIs.","upstream_status":"ok","currencies_loaded":8},"meta":{"timestamp":"2026-06-12T10:35:15.102Z","request_id":"3164716b-9706-4968-b070-23a6c984ca2f"},"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":1200,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":912,"monthly_call_quota":28000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2766,"monthly_call_quota":135000,"rps_limit":18,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":6840,"monthly_call_quota":650000,"rps_limit":45,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fxheatmap-api"}