{"openapi":"3.1.0","info":{"title":"Funding Spreads & Repo Stress API","version":"1.0.0","description":"The money-market spreads that signal whether US dollar funding is calm or seizing up, computed live from the Federal Reserve Bank of New York's public rates API — no key, nothing stored. The headline overnight rates all sit within a few basis points of each other when markets are healthy; it is the spreads between them, and their spikes, that reveal stress. The most-watched is SOFR minus EFFR: SOFR is the cost of secured (collateralised, repo) borrowing and EFFR the cost of unsecured fed-funds borrowing, so when SOFR climbs above EFFR it means collateral is suddenly expensive — the classic repo-stress signal that blew out in September 2019 and around quarter-ends. This API computes that and the other key spreads — SOFR vs the Overnight Bank Funding Rate, SOFR vs the Broad General Collateral Rate, and the general-vs-tri-party collateral spread — in basis points, with a funding-stress regime read. The spreads endpoint returns the live rate board and every spread; the distribution endpoint returns SOFR's intraday percentile spread (99th minus 1st), a within-day dispersion gauge that widens when funding is segmented; the history endpoint returns the time series of any spread and counts the stress days. This is the funding-stress / money-market-spread cut — distinct from the raw NY-Fed rate-level feed (which lists the rates but not the spreads or the stress signal), the central-bank-policy and the yield-curve APIs. It is the gap between the rates, which is where the stress lives.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fundingspread-api","description":"oanor gateway"}],"tags":[{"name":"Spreads"},{"name":"Distribution"},{"name":"History"},{"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/spreads":{"get":{"operationId":"get_v1_spreads","tags":["Spreads"],"summary":"The live rate board and every funding spread in bps, with a stress read","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"All rates from the NY Fed. Spreads in basis points. SOFR − EFFR is the headline repo-stress gauge: positive and rising = secured (collateral) funding richer than unsecured, the September-2019-style stress; negative = easy funding. Read fresh per call, lightly cached.","as_of":"2026-06-10","rates":{"bgcr":{"date":"2026-06-10","rate":3.57,"volume_bn":1281},"effr":{"date":"2026-06-10","rate":3.62,"volume_bn":106},"obfr":{"date":"2026-06-10","rate":3.62,"volume_bn":239},"sofr":{"date":"2026-06-10","rate":3.59,"volume_bn":3023},"tgcr":{"date":"2026-06-10","rate":3.57,"volume_bn":1254}},"source":"Federal Reserve Bank of New York (SOFR, EFFR, OBFR, BGCR, TGCR)","spreads_bps":{"bgcr_tgcr":0,"sofr_bgcr":2,"sofr_effr":-3,"sofr_obfr":-3},"funding_stress":"normal / easy funding — no stress"},"meta":{"timestamp":"2026-06-12T10:34:34.406Z","request_id":"15df1ae7-9834-4272-bd2f-c22f79d98bd4"},"status":"ok","message":"Funding 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/distribution":{"get":{"operationId":"get_v1_distribution","tags":["Distribution"],"summary":"SOFR intraday percentile spread (99th-1st) as a funding-dispersion gauge","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"SOFR is a volume-weighted median of repo transactions; its intraday percentile spread (99th − 1st) widens when some borrowers pay far above the median — a sign of funding segmentation or stress. interquartile_bps is the 75th−25th. Read fresh per call, lightly cached.","read":"tight SOFR distribution — funding uniform and calm","sofr":3.59,"as_of":"2026-06-10","source":"Federal Reserve Bank of New York (SOFR distribution)","volume_bn":3023,"percentiles":{"p1":3.55,"p25":3.57,"p75":3.64,"p99":3.67},"interquartile_bps":7,"dispersion_99_1_bps":12},"meta":{"timestamp":"2026-06-12T10:34:34.583Z","request_id":"e8031d64-f4e6-4e9f-bc9f-8eb6c098a35a"},"status":"ok","message":"SOFR distribution 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/history":{"get":{"operationId":"get_v1_history","tags":["History"],"summary":"Time series of one spread with stress days counted","description":"","parameters":[{"name":"spread","in":"query","required":false,"description":"sofr_effr, sofr_obfr, sofr_bgcr or bgcr_tgcr","schema":{"type":"string"},"example":"sofr_effr"},{"name":"days","in":"query","required":false,"description":"Days of history (10-250)","schema":{"type":"string"},"example":"90"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"days":90,"note":"Daily SOFR − EFFR (secured vs unsecured) in basis points. stress_days counts days the spread reached +5 bps or more (secured-funding stress). Read fresh per call, lightly cached.","label":"SOFR − EFFR (secured vs unsecured)","source":"Federal Reserve Bank of New York","spread":"sofr_effr","avg_bps":-0.1,"history":[{"date":"2026-02-02","a_rate":3.69,"b_rate":3.64,"spread_bps":5},{"date":"2026-02-03","a_rate":3.69,"b_rate":3.64,"spread_bps":5},{"date":"2026-02-04","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-02-05","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-02-06","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-02-09","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-02-10","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-02-11","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-02-12","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-02-13","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-02-17","a_rate":3.71,"b_rate":3.64,"spread_bps":7},{"date":"2026-02-18","a_rate":3.73,"b_rate":3.64,"spread_bps":9},{"date":"2026-02-19","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-02-20","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-02-23","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-02-24","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-02-25","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-02-26","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-02-27","a_rate":3.68,"b_rate":3.64,"spread_bps":4},{"date":"2026-03-02","a_rate":3.71,"b_rate":3.64,"spread_bps":7},{"date":"2026-03-03","a_rate":3.7,"b_rate":3.64,"spread_bps":6},{"date":"2026-03-04","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-03-05","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-03-06","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-09","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-10","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-03-11","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-03-12","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-13","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-16","a_rate":3.7,"b_rate":3.64,"spread_bps":6},{"date":"2026-03-17","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-18","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-03-19","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-03-20","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-03-23","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-03-24","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-03-25","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-03-26","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-03-27","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-03-30","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-03-31","a_rate":3.68,"b_rate":3.64,"spread_bps":4},{"date":"2026-04-01","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-04-02","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-04-06","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-04-07","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-04-08","a_rate":3.59,"b_rate":3.64,"spread_bps":-5},{"date":"2026-04-09","a_rate":3.57,"b_rate":3.64,"spread_bps":-7},{"date":"2026-04-10","a_rate":3.61,"b_rate":3.64,"spread_bps":-3},{"date":"2026-04-13","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-04-14","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-04-15","a_rate":3.72,"b_rate":3.64,"spread_bps":8},{"date":"2026-04-16","a_rate":3.67,"b_rate":3.64,"spread_bps":3},{"date":"2026-04-17","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-04-20","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-04-21","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-04-22","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-04-23","a_rate":3.65,"b_rate":3.64,"spread_bps":1},{"date":"2026-04-24","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-04-27","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-04-28","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-04-29","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-04-30","a_rate":3.66,"b_rate":3.64,"spread_bps":2},{"date":"2026-05-01","a_rate":3.64,"b_rate":3.64,"spread_bps":0},{"date":"2026-05-04","a_rate":3.63,"b_rate":3.64,"spread_bps":-1},{"date":"2026-05-05","a_rate":3.62,"b_rate":3.64,"spread_bps":-2},{"date":"2026-05-06","a_rate":3.61,"b_rate":3.64,"spread_bps":-3},{"date":"2026-05-07","a_rate":3.6,"b_rate":3.63,"spread_bps":-3},{"date":"2026-05-08","a_rate":3.6,"b_rate":3.63,"spread_bps":-3},{"date":"2026-05-11","a_rate":3.6,"b_rate":3.63,"spread_bps":-3},{"date":"2026-05-12","a_rate":3.6,"b_rate":3.63,"spread_bps":-3},{"date":"2026-05-13","a_rate":3.59,"b_rate":3.63,"spread_bps":-4},{"date":"2026-05-14","a_rate":3.56,"b_rate":3.63,"spread_bps":-7},{"date":"2026-05-15","a_rate":3.55,"b_rate":3.63,"spread_bps":-8},{"date":"2026-05-18","a_rate":3.53,"b_rate":3.63,"spread_bps":-10},{"date":"2026-05-19","a_rate":3.51,"b_rate":3.62,"spread_bps":-11},{"date":"2026-05-20","a_rate":3.5,"b_rate":3.62,"spread_bps":-12},{"date":"2026-05-21","a_rate":3.51,"b_rate":3.62,"spread_bps":-11},{"date":"2026-05-22","a_rate":3.55,"b_rate":3.62,"spread_bps":-7},{"date":"2026-05-26","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-05-27","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-05-28","a_rate":3.62,"b_rate":3.62,"spread_bps":0},{"date":"2026-05-29","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-06-01","a_rate":3.65,"b_rate":3.62,"spread_bps":3},{"date":"2026-06-02","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-06-03","a_rate":3.61,"b_rate":3.62,"spread_bps":-1},{"date":"2026-06-04","a_rate":3.62,"b_rate":3.62,"spread_bps":0},{"date":"2026-06-05","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-06-08","a_rate":3.63,"b_rate":3.62,"spread_bps":1},{"date":"2026-06-09","a_rate":3.6,"b_rate":3.62,"spread_bps":-2},{"date":"2026-06-10","a_rate":3.59,"b_rate":3.62,"spread_bps":-3}],"max_bps":9,"min_bps":-12,"current_bps":-3,"stress_days":8},"meta":{"timestamp":"2026-06-12T10:34:35.060Z","request_id":"1361c1d3-1e1d-464d-b6fe-4bed85519637"},"status":"ok","message":"Spread history 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":"spreads, distribution and meta take no parameters. history takes spread (sofr_effr default, sofr_obfr, sofr_bgcr, bgcr_tgcr) and days (10-250, default 90). All spreads are in basis points; SOFR − EFFR > 0 and rising is the repo-stress signal. A 30-minute protective cache fronts the NY Fed upstream (rates update each business morning).","rates":["sofr","effr","obfr","bgcr","tgcr"],"source":"Federal Reserve Bank of New York markets API (SOFR, EFFR, OBFR, BGCR, TGCR), live","service":"fundingspread-api","spreads":["sofr_effr","sofr_obfr","sofr_bgcr","bgcr_tgcr"],"endpoints":{"GET /v1/meta":"This document.","GET /v1/history":"Time series of one spread with stress days counted (spread=sofr_effr, days=90).","GET /v1/spreads":"The live rate board and every funding spread in bps, with a stress read.","GET /v1/distribution":"SOFR's intraday percentile spread (99th−1st) as a funding-dispersion gauge."},"description":"Funding spreads & repo stress — the money-market spreads that signal whether US dollar funding is calm or seizing up, live from the NY Fed rates API (no key). spreads returns the live rate board and every spread in basis points (SOFR−EFFR the headline repo-stress gauge, SOFR−OBFR, SOFR−BGCR, BGCR−TGCR) with a funding-stress regime read; distribution returns SOFR's intraday percentile spread (99th−1st), a within-day dispersion gauge; history returns the time series of any spread with stress days counted. The funding-stress / money-market-spread cut — distinct from the raw NY-Fed rate-level feed (rates but not spreads), the central-bank-policy and yield-curve APIs. It is the gap between the rates.","sofr_effr_bps":-3,"upstream_status":"ok"},"meta":{"timestamp":"2026-06-12T10:34:35.172Z","request_id":"1bf0de0e-7dc9-4682-aaed-ef690b3d6f15"},"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":665,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1170,"monthly_call_quota":15200,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3640,"monthly_call_quota":82000,"rps_limit":16,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":8100,"monthly_call_quota":458000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fundingspread-api"}