{"openapi":"3.1.0","info":{"title":"FX Cross-Rate & Triangular Arbitrage API","version":"1.0.0","description":"Live cross-rate, triangular-arbitrage and conversion-path maths that FX desks and trading bots run on a set of quoted rates, computed on demand from the legs you pass in — no key, no cache, nothing stored. The cross endpoint chains two pairs that share a currency into the implied third rate (EUR/USD x USD/JPY gives EUR/JPY) and, if you supply the quoted cross, returns the discrepancy in basis points and whether it is arbitrageable. The triangular endpoint takes a closed loop of three rates and detects a triangular-arbitrage opportunity — the cycle product, the profit in percent, the winning direction (forward or reverse) and the payout on a notional. The chain endpoint converts an amount along a path of pairs and returns the amount at every hop with the effective rate. Each leg is written FROMTO:rate, meaning one unit of FROM buys that many of TO (e.g. EURUSD:1.08). This is an FX cross-rate and arbitrage engine that reasons across several pairs at once, distinct from pip/lot calculators and single-pair converters. Computed locally and deterministically, so it is instant and private. Ideal for FX arbitrage scanners, multi-currency pricing, treasury routing and trading dashboards. Live, nothing stored. 3 compute endpoints. For live quotes feed in rates from an FX or exchange API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fxcross-api","description":"oanor gateway"}],"tags":[{"name":"FX"},{"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/chain":{"get":{"operationId":"get_v1_chain","tags":["FX"],"summary":"Convert an amount along a path of pairs","description":"","parameters":[{"name":"legs","in":"query","required":true,"description":"Chained pairs FROMTO:rate","schema":{"type":"string"},"example":"EURUSD:1.08,USDJPY:150"},{"name":"amount","in":"query","required":true,"description":"Amount in the first currency","schema":{"type":"string"},"example":"1000"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"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":["FX"],"summary":"Implied cross rate from chained pairs","description":"","parameters":[{"name":"legs","in":"query","required":true,"description":"Chained pairs FROMTO:rate, comma-separated","schema":{"type":"string"},"example":"EURUSD:1.08,USDJPY:150"},{"name":"quoted","in":"query","required":false,"description":"Quoted cross to compare against","schema":{"type":"string"},"example":"163"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"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/triangular":{"get":{"operationId":"get_v1_triangular","tags":["FX"],"summary":"Triangular-arbitrage detection","description":"","parameters":[{"name":"legs","in":"query","required":true,"description":"Closed 3-rate loop FROMTO:rate","schema":{"type":"string"},"example":"EURUSD:1.08,USDJPY:150,JPYEUR:0.00617"},{"name":"notional","in":"query","required":false,"description":"Notional to compute payout on (default 1)","schema":{"type":"string"},"example":"10000"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"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":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"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":4500,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":790,"monthly_call_quota":88000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2280,"monthly_call_quota":465000,"rps_limit":18,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":5300,"monthly_call_quota":2850000,"rps_limit":45,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fxcross-api"}