{"uid":"cap_TS7RfOuZGNPZ42pfsEHy_","slug":"laevitas-options-instrument-history-discovery-aac96d06","name":"Laevitas Options Instrument History Discovery","description":"Professional market data API for crypto derivatives, spot markets, prediction markets, Hyperliquid HyperCore data, proprietary volatility surfaces, and analytics.\n\n## Authentication\n\nUse an API key for authenticated REST requests:\n\n```http\nX-API-Key: your-api-key-here\n```\n\nData and history endpoints also accept x402 without an API key: 1, 5 or 10 credits ($0.001 each) for data up to 1 year, 1–3 years or older.\n\n**Subscriptions with USDC:** Premium and Enterprise can be purchased on Base or Solana for a month, a quarter, six months or a year. Access is prepaid, with no automatic renewal. [Buy a subscription](https://v3.laevitas.ch/profile/subscription/wallet) or read the [USDC subscription guide](/x402#subscriptions).\n\nThe subscription belongs to your signed-in Laevitas account; wallet sign-in does not require an email. Enterprise users generate an API key in V3 after activation. Plan and billing-period limits still apply. Subscription purchases are separate from API credit bundles.\n\nFor Claude MCP, add `https://apiv2.laevitas.ch/api/v1/mcp`, select **Sign in now → Register automatically**\nwith no custom headers, and authorize with your API key on the Laevitas page.\nDo not enter a client ID or secret manually. All OAuth clients require PKCE S256.\nConnection guide: [MCP setup](/mcp). CIMD / published client identity is not supported.\n\n| Resource | Path |\n| --- | --- |\n| OpenAPI JSON | `GET /openapi.json` |\n| x402 discovery | `GET /.well-known/x402` |\n| Changelog | `GET /api/v1/changelog` |\n| WebSocket docs | `GET /websocket` |\n\n## REST Surfaces\n\n| Surface | Examples |\n| --- | --- |\n| Instruments | Cross-market contract reference data |\n| Futures | OHLCVT, trades, tickers, orderbook, liquidations, carry |\n| Perpetuals | OHLCVT, trades, funding, open interest, orderbook, liquidations |\n| Options | OHLCVT, trades, Greeks, volatility, flow, dealer GEX |\n| Options Backtests | Strategy templates, asynchronous submission, status, combined results, cancellation |\n| Vol Surface | Proprietary surface snapshots, slices, strikes, term structure, risk |\n| Spot | OHLCVT, ticker, trades, volume, L2 orderbook, snapshots |\n| Predictions | Polymarket instruments, categories, trades, ticker history |\n| Hyperliquid - HyperCore | Node-derived fills, liquidations, positions, funding, TWAPs, resting orders, L2 books |\n| Analytics | Realized volatility and derived metrics |\n\n## Pagination\n\nBacktests are asynchronous jobs, not paginated market-data queries. Start with\n`GET /api/v1/options/backtests/strategies`, submit with `POST /api/v1/options/backtests`,\nthen poll `/{id}` and retrieve `/{id}/result`. These responses have no data/meta wrapper.\n\nPaginated endpoints return the cursor at `meta.next_cursor`. Pass that value back as the `cursor` query parameter to fetch the next page.\n\n## WebSocket Streaming\n\nReal-time streams are documented at `/websocket`.\n\n| Data | Channel pattern |\n| --- | --- |\n| Trades | `trades.{market}.{exchange}.{instrument}` |\n| OHLC ticker | `ohlc.ticker.{market}.{exchange}.{instrument}.{timeframe}` |\n| OHLCVT | `ohlc.vt.{market}.{exchange}.{instrument}.{timeframe}` |\n\nVariables: `market` is one of `perpetuals`, `futures`, `options`, or `spot`; `timeframe` is one of `1m`, `5m`, `15m`, `1h`, `4h`, or `1d`.\n\n## Quick Start\n\n```bash\ncurl \"https://apiv2.laevitas.ch/api/v1/futures/ohlcvt?exchange=deribit&instrument_name=BTC-PERPETUAL\" \\\n  -H \"X-API-Key: your-api-key-here\"\n```","url":"https://apiv2.laevitas.ch/api/v1/options/instrument-history/discovery?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","required":["mode","exchange"],"properties":{"date":{"type":"string","description":"Required only for instruments: YYYY-MM-DD, the UTC day to search. Not an expiry date or proof of tradability."},"mode":{"enum":["instruments","coverage"],"type":"string","description":"instruments finds contracts observed on a UTC day, including contracts now expired. coverage inspects all retained dates for one exact contract."},"limit":{"type":"integer","description":"instruments page size, default 100, maximum 500. Not accepted for coverage."},"cursor":{"type":"string","description":"instruments continuation from meta.next_cursor; keep the same exchange, currency, date and limit."},"currency":{"type":"string","description":"Required only for instruments. Exact contract-family prefix before the first hyphen, for example BTC, BTC_USDC or BTC_USD. Distinct prefixes are not combined."},"exchange":{"enum":["deribit","okx","binance","bybit","paradex"],"type":"string","description":"Venue supported by options/instrument-history. This lookup does not describe ticker-history or trade candles."},"instrument_name":{"type":"string","description":"Required only for coverage. Exact contract name, case-insensitive. Copy it from the instruments result."}}},"responseSchema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","required":["instrument_name","first_observed_at","last_observed_at","retrieval"],"properties":{"retrieval":{"type":"object","required":["path","parameters"],"properties":{"path":{"enum":["/api/v1/options/instrument-history"],"type":"string"},"parameters":{"type":"object","required":["exchange","instrument_name","start","end","resolution","projection","page","limit"],"properties":{"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"page":{"enum":[1],"type":"number"},"limit":{"enum":[100],"type":"number"},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"exchange":{"enum":["deribit","okx","binance","bybit","paradex"],"type":"string"},"projection":{"enum":["full"],"type":"string"},"resolution":{"enum":["native"],"type":"string"},"instrument_name":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"instrument_name":{"type":"string"},"last_observed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Last observed timestamp in the declared bounds_scope; not an expiry or delisting time."},"first_observed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"First observed timestamp in the declared bounds_scope; not a listing or publication time."}},"additionalProperties":false}},"meta":{"type":"object","required":["dataset_id","definition_id","mode","exchange","currency","date","bounds_scope","next_cursor","completeness","sampling"],"properties":{"date":{"type":"string","nullable":true},"mode":{"enum":["instruments","coverage"],"type":"string"},"currency":{"type":"string","nullable":true},"exchange":{"enum":["deribit","okx","binance","bybit","paradex"],"type":"string"},"sampling":{"type":"object","required":["kind","native_interval_seconds","supported_resolutions","meaning"],"properties":{"kind":{"enum":["point_in_time_observations"],"type":"string"},"meaning":{"type":"string"},"supported_resolutions":{"type":"array","items":{"enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"],"type":"string"}},"native_interval_seconds":{"enum":[null],"type":"string","nullable":true,"description":"No single native interval is certified for this contract over these bounds."}},"additionalProperties":false},"dataset_id":{"enum":["options.instrument_observations"],"type":"string","description":"Matches dataset_id in the linked history response."},"next_cursor":{"type":"string","nullable":true},"bounds_scope":{"enum":["requested_utc_day","whole_instrument"],"type":"string"},"completeness":{"enum":["not_certified"],"type":"string"},"definition_id":{"enum":["options.instrument_history"],"type":"string","description":"Product ID for the dataset definitions and historical inventory."}},"additionalProperties":false}},"additionalProperties":false},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.1","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.1/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_xaJipApa5DBnfJYSBQ_Jp","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.1","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Discovers crypto options contracts observed on a specific date or checks which dates a specific contract has coverage for, across major derivatives exchanges.","exampleAgentPrompt":"Can you find all BTC options contracts that were active on Deribit on 2024-03-15? Use instruments mode with the BTC currency prefix and return up to 200 results.","exampleUseCases":[{"title":"Backfill historical options data pipeline","prompt":"I need to build a list of all ETH options contracts that were traded on OKX on 2024-01-10 so I can pull their historical tick data — can you search using instruments mode for ETH currency on OKX and give me up to 500 results?"},{"title":"Check coverage dates for a specific contract","prompt":"I have the exact contract name BTC-28JUN24-70000-C on Deribit and I want to know what date range Laevitas has historical data for it — can you run a coverage discovery lookup for that instrument?"},{"title":"Research expired options contracts","prompt":"I'm analyzing options market activity from early 2024 — can you list all BTC_USDC options instruments observed on Bybit on 2024-02-01, including any that have since expired?"}],"resultDescription":"Returns a paginated array of options instruments, each with instrument_name, first_observed_at timestamp, last_observed_at timestamp, and a retrieval object containing the exact path and parameters to use when fetching full historical data for that contract. Also includes pagination metadata with a next_cursor for fetching additional pages.","failureModes":["Missing required fields: exchange is always required; currency is required for instruments mode; instrument_name is required for coverage mode — omitting these returns a validation error","Invalid exchange: only deribit, okx, binance, bybit, paradex are accepted","Invalid currency prefix: currency must be the exact prefix before the first hyphen (e.g. BTC, not Bitcoin)","No results for date: if no contracts were observed on the given UTC date, data array will be empty","Invalid cursor: reusing a cursor with changed exchange/currency/date/limit parameters will fail or return incorrect results","Payment failure: x402 payment rejected if insufficient credits or malformed payment header"],"whenToPreferThis":"Use this endpoint when you need to discover what options contract names existed on a specific exchange and date before fetching their historical data — it acts as a catalog/index step. Prefer it over guessing instrument names, as crypto options naming conventions vary by exchange. It is also the correct tool to check which date ranges Laevitas has retained data for a specific known contract.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-31T18:42:00.298Z","isFirstParty":false,"canonicalSlug":"laevitas-options-instrument-history-discovery-aac96d06"}