{"openapi":"3.1.0","info":{"title":"Crypto Options Max Pain & Open Interest API","version":"1.0.0","description":"Where the crypto options market is positioned, and the strike toward which an expiry's open interest exerts the most \"pain\" — computed live from Deribit's public option book, no key, nothing stored. Max pain is the strike at which the total value of all open options is lowest at expiry: the price at which the greatest dollar amount of option open interest expires worthless and option writers keep the most premium. Traders watch it because price often gravitates toward max pain into a large expiry. The maxpain endpoint takes a currency (BTC, ETH, SOL, XRP) and an expiry and returns the max-pain strike, the spot/underlying, how far spot sits from max pain, and the call and put open-interest totals with the put/call OI ratio. The oi endpoint returns the full open-interest-by-strike distribution for an expiry — which strikes hold the most open interest, the magnets and walls (support & resistance) traders watch. The expiries endpoint lists every listed expiry with its aggregate open interest, contract count and call/put split. This is the aggregate options-positioning / max-pain analytics cut for crypto — distinct from the raw per-contract option chain (greeks/IV), from US equity options and from the crypto-volatility APIs in the catalogue. Currency is BTC, ETH, SOL or XRP; expiry is a Deribit code like 26JUN26.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/maxpain-api","description":"oanor gateway"}],"tags":[{"name":"Max Pain"},{"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/expiries":{"get":{"operationId":"get_v1_expiries","tags":["Max Pain"],"summary":"Listed expiries with aggregate OI","description":"","parameters":[{"name":"currency","in":"query","required":true,"description":"BTC, ETH, SOL or XRP","schema":{"type":"string"},"example":"BTC"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":12,"source":"Deribit","currency":"BTC","expiries":[{"expiry":"12JUN26","put_oi":14352.1,"call_oi":20873.8,"total_oi":35225.9,"contracts":80},{"expiry":"13JUN26","put_oi":3756.5,"call_oi":1335.8,"total_oi":5092.3,"contracts":48},{"expiry":"14JUN26","put_oi":1190.1,"call_oi":445.5,"total_oi":1635.6,"contracts":46},{"expiry":"15JUN26","put_oi":277.6,"call_oi":501.3,"total_oi":778.9,"contracts":44},{"expiry":"19JUN26","put_oi":9275.2,"call_oi":14128.4,"total_oi":23403.6,"contracts":60},{"expiry":"26JUN26","put_oi":66247.6,"call_oi":85311.1,"total_oi":151558.7,"contracts":132},{"expiry":"3JUL26","put_oi":369.1,"call_oi":246.6,"total_oi":615.7,"contracts":26},{"expiry":"31JUL26","put_oi":12186.5,"call_oi":37361.8,"total_oi":49548.3,"contracts":114},{"expiry":"28AUG26","put_oi":3185.7,"call_oi":5638.2,"total_oi":8823.9,"contracts":98},{"expiry":"25SEP26","put_oi":27774.3,"call_oi":49184,"total_oi":76958.3,"contracts":120},{"expiry":"25DEC26","put_oi":27788,"call_oi":52469.3,"total_oi":80257.3,"contracts":114},{"expiry":"26MAR27","put_oi":6696.2,"call_oi":12465.8,"total_oi":19162,"contracts":102}],"underlying_price":63513.25},"meta":{"timestamp":"2026-06-12T01:41:14.637Z","request_id":"179882e1-7f5b-4ed1-bdd4-64545e5e4d6b"},"status":"ok","message":"Expiries 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/maxpain":{"get":{"operationId":"get_v1_maxpain","tags":["Max Pain"],"summary":"Max-pain strike & put/call OI","description":"","parameters":[{"name":"currency","in":"query","required":true,"description":"BTC, ETH, SOL or XRP","schema":{"type":"string"},"example":"BTC"},{"name":"expiry","in":"query","required":false,"description":"Deribit expiry code (default nearest with OI)","schema":{"type":"string"},"example":"26JUN26"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"max_pain_strike is the listed strike minimising total option-holder payout at settlement; price often drifts toward it into a large expiry. spot_vs_maxpain_pct > 0 means spot is above max pain.","expiry":"26JUN26","put_oi":66247.6,"source":"Deribit","call_oi":85311.1,"currency":"BTC","total_oi":151558.7,"strikes_count":66,"max_pain_strike":74000,"underlying_price":63513.25,"put_call_oi_ratio":0.777,"spot_vs_maxpain_pct":-14.17},"meta":{"timestamp":"2026-06-12T01:41:14.786Z","request_id":"0908c2c1-0422-4e51-a715-46907badde8e"},"status":"ok","message":"Max pain 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/oi":{"get":{"operationId":"get_v1_oi","tags":["Max Pain"],"summary":"Open-interest distribution by strike","description":"","parameters":[{"name":"currency","in":"query","required":true,"description":"BTC, ETH, SOL or XRP","schema":{"type":"string"},"example":"BTC"},{"name":"expiry","in":"query","required":false,"description":"Deribit expiry code","schema":{"type":"string"},"example":"26JUN26"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"open interest by strike for the expiry; the highest-OI strikes act as magnets / walls (support & resistance).","expiry":"26JUN26","source":"Deribit","strikes":66,"currency":"BTC","distribution":[{"put_oi":4610.1,"strike":20000,"call_oi":102.6,"total_oi":4712.7},{"put_oi":3119.7,"strike":30000,"call_oi":81.2,"total_oi":3200.9},{"put_oi":3711.9,"strike":40000,"call_oi":34.2,"total_oi":3746.1},{"put_oi":4278.7,"strike":45000,"call_oi":46.4,"total_oi":4325.1},{"put_oi":3772.4,"strike":50000,"call_oi":373.3,"total_oi":4145.7},{"put_oi":1248.6,"strike":52000,"call_oi":0,"total_oi":1248.6},{"put_oi":3410.6,"strike":55000,"call_oi":237.1,"total_oi":3647.7},{"put_oi":421.1,"strike":57000,"call_oi":0,"total_oi":421.1},{"put_oi":1464.6,"strike":58000,"call_oi":71.1,"total_oi":1535.7},{"put_oi":522.7,"strike":59000,"call_oi":5,"total_oi":527.7},{"put_oi":5076.1,"strike":60000,"call_oi":514.9,"total_oi":5591},{"put_oi":321.5,"strike":61000,"call_oi":262.1,"total_oi":583.6},{"put_oi":2486.6,"strike":62000,"call_oi":240.7,"total_oi":2727.3},{"put_oi":200.7,"strike":63000,"call_oi":292.2,"total_oi":492.9},{"put_oi":1174,"strike":64000,"call_oi":313.7,"total_oi":1487.7},{"put_oi":2815.8,"strike":65000,"call_oi":1800.5,"total_oi":4616.3},{"put_oi":1201.7,"strike":66000,"call_oi":1116.2,"total_oi":2317.9},{"put_oi":1.3,"strike":67000,"call_oi":1271.9,"total_oi":1273.2},{"put_oi":1815,"strike":68000,"call_oi":2355.5,"total_oi":4170.5},{"put_oi":0,"strike":69000,"call_oi":185.6,"total_oi":185.6},{"put_oi":2713,"strike":70000,"call_oi":3534.4,"total_oi":6247.4},{"put_oi":3128,"strike":72000,"call_oi":3134.7,"total_oi":6262.7},{"put_oi":1451.2,"strike":74000,"call_oi":1680.7,"total_oi":3131.9},{"put_oi":2166.7,"strike":75000,"call_oi":3999.6,"total_oi":6166.3},{"put_oi":1727.4,"strike":76000,"call_oi":1594.4,"total_oi":3321.8},{"put_oi":1642,"strike":78000,"call_oi":2694.3,"total_oi":4336.3},{"put_oi":2487.6,"strike":80000,"call_oi":6242.7,"total_oi":8730.3},{"put_oi":204.9,"strike":82000,"call_oi":4400.3,"total_oi":4605.2},{"put_oi":38.5,"strike":84000,"call_oi":1016.4,"total_oi":1054.9},{"put_oi":2850.1,"strike":85000,"call_oi":3804.3,"total_oi":6654.4},{"put_oi":29.9,"strike":86000,"call_oi":1100.2,"total_oi":1130.1},{"put_oi":15.9,"strike":88000,"call_oi":2002.3,"total_oi":2018.2},{"put_oi":1563.9,"strike":90000,"call_oi":5598.2,"total_oi":7162.1},{"put_oi":26.3,"strike":92000,"call_oi":838.9,"total_oi":865.2},{"put_oi":7.7,"strike":94000,"call_oi":244.9,"total_oi":252.6},{"put_oi":969.2,"strike":95000,"call_oi":3824.4,"total_oi":4793.6},{"put_oi":986.9,"strike":100000,"call_oi":3993.8,"total_oi":4980.7},{"put_oi":310.8,"strike":105000,"call_oi":2119.7,"total_oi":2430.5},{"put_oi":928.4,"strike":110000,"call_oi":1294.7,"total_oi":2223.1},{"put_oi":286.9,"strike":115000,"call_oi":2503.4,"total_oi":2790.3},{"put_oi":720.7,"strike":120000,"call_oi":2814.7,"total_oi":3535.4},{"put_oi":74.5,"strike":125000,"call_oi":1952.1,"total_oi":2026.6},{"put_oi":106.4,"strike":130000,"call_oi":1498.5,"total_oi":1604.9},{"put_oi":14.2,"strike":135000,"call_oi":957.1,"total_oi":971.3},{"put_oi":23.1,"strike":140000,"call_oi":778.2,"total_oi":801.3},{"put_oi":4.6,"strike":145000,"call_oi":649.5,"total_oi":654.1},{"put_oi":2.3,"strike":150000,"call_oi":2650.7,"total_oi":2653},{"put_oi":1.8,"strike":155000,"call_oi":264.7,"total_oi":266.5},{"put_oi":52.5,"strike":160000,"call_oi":1222.2,"total_oi":1274.7},{"put_oi":0.5,"strike":165000,"call_oi":176,"total_oi":176.5},{"put_oi":1.9,"strike":170000,"call_oi":759.8,"total_oi":761.7},{"put_oi":37.1,"strike":180000,"call_oi":1180.5,"total_oi":1217.6},{"put_oi":5.8,"strike":190000,"call_oi":554.4,"total_oi":560.2},{"put_oi":6.6,"strike":200000,"call_oi":1024.4,"total_oi":1031},{"put_oi":0,"strike":210000,"call_oi":196.8,"total_oi":196.8},{"put_oi":0.2,"strike":220000,"call_oi":691,"total_oi":691.2},{"put_oi":6.4,"strike":230000,"call_oi":813.7,"total_oi":820.1},{"put_oi":0.1,"strike":240000,"call_oi":556,"total_oi":556.1},{"put_oi":0,"strike":250000,"call_oi":200.1,"total_oi":200.1},{"put_oi":0,"strike":260000,"call_oi":198.4,"total_oi":198.4},{"put_oi":0,"strike":280000,"call_oi":231,"total_oi":231},{"put_oi":0,"strike":300000,"call_oi":308.5,"total_oi":308.5},{"put_oi":0,"strike":320000,"call_oi":135.9,"total_oi":135.9},{"put_oi":0,"strike":340000,"call_oi":129,"total_oi":129},{"put_oi":0.3,"strike":360000,"call_oi":174.2,"total_oi":174.5},{"put_oi":0.2,"strike":380000,"call_oi":267.2,"total_oi":267.4}],"top_oi_strikes":[80000,90000,85000,72000,70000],"underlying_price":63513.25},"meta":{"timestamp":"2026-06-12T01:41:14.935Z","request_id":"d1e23b03-79e9-4b9f-b6fa-9a83f007a2f0"},"status":"ok","message":"Open interest 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, ETH, SOL or XRP. expiry is a Deribit code (e.g. 26JUN26) from /v1/expiries; omit it to use the nearest expiry carrying open interest. Open interest is in contracts. Read fresh per call, nothing cached.","source":"Deribit public API (deribit.com/api/v2/public, live)","service":"maxpain-api","endpoints":{"GET /v1/oi":"Open-interest-by-strike distribution for an expiry (currency=BTC, expiry=26JUN26).","GET /v1/meta":"This document.","GET /v1/maxpain":"Max-pain strike, spot gap and put/call OI for a currency+expiry (currency=BTC, expiry=26JUN26).","GET /v1/expiries":"Listed expiries with aggregate OI, contracts and notional (currency=BTC)."},"currencies":["BTC","ETH","SOL","XRP"],"description":"Crypto options max pain and open-interest positioning, computed live from Deribit's public option book (no key, nothing stored). Max pain is the strike at which the most option open interest expires worthless — price often gravitates toward it into a large expiry. maxpain returns the max-pain strike, spot, the spot-vs-max-pain gap and call/put OI with the put/call ratio for a currency+expiry. oi returns the full open-interest-by-strike distribution (the magnets and walls). expiries lists every listed expiry with aggregate OI, contracts and notional. The aggregate options-positioning analytics cut — distinct from the raw per-contract option chain, equity options and crypto-volatility APIs.","upstream_status":"ok","btc_option_contracts":984},"meta":{"timestamp":"2026-06-12T01:41:15.083Z","request_id":"04d35807-3b18-4ec6-b22c-ccc5a17cfae8"},"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":1166,"monthly_call_quota":9500,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3556,"monthly_call_quota":58000,"rps_limit":16,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":8190,"monthly_call_quota":310000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/maxpain-api"}