{"openapi":"3.1.0","info":{"title":"Crypto Futures Term Structure & Basis Curve API","version":"1.0.0","description":"The shape of the crypto dated-futures curve and the annualised basis at every expiry, read live from Deribit's public futures book — no key, nothing stored. A single spot price tells you nothing about what the market pays to hold a position over time: dated futures trade at a premium (contango) or a discount (backwardation) to spot, and that premium, annualised, is the cash-and-carry yield basis traders harvest. The curve endpoint returns, for a currency (BTC or ETH), the spot index, the perpetual and every listed dated future — each with its days to expiry, mark price, the absolute and percent basis to spot and the annualised basis — plus the overall curve shape (contango or backwardation) and the front- and back-month annualised basis. The basis endpoint returns the annualised basis (cash-and-carry yield) for a chosen expiry, or the front future. This is the futures-curve / term-structure cut for crypto — distinct from the spot-versus-perpetual basis API (a single point on the curve), and from the funding-rate, options, max-pain, gamma and price APIs in the catalogue. Currency is BTC or ETH; expiry is a Deribit code like 26JUN26.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/futurescurve-api","description":"oanor gateway"}],"tags":[{"name":"Futures Curve"},{"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/basis":{"get":{"operationId":"get_v1_basis","tags":["Futures Curve"],"summary":"Annualised basis for an expiry","description":"","parameters":[{"name":"currency","in":"query","required":true,"description":"BTC or ETH","schema":{"type":"string"},"example":"BTC"},{"name":"expiry","in":"query","required":false,"description":"Deribit expiry code (default front future)","schema":{"type":"string"},"example":"26JUN26"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"mark":63334.61,"expiry":"26JUN26","source":"Deribit","currency":"BTC","basis_abs":48.18,"basis_pct":0.0761,"spot_index":63286.43,"days_to_expiry":14.26,"annualized_basis_pct":1.95},"meta":{"timestamp":"2026-06-12T01:41:10.552Z","request_id":"77fea771-ddc2-424f-be17-9d24ee36534c"},"status":"ok","message":"Basis 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/curve":{"get":{"operationId":"get_v1_curve","tags":["Futures Curve"],"summary":"Full futures curve with annualised basis","description":"","parameters":[{"name":"currency","in":"query","required":true,"description":"BTC or ETH","schema":{"type":"string"},"example":"BTC"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"annualized_basis_pct = (future/spot − 1) × 365/days — the cash-and-carry yield. Contango (positive) is the calm default; backwardation (negative) signals spot-demand stress. The perpetual basis is not annualised (it is continuously funded).","count":12,"curve":[{"mark":63302.12,"expiry":"12JUN26","basis_abs":15.69,"basis_pct":0.0248,"days_to_expiry":0.26,"annualized_basis_pct":34.4},{"mark":63299.62,"expiry":"13JUN26","basis_abs":13.19,"basis_pct":0.0208,"days_to_expiry":1.26,"annualized_basis_pct":6.02},{"mark":63295.39,"expiry":"14JUN26","basis_abs":8.96,"basis_pct":0.0142,"days_to_expiry":2.26,"annualized_basis_pct":2.28},{"mark":63303.31,"expiry":"15JUN26","basis_abs":16.88,"basis_pct":0.0267,"days_to_expiry":3.26,"annualized_basis_pct":2.98},{"mark":63312.7,"expiry":"19JUN26","basis_abs":26.27,"basis_pct":0.0415,"days_to_expiry":7.26,"annualized_basis_pct":2.09},{"mark":63334.61,"expiry":"26JUN26","basis_abs":48.18,"basis_pct":0.0761,"days_to_expiry":14.26,"annualized_basis_pct":1.95},{"mark":63368.33,"expiry":"3JUL26","basis_abs":81.9,"basis_pct":0.1294,"days_to_expiry":21.26,"annualized_basis_pct":2.22},{"mark":63511.63,"expiry":"31JUL26","basis_abs":225.2,"basis_pct":0.3558,"days_to_expiry":49.26,"annualized_basis_pct":2.64},{"mark":63684.53,"expiry":"28AUG26","basis_abs":398.1,"basis_pct":0.629,"days_to_expiry":77.26,"annualized_basis_pct":2.97},{"mark":63900.37,"expiry":"25SEP26","basis_abs":613.94,"basis_pct":0.9701,"days_to_expiry":105.26,"annualized_basis_pct":3.36},{"mark":64551.96,"expiry":"25DEC26","basis_abs":1265.53,"basis_pct":1.9997,"days_to_expiry":196.26,"annualized_basis_pct":3.72},{"mark":65231.55,"expiry":"26MAR27","basis_abs":1945.12,"basis_pct":3.0735,"days_to_expiry":287.26,"annualized_basis_pct":3.91}],"source":"Deribit","currency":"BTC","perpetual":{"mark":63302.37,"basis_pct":0.0252},"structure":"contango (futures above spot — carry positive)","spot_index":63286.43,"back_annualized_pct":3.91,"front_annualized_pct":34.4},"meta":{"timestamp":"2026-06-12T01:41:10.691Z","request_id":"4853f81b-dbb0-4578-b448-5e1145b2b011"},"status":"ok","message":"Curve 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":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"currency is BTC or ETH. annualized_basis_pct = (future/spot − 1) × 365/days. expiry is a Deribit code (e.g. 26JUN26) from /v1/curve. Read fresh per call, nothing cached.","source":"Deribit public API (deribit.com/api/v2/public, live)","service":"futurescurve-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/basis":"Annualised basis (cash-and-carry yield) for one expiry or the front future (currency=BTC, expiry optional).","GET /v1/curve":"Full futures curve: perp + every dated future with annualised basis, and the contango/backwardation shape (currency=BTC)."},"currencies":["BTC","ETH"],"description":"Crypto futures term structure and basis curve, read live from Deribit's public futures book (no key, nothing stored). curve returns the spot index, the perpetual and every dated future for a currency — each with days to expiry, mark, basis to spot and annualised basis — plus the contango/backwardation shape and the front/back annualised basis. basis returns the annualised basis (cash-and-carry yield) for a chosen expiry or the front future. The futures-curve / term-structure cut — distinct from the spot-versus-perpetual basis API (a single point), the funding-rate, options and price APIs.","upstream_status":"ok","btc_dated_futures":12},"meta":{"timestamp":"2026-06-12T01:41:10.821Z","request_id":"3c35fe6d-a91e-4677-87c1-320cecdd2073"},"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":400,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1232,"monthly_call_quota":10800,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3744,"monthly_call_quota":64000,"rps_limit":16,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":8540,"monthly_call_quota":340000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/futurescurve-api"}