{"openapi":"3.1.0","info":{"title":"Swissquote FX API","version":"1.0.0","description":"Live real-time foreign-exchange and precious-metal quotes from Swissquote, the Swiss bank and broker, via its public BBO (best-bid-offer) price feed. Unlike a central bank's once-a-day reference fixing, this is a live dealing feed: for any currency pair it returns the current bid and ask with the spread, aggregated to the tightest available price across Swissquote's platforms. Get a pair's best bid, ask, mid and spread right now. Pull the full tiered breakdown — every platform and spread profile with its own bid, ask and spread, the data a broker uses to price clients. Convert any amount at the live mid rate. Get live gold, silver, platinum and palladium quotes against the dollar in one call. Live, no key, nothing stored. Distinct from central-bank and ECB daily-fixing FX APIs and from crypto feeds — this is a live broker bid/ask feed with real dealing spreads. Perfect for trading, pricing, remittance and treasury apps.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/swissquote-api","description":"oanor gateway"}],"tags":[{"name":"Quotes"},{"name":"Metals"}],"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/convert":{"get":{"operationId":"get_v1_convert","tags":["Quotes"],"summary":"Convert at the live mid rate","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":"amount","in":"query","required":false,"description":"Amount to convert","schema":{"type":"string"},"example":"100"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ask":1.15618,"bid":1.15616,"base":"EUR","note":"converted at the live mid rate","rate":1.15617,"quote":"USD","amount":100,"result":115.617,"source":"Swissquote","timestamp":"2026-06-10T14:02:41.341Z"},"meta":{"timestamp":"2026-06-10T14:02:41.528Z","request_id":"d8526f8e-73bd-4d21-920e-51b6514fc143"},"status":"ok","message":"Conversion completed 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/quote":{"get":{"operationId":"get_v1_quote","tags":["Quotes"],"summary":"Live best bid/ask/mid/spread","description":"","parameters":[{"name":"base","in":"query","required":true,"description":"Base currency (3-letter)","schema":{"type":"string"},"example":"EUR"},{"name":"quote","in":"query","required":true,"description":"Quote currency (3-letter)","schema":{"type":"string"},"example":"USD"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ask":1.15618,"bid":1.15616,"mid":1.15617,"base":"EUR","quote":"USD","source":"Swissquote","spread":2.0e-5,"timestamp":"2026-06-10T14:02:41.550Z","instrument":"EUR/USD","spread_pct":0.00173},"meta":{"timestamp":"2026-06-10T14:02:41.669Z","request_id":"edde2df0-f655-433a-b584-5b895a44a886"},"status":"ok","message":"Quote 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/spreads":{"get":{"operationId":"get_v1_spreads","tags":["Quotes"],"summary":"Per-platform tiered bid/ask breakdown","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"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"base":"EUR","quote":"USD","source":"Swissquote","platforms":[{"server":"AT","platform":"AT","profiles":[{"ask":1.15627,"bid":1.15608,"profile":"standard","ask_spread":0.85,"bid_spread":0.85},{"ask":1.15625,"bid":1.15609,"profile":"premium","ask_spread":0.7,"bid_spread":0.7},{"ask":1.15624,"bid":1.15611,"profile":"prime","ask_spread":0.55,"bid_spread":0.55}]},{"server":"Live5","platform":"SwissquoteLtd","profiles":[{"ask":1.15625,"bid":1.1561,"profile":"premium","ask_spread":0.65,"bid_spread":0.65},{"ask":1.15623,"bid":1.15611,"profile":"prime","ask_spread":0.5,"bid_spread":0.5},{"ask":1.15618,"bid":1.15616,"profile":"elite","ask_spread":0,"bid_spread":0}]},{"server":"Live7","platform":"SwissquoteCapitalMarkets","profiles":[{"ask":1.15625,"bid":1.1561,"profile":"premium","ask_spread":0.65,"bid_spread":0.65},{"ask":1.15622,"bid":1.15612,"profile":"prime","ask_spread":0.4,"bid_spread":0.4},{"ask":1.15618,"bid":1.15616,"profile":"elite","ask_spread":0,"bid_spread":0}]}],"timestamp":"2026-06-10T14:02:41.722Z","instrument":"EUR/USD"},"meta":{"timestamp":"2026-06-10T14:02:41.795Z","request_id":"3eda4957-c42f-4897-b7c7-e63c72e5d98e"},"status":"ok","message":"Spreads 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/metals":{"get":{"operationId":"get_v1_metals","tags":["Metals"],"summary":"Live gold/silver/platinum/palladium vs USD","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":4,"metals":[{"ask":4173.182,"bid":4172.678,"mid":4172.93,"base":"XAU","metal":"gold","quote":"USD","source":"Swissquote","spread":0.504,"symbol":"XAU","timestamp":"2026-06-10T14:02:41.893Z","instrument":"XAU/USD","spread_pct":0.012079},{"ask":65.351,"bid":65.3031,"mid":65.32705,"base":"XAG","metal":"silver","quote":"USD","source":"Swissquote","spread":0.0479,"symbol":"XAG","timestamp":"2026-06-10T14:02:41.874Z","instrument":"XAG/USD","spread_pct":0.07335},{"ask":1696.662,"bid":1693.438,"mid":1695.05,"base":"XPT","metal":"platinum","quote":"USD","source":"Swissquote","spread":3.224,"symbol":"XPT","timestamp":"2026-06-10T14:02:41.892Z","instrument":"XPT/USD","spread_pct":0.190382},{"ask":1248.29,"bid":1244.7,"mid":1246.495,"base":"XPD","metal":"palladium","quote":"USD","source":"Swissquote","spread":3.59,"symbol":"XPD","timestamp":"2026-06-10T14:02:41.654Z","instrument":"XPD/USD","spread_pct":0.288423}],"source":"Swissquote","quote_currency":"USD"},"meta":{"timestamp":"2026-06-10T14:02:41.984Z","request_id":"0cb5b608-a729-4a45-9019-c89bac9e21c8"},"status":"ok","message":"Metals 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"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":12000,"rps_limit":3,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":800,"monthly_call_quota":165000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2500,"monthly_call_quota":930000,"rps_limit":20,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":5900,"monthly_call_quota":5000000,"rps_limit":45,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/swissquote-api"}