{"openapi":"3.0.0","paths":{"/api/v1/x402/ws-pass/hour":{"post":{"description":"Purchase a 1-hour WebSocket streaming entitlement via x402 (USDC on Base mainnet). On success, the wallet is granted a pass slot and an `x-credit-token` JWT is returned that authenticates subsequent WebSocket connections at `/ws` and `/stream`. Buying a pass while one is already active extends the expiry additively.","operationId":"Buy WS Hour Pass","parameters":[],"responses":{"200":{"description":"Pass granted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsPassResponseDto"}}}},"402":{"description":"Payment required (sign and retry with PAYMENT-SIGNATURE)"}},"summary":"Buy a 1-hour WebSocket streaming pass","tags":["x402"]}},"/api/v1/x402/ws-pass/day":{"post":{"description":"Purchase a 24-hour WebSocket streaming entitlement via x402 (USDC on Base mainnet). See `/x402/ws-pass/hour` for the auth flow; the only difference is the duration and the price.","operationId":"Buy WS Day Pass","parameters":[],"responses":{"200":{"description":"Pass granted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsPassResponseDto"}}}},"402":{"description":"Payment required (sign and retry with PAYMENT-SIGNATURE)"}},"summary":"Buy a 24-hour WebSocket streaming pass","tags":["x402"]}},"/api/v1/x402/subscriptions/solana-rpc":{"post":{"operationId":"SubscriptionCommerceController_solanaRpc","parameters":[],"responses":{"201":{"description":""}},"summary":"Read-only USDC mint and blockhash data for browser wallet signing","tags":["x402 subscriptions"]}},"/api/v1/x402/subscriptions/products":{"get":{"description":"Live plan pricing for monthly, quarterly, six-month and annual terms. Pay USDC on Base or Solana. Create an account-bound quote through the authenticated dashboard backend first.","operationId":"SubscriptionCommerceController_products","parameters":[],"responses":{"200":{"description":""}},"summary":"Premium and Enterprise prepaid subscription products","tags":["x402 subscriptions"]}},"/api/v1/x402/subscriptions/checkouts/{id}":{"get":{"operationId":"SubscriptionCommerceController_status","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-checkout-token","required":true,"in":"header","schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["x402 subscriptions"]}},"/api/v1/x402/subscriptions/checkouts/{id}/pay":{"post":{"description":"A request without PAYMENT-SIGNATURE returns an x402 v2 402 quote. Sign one accepted USDC network and retry. Pending or completed checkouts never charge again; poll the status URL after an interrupted response.","operationId":"SubscriptionCommerceController_pay","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-checkout-token","required":true,"in":"header","schema":{"type":"string"}},{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; do not pay again"},"402":{"description":"x402 USDC quote on Base and Solana"}},"summary":"Pay a quoted subscription using x402","tags":["x402 subscriptions"]}},"/api/v1/x402/tick-data/solana-rpc":{"post":{"operationId":"TickDataCommerceController_solanaRpc","parameters":[],"responses":{"201":{"description":""}},"summary":"Read-only USDC mint and blockhash data for browser wallet signing","tags":["x402 tick data"]}},"/api/v1/x402/tick-data/products":{"get":{"description":"Dataset prices depend on files, exchanges and date ranges. Create a quote and account-bound data order before signing a USDC payment. Card checkout remains available.","operationId":"TickDataCommerceController_products","parameters":[],"responses":{"200":{"description":""}},"summary":"Tick-data checkout networks and quote instructions","tags":["x402 tick data"]}},"/api/v1/x402/tick-data/checkouts/{id}":{"get":{"operationId":"TickDataCommerceController_status","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-checkout-token","required":true,"in":"header","schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["x402 tick data"]}},"/api/v1/x402/tick-data/checkouts/{id}/pay":{"post":{"description":"A request without PAYMENT-SIGNATURE returns an x402 v2 402 quote. Sign one accepted USDC network and retry. Pending or completed checkouts never charge again; poll the status URL after an interrupted response.","operationId":"TickDataCommerceController_pay","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-checkout-token","required":true,"in":"header","schema":{"type":"string"}},{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data order funded with payment receipt"},"202":{"description":"Payment confirmation or order fulfillment pending; do not pay again"},"402":{"description":"x402 USDC quote on Base and Solana"}},"summary":"Pay a quoted tick-data order using x402","tags":["x402 tick data"]}},"/api/v1/x402/credit-token/challenge":{"post":{"description":"Step 1 of the credit token refresh for wallets that already hold prepaid credits. Returns a single-use CAIP-122 message (valid 5 minutes) for the wallet to sign. The signature authorizes no payment and cannot move funds. Returns 404 when credit bundles are not enabled.","operationId":"Request Credit Token Challenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenChallengeRequestDto"}}}},"responses":{"200":{"description":"Challenge issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenChallengeResponseDto"}}}},"400":{"description":"Unsupported chain_id or invalid address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}},"404":{"description":"Credit bundles are not enabled"},"429":{"description":"Rate limit exceeded (10 per minute per client)"},"503":{"description":"Challenge store unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}}},"summary":"Get a Sign-In-With-X message to refresh an x402 credit token","tags":["x402"]}},"/api/v1/x402/credit-token":{"post":{"description":"Step 2: send the challenge `info` fields plus `address`, `chainId`, `type` and the wallet `signature` (hex for EVM, base58 for Solana). Proves wallet ownership only: the signature authorizes no payment and no credit is spent. The token is also returned in the `x-credit-token` header, with the balance in `x-credits-remaining`. Returns 404 when credit bundles are not enabled.","operationId":"Refresh Credit Token","parameters":[],"responses":{"200":{"description":"Fresh credit token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenResponseDto"}}}},"400":{"description":"Malformed payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}},"401":{"description":"Proof rejected: invalid_siwx, nonce_invalid, expired or invalid_signature","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}},"402":{"description":"no_credits: the wallet has no prepaid credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}},"404":{"description":"Credit bundles are not enabled"},"429":{"description":"Rate limit exceeded (10 per minute per client)"},"503":{"description":"Challenge store unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTokenErrorDto"}}}}},"summary":"Redeem a signed challenge for a fresh x402 credit token","tags":["x402"]}},"/api/v1/options/catalog":{"get":{"description":"Recently observed, unexpired option instruments, using exchange-published expiry timestamps where available and otherwise latest observed DTE advanced to the request time. Not an all-history instrument catalog. Absence of an expired contract does not establish absence of its history.\n\nCurrent discovery, not a historical listed/open-for-trading timeline.\n\nFilter currency, maturity, option_type and strike range; follow the catalog pagination cursor.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.catalog. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex uses exchange-native symbols such as BTC-USD-30OCT26-81000-C.","schema":{"example":"paradex","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"currency","required":false,"in":"query","description":"Filter by base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity/expiry date (e.g., 16OCT26, 27JUN25)","schema":{"example":"16OCT26","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of instruments to return (1-1000)","schema":{"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from a previous response","schema":{"type":"string"}},{"name":"option_type","required":false,"in":"query","description":"Filter by option type: C (Call) or P (Put)","schema":{"example":"C","type":"string","enum":["C","P"]}},{"name":"strike_min","required":false,"in":"query","description":"Minimum strike price","schema":{"example":50000,"type":"number"}},{"name":"strike_max","required":false,"in":"query","description":"Maximum strike price","schema":{"example":100000,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"example":[{"instrument_name":"AVAX_USDC-22NOV25-12-C","exchange":"deribit"},{"instrument_name":"AVAX_USDC-22NOV25-12-P","exchange":"deribit"},{"instrument_name":"AVAX_USDC-22NOV25-12d4-C","exchange":"deribit"}]}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Catalog","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"paradex","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex uses exchange-native symbols such as BTC-USD-30OCT26-81000-C."},"currency":{"example":"BTC","type":"string","description":"Filter by base currency (e.g., BTC, ETH, SOL)"},"maturity":{"example":"16OCT26","type":"string","description":"Filter by maturity/expiry date (e.g., 16OCT26, 27JUN25)"},"limit":{"default":100,"example":100,"type":"number","description":"Maximum number of instruments to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response"},"option_type":{"example":"C","type":"string","enum":["C","P"],"description":"Filter by option type: C (Call) or P (Put)"},"strike_min":{"example":50000,"type":"number","description":"Minimum strike price"},"strike_max":{"example":100000,"type":"number","description":"Maximum strike price"}}}}}}}},"/api/v1/options/metadata":{"get":{"description":"Returns metadata for a specific options instrument including data availability, total record count, and pagination information.","operationId":"Options Metadata","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name","schema":{"example":"deribit","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page for pagination calculation","schema":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number"}},{"name":"instrument_name","required":true,"in":"query","description":"Instrument name","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"description":"Metadata successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponseEntity"}}}},"400":{"description":"Bad Request - Invalid parameters or no data found","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Metadata","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name"},"limit":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number","description":"Number of records per page for pagination calculation"},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Instrument name"}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/options/ohlcvt":{"get":{"description":"Premium OHLC plus interval trade volume/counts. Trade candles include mark-filled minutes without executions. Coarser OHLC uses first open, maximum high, minimum low and last close. VWAP is traded-volume weighted; a zero-volume bucket uses the mean minute reference price. index_price is the spot index at the final observed candle minute, null when unavailable. No underlying_price or source label is served on this route.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nExchange spot-index price, not the expiry-specific option underlying/forward reference.\n\nCount of retained trades, not ticker updates.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.ohlcvt. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Market Data","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"description":"OHLCVT data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsOhlcvtEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","open":0.2157,"high":0.2157,"low":0.2157,"close":0.2157,"vwap":0.2157,"volume":0,"buy_volume":0,"sell_volume":0,"trades_count":0,"buy_trades_count":0,"sell_trades_count":0,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":0.2157,"index_price":103722.83,"days_to_expiry":324.9166666666667},{"date":"2025-11-04 11:01:00","open":0.2154,"high":0.2154,"low":0.2154,"close":0.2154,"vwap":0.2154,"volume":0,"buy_volume":0,"sell_volume":0,"trades_count":0,"buy_trades_count":0,"sell_trades_count":0,"liquidation_short_volume":120,"liquidation_long_volume":280,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":0.2154,"index_price":103639.67,"days_to_expiry":324.91597222222225},{"date":"2025-11-04 11:02:00","open":0.2156,"high":0.2156,"low":0.2156,"close":0.2156,"vwap":0.2156,"volume":0,"buy_volume":0,"sell_volume":0,"trades_count":0,"buy_trades_count":0,"sell_trades_count":0,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":5000,"block_trade_sell_volume":3500,"mark_price":0.2156,"index_price":103695.66,"days_to_expiry":324.91527777777776}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options OHLC Market Data","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/volume":{"get":{"description":"Combines latest ticker-reported rolling volume_24h/volume_usd_24h with interval buy_volume, sell_volume, volume and trade counts from retained trade/mark candles. The rolling fields are not computed by summing this request window; interval volume is buy_volume + sell_volume.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nUSD rolling 24-hour volume.\n\nNumber of trades in the interval.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.volume. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Volume Stats","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"description":"Successfully retrieved options volume data","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseVolumeDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","volume_24h":1.2,"volume_usd_24h":29521.78},{"date":"2025-11-04 11:01:00","volume_24h":1.2,"volume_usd_24h":29521.78},{"date":"2025-11-04 11:02:00","volume_24h":1.2,"volume_usd_24h":29521.78}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Volume Stats","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/trades/summary":{"get":{"description":"Returns aggregated trade statistics for options grouped by a chosen axis. One compact call replaces scanning individual trades. Returns grouped stats: trade_count, volume, buy/sell_volume, premium_usd, buy/sell_premium_usd, notional, net_oi_change, net_delta/gamma/vega, block_trade_count. Group by: exchange, instrument_name, strike, maturity, option_type, direction, or strategy.","operationId":"Options Trades Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH)","schema":{"example":"BTC","type":"string"}},{"name":"group_by","required":true,"in":"query","description":"Axis to group results by","schema":{"type":"string","enum":["exchange","instrument_name","strike","maturity","option_type","direction","strategy"]}},{"name":"min_premium_usd","required":false,"in":"query","description":"Minimum premium in USD. Filters dust trades.","schema":{"type":"number"}},{"name":"min_notional","required":false,"in":"query","description":"Minimum notional value in USD.","schema":{"type":"number"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only include block trades.","schema":{"default":false,"type":"boolean"}},{"name":"opening_only","required":false,"in":"query","description":"If true, only include opening trades (strategy starts with Opened).","schema":{"default":false,"type":"boolean"}},{"name":"option_type","required":false,"in":"query","description":"Filter by option type: C (call) or P (put)","schema":{"type":"string","enum":["C","P"]}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity date (e.g. 16OCT26)","schema":{"type":"string"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values.","schema":{"type":"string","enum":["BEAR_CALL_SPREAD","BEAR_DIAGONAL_SPREAD (Calls)","BEAR_DIAGONAL_SPREAD (Puts)","BEAR_PUT_SPREAD","BULL_CALL_SPREAD","BULL_DIAGONAL_SPREAD (Calls)","BULL_DIAGONAL_SPREAD (Puts)","BULL_PUT_SPREAD","CALL_CALENDAR","CALL_ROLL_BACK/DOWN","CALL_ROLL_BACK/UP","CALL_ROLL_FORWARD/UP","COLLAR_WITH_FUTURE","COMBO_CALL_BUTTERFLY","COMBO_CALL_CALENDAR","COMBO_CALL_CONDOR","COMBO_CALL_DIAGONAL","COMBO_CALL_LADDER","COMBO_CALL_RATIO_SPREAD_2X3","COMBO_CALL_SPREAD","COMBO_IRON_BUTTERFLY","COMBO_IRON_CONDOR","COMBO_PUT_CALENDAR","COMBO_PUT_CONDOR","COMBO_PUT_DIAGONAL","COMBO_PUT_RATIO_SPREAD_1X2","COMBO_PUT_RATIO_SPREAD_2X3","COMBO_PUT_SPREAD","COMBO_STRADDLE","COMBO_STRADDLE_CALENDAR","COMBO_STRANGLE","COVERED_CALL_WITH_FUTURE","CUSTOM_STRATEGY","Close_CALL/Open_PUT","Close_PUT/Open_CALL","Closed BEAR_DIAGONAL_SPREAD (Calls)","Closed BULL_CALL_SPREAD","Closed BULL_DIAGONAL_SPREAD (Puts)","Closed COMBO_CALL_SPREAD","Closed LONG_CALL","Closed LONG_PUT","Closed SHORT_CALL","Closed SHORT_PUT","Closed SHORT_STRADDLE","HEDGED_OPTIONS_STRATEGY","LONG_CALL","LONG_CALL_BUTTERFLY","LONG_CALL_CONDOR","LONG_IRON_CONDOR","LONG_PUT","LONG_PUT_BUTTERFLY","LONG_RATIO_CALL_SPREAD","LONG_RATIO_PUT_SPREAD","LONG_RISK_REVERSAL","LONG_STRADDLE","LONG_STRANGLE","Opened BEAR_CALL_SPREAD","Opened BEAR_DIAGONAL_SPREAD (Calls)","Opened BEAR_DIAGONAL_SPREAD (Puts)","Opened BEAR_PUT_SPREAD","Opened BULL_CALL_SPREAD","Opened BULL_DIAGONAL_SPREAD (Calls)","Opened BULL_DIAGONAL_SPREAD (Puts)","Opened BULL_PUT_SPREAD","Opened CALL_CALENDAR","Opened COMBO_CALL_CALENDAR","Opened COMBO_CALL_DIAGONAL","Opened COMBO_CALL_SPREAD","Opened COMBO_IRON_CONDOR","Opened COMBO_PUT_DIAGONAL","Opened COMBO_PUT_RATIO_SPREAD_1X2","Opened COMBO_PUT_SPREAD","Opened COMBO_STRADDLE","Opened COMBO_STRANGLE","Opened CUSTOM_STRATEGY","Opened HEDGED_OPTIONS_STRATEGY","Opened LONG_CALL","Opened LONG_CALL_LADDER","Opened LONG_IRON_CONDOR","Opened LONG_PUT","Opened LONG_PUT_BUTTERFLY","Opened LONG_RATIO_CALL_SPREAD","Opened LONG_RATIO_PUT_SPREAD","Opened LONG_RISK_REVERSAL","Opened LONG_STRADDLE","Opened LONG_STRANGLE","Opened PROTECTIVE_PUT_WITH_FUTURE","Opened PUT_CALENDAR","Opened REVERSE_PUT_CALENDAR","Opened SHORT_CALL","Opened SHORT_CALL_BUTTERFLY","Opened SHORT_COVERED_CALL_WITH_FUTURE","Opened SHORT_PROTECTIVE_PUT_WITH_FUTURE","Opened SHORT_PUT","Opened SHORT_RATIO_CALL_SPREAD","Opened SHORT_STRADDLE","Opened SHORT_STRANGLE","PROTECTIVE_PUT_WITH_FUTURE","PUT_CALENDAR","PUT_ROLL_BACK/DOWN","PUT_ROLL_BACK/UP","PUT_ROLL_FORWARD/DOWN","REVERSE_CALL_CALENDAR","REVERSE_PUT_CALENDAR","ROLL_BACK","ROLL_FORWARD","ROLL_UP","SHORT_CALL","SHORT_CALL_BUTTERFLY","SHORT_CALL_CONDOR","SHORT_COLLAR_WITH_FUTURE","SHORT_COVERED_CALL_WITH_FUTURE","SHORT_IRON_CONDOR","SHORT_PUT","SHORT_PUT_BUTTERFLY","SHORT_RATIO_CALL_SPREAD","SHORT_RATIO_PUT_SPREAD","SHORT_RISK_REVERSAL","SHORT_STRADDLE","SHORT_STRANGLE"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"group_key":"100000","trade_count":85,"volume":500.2,"buy_volume":300.1,"sell_volume":200.1,"premium_usd":1250000,"buy_premium_usd":750000,"sell_premium_usd":500000,"notional":47500000,"net_oi_change":120.5,"net_delta":45.2,"net_gamma":0.003,"net_vega":12500,"block_trade_count":3}],"metadata":{"group_by":"strike","total_trades":85,"total_volume":500.2}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Trades Summary","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH)"},"group_by":{"type":"string","enum":["exchange","instrument_name","strike","maturity","option_type","direction","strategy"],"description":"Axis to group results by"},"min_premium_usd":{"type":"number","description":"Minimum premium in USD. Filters dust trades."},"min_notional":{"type":"number","description":"Minimum notional value in USD."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction"},"block_only":{"default":false,"type":"boolean","description":"If true, only include block trades."},"opening_only":{"default":false,"type":"boolean","description":"If true, only include opening trades (strategy starts with Opened)."},"option_type":{"type":"string","enum":["C","P"],"description":"Filter by option type: C (call) or P (put)"},"maturity":{"type":"string","description":"Filter by maturity date (e.g. 16OCT26)"},"strategy":{"type":"string","description":"Filter by strategy label. Accepts comma-separated values."}},"required":["exchange","currency","group_by"]}}}}}},"/api/v1/options/trades":{"get":{"description":"Individual retained executed-trade records with trade_id, price, amount and direction, plus available enrichments. Not mark-filled bars. Quote/Greek enrichments are not themselves executions or a synchronized full-order-book replay. Supports instrument or currency selection; follow next_cursor unless using top_n.\n\nStored trade event timestamp, not Laevitas ingestion or publication time.\n\nInclusive event-time start/end bounds; use the returned cursor to paginate without losing same-timestamp trades.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.trades. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nReturns options trades with full trade details and Greeks. Supports two modes: (1) instrument mode — provide instrument_name for a single option, (2) currency mode — provide currency (e.g. BTC) for ALL options trades across all instruments. Optional settlement_currency and margin_type filters separate inverse and linear contract books. Additional filters: min_premium_usd, min_notional, direction, strategy, block_only, opening_only, option_type, maturity, sort, sort_dir.","operationId":"Options Trade History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to DESC for currency-level queries (newest/largest first), ASC for instrument-level queries.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full options instrument identifier (e.g., BTC-9OCT26-90000-C). Either instrument_name or currency is required.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL instruments for this currency. Either currency or instrument_name is required.","schema":{"example":"BTC","type":"string"}},{"name":"settlement_currency","required":false,"in":"query","description":"Settlement-currency filter (for example BTC for inverse Deribit options or USDC for linear Deribit options). Requires exchange.","schema":{"example":"BTC","type":"string"}},{"name":"margin_type","required":false,"in":"query","description":"Contract margin convention. Use inverse or linear to keep differently quoted option books separate.","schema":{"example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"min_premium_usd","required":false,"in":"query","description":"Minimum premium in USD. Filters out dust trades.","schema":{"example":1000,"type":"number"}},{"name":"min_notional","required":false,"in":"query","description":"Minimum notional value in USD.","schema":{"example":10000,"type":"number"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction (aggressor side)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values (e.g. SHORT_CALL,LONG_PUT).","schema":{"type":"string","enum":["BEAR_CALL_SPREAD","BEAR_DIAGONAL_SPREAD (Calls)","BEAR_DIAGONAL_SPREAD (Puts)","BEAR_PUT_SPREAD","BULL_CALL_SPREAD","BULL_DIAGONAL_SPREAD (Calls)","BULL_DIAGONAL_SPREAD (Puts)","BULL_PUT_SPREAD","CALL_CALENDAR","CALL_ROLL_BACK/DOWN","CALL_ROLL_BACK/UP","CALL_ROLL_FORWARD/UP","COLLAR_WITH_FUTURE","COMBO_CALL_BUTTERFLY","COMBO_CALL_CALENDAR","COMBO_CALL_CONDOR","COMBO_CALL_DIAGONAL","COMBO_CALL_LADDER","COMBO_CALL_RATIO_SPREAD_2X3","COMBO_CALL_SPREAD","COMBO_IRON_BUTTERFLY","COMBO_IRON_CONDOR","COMBO_PUT_CALENDAR","COMBO_PUT_CONDOR","COMBO_PUT_DIAGONAL","COMBO_PUT_RATIO_SPREAD_1X2","COMBO_PUT_RATIO_SPREAD_2X3","COMBO_PUT_SPREAD","COMBO_STRADDLE","COMBO_STRADDLE_CALENDAR","COMBO_STRANGLE","COVERED_CALL_WITH_FUTURE","CUSTOM_STRATEGY","Close_CALL/Open_PUT","Close_PUT/Open_CALL","Closed BEAR_DIAGONAL_SPREAD (Calls)","Closed BULL_CALL_SPREAD","Closed BULL_DIAGONAL_SPREAD (Puts)","Closed COMBO_CALL_SPREAD","Closed LONG_CALL","Closed LONG_PUT","Closed SHORT_CALL","Closed SHORT_PUT","Closed SHORT_STRADDLE","HEDGED_OPTIONS_STRATEGY","LONG_CALL","LONG_CALL_BUTTERFLY","LONG_CALL_CONDOR","LONG_IRON_CONDOR","LONG_PUT","LONG_PUT_BUTTERFLY","LONG_RATIO_CALL_SPREAD","LONG_RATIO_PUT_SPREAD","LONG_RISK_REVERSAL","LONG_STRADDLE","LONG_STRANGLE","Opened BEAR_CALL_SPREAD","Opened BEAR_DIAGONAL_SPREAD (Calls)","Opened BEAR_DIAGONAL_SPREAD (Puts)","Opened BEAR_PUT_SPREAD","Opened BULL_CALL_SPREAD","Opened BULL_DIAGONAL_SPREAD (Calls)","Opened BULL_DIAGONAL_SPREAD (Puts)","Opened BULL_PUT_SPREAD","Opened CALL_CALENDAR","Opened COMBO_CALL_CALENDAR","Opened COMBO_CALL_DIAGONAL","Opened COMBO_CALL_SPREAD","Opened COMBO_IRON_CONDOR","Opened COMBO_PUT_DIAGONAL","Opened COMBO_PUT_RATIO_SPREAD_1X2","Opened COMBO_PUT_SPREAD","Opened COMBO_STRADDLE","Opened COMBO_STRANGLE","Opened CUSTOM_STRATEGY","Opened HEDGED_OPTIONS_STRATEGY","Opened LONG_CALL","Opened LONG_CALL_LADDER","Opened LONG_IRON_CONDOR","Opened LONG_PUT","Opened LONG_PUT_BUTTERFLY","Opened LONG_RATIO_CALL_SPREAD","Opened LONG_RATIO_PUT_SPREAD","Opened LONG_RISK_REVERSAL","Opened LONG_STRADDLE","Opened LONG_STRANGLE","Opened PROTECTIVE_PUT_WITH_FUTURE","Opened PUT_CALENDAR","Opened REVERSE_PUT_CALENDAR","Opened SHORT_CALL","Opened SHORT_CALL_BUTTERFLY","Opened SHORT_COVERED_CALL_WITH_FUTURE","Opened SHORT_PROTECTIVE_PUT_WITH_FUTURE","Opened SHORT_PUT","Opened SHORT_RATIO_CALL_SPREAD","Opened SHORT_STRADDLE","Opened SHORT_STRANGLE","PROTECTIVE_PUT_WITH_FUTURE","PUT_CALENDAR","PUT_ROLL_BACK/DOWN","PUT_ROLL_BACK/UP","PUT_ROLL_FORWARD/DOWN","REVERSE_CALL_CALENDAR","REVERSE_PUT_CALENDAR","ROLL_BACK","ROLL_FORWARD","ROLL_UP","SHORT_CALL","SHORT_CALL_BUTTERFLY","SHORT_CALL_CONDOR","SHORT_COLLAR_WITH_FUTURE","SHORT_COVERED_CALL_WITH_FUTURE","SHORT_IRON_CONDOR","SHORT_PUT","SHORT_PUT_BUTTERFLY","SHORT_RATIO_CALL_SPREAD","SHORT_RATIO_PUT_SPREAD","SHORT_RISK_REVERSAL","SHORT_STRADDLE","SHORT_STRANGLE"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only return trades with a block_trade_id (block trades).","schema":{"default":false,"type":"boolean"}},{"name":"opening_only","required":false,"in":"query","description":"If true, only return trades where strategy starts with \"Opened\" (new positions).","schema":{"default":false,"type":"boolean"}},{"name":"option_type","required":false,"in":"query","description":"Filter by option type: C (call) or P (put)","schema":{"type":"string","enum":["C","P"]}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity date (e.g. 16OCT26)","schema":{"example":"16OCT26","type":"string"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","premium_usd","notional","amount"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsTradeEntity"}}}}]},"example":{"data":[{"instrument_name":"BTC-25SEP26-100000-C","timestamp":1759220633312,"trade_id":"387076415","date":"2025-10-11 12:45:49","block_trade_id":"","combo_id":"","combo_trade_id":"","strategy":"Opened SHORT_CALL","direction":"sell","tick_direction":1,"amount":0.1,"price":0.267,"index_price":113610.41,"oi_change":0.1,"open_interest":0.1,"oi_before":null,"maturity":"25SEP26","days_to_expiry":359.9834,"iv":44.95,"mark_price":0.2669,"ask_price":0.269,"bid_price":0.267,"ask_size":2.8,"bid_size":9.7,"bid_iv_change":0,"ask_iv_change":0,"bid_price_change":-0.002,"ask_price_change":0,"bid_size_change":0,"ask_size_change":0,"premium":0.0267,"premium_usd":3033.4,"notional":11361.04,"delta":-0.0694643,"gamma":-6.9e-7,"vega":-39.54125,"theta":2.468719,"strike":100000,"option_type":"C"},{"instrument_name":"BTC-25SEP26-100000-C","timestamp":1760189549998,"date":"2025-10-11 12:45:49","trade_id":"390187993","block_trade_id":"","combo_id":"","combo_trade_id":"","strategy":"Opened SHORT_CALL","direction":"sell","tick_direction":2,"amount":0.1,"price":0.261,"index_price":112021.37,"oi_change":0.1,"open_interest":0.2,"oi_before":0.1,"maturity":"25SEP26","days_to_expiry":348.7691,"iv":46.9,"mark_price":0.2604,"ask_price":0.2675,"bid_price":0.261,"ask_size":27.1,"bid_size":18.1,"bid_iv_change":0,"ask_iv_change":0,"bid_price_change":-0.0035,"ask_price_change":0,"bid_size_change":0,"ask_size_change":0,"premium":0.0261,"premium_usd":2923.76,"notional":11202.14,"delta":-0.0683262,"gamma":-7e-7,"vega":-38.99059,"theta":2.621582,"strike":100000,"option_type":"C"},{"instrument_name":"BTC-25SEP26-100000-C","timestamp":1760461299893,"trade_id":"391006860","date":"2025-10-11 12:45:49","block_trade_id":"","combo_id":"","combo_trade_id":"","strategy":"Opened SHORT_CALL","direction":"sell","tick_direction":2,"amount":0.1,"price":0.2595,"index_price":111949.78,"oi_change":0.1,"open_interest":0.3,"oi_before":0.2,"maturity":"25SEP26","days_to_expiry":345.6238,"iv":47.14,"mark_price":0.2587,"ask_price":0.261,"bid_price":0.2595,"ask_size":2.2,"bid_size":2.2,"bid_iv_change":0,"ask_iv_change":0,"bid_price_change":-0.0035,"ask_price_change":0,"bid_size_change":0,"ask_size_change":0,"premium":0.026,"premium_usd":2905.1,"notional":11194.98,"delta":-0.0682762,"gamma":-7e-7,"vega":-38.81525,"theta":2.647056,"strike":100000,"option_type":"C"}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3NjM0Mzk0NTc1NTksInRyYWRlX2lkIjoiMzk4OTU3NDk3In0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Trade History","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to DESC for currency-level queries (newest/largest first), ASC for instrument-level queries."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Full options instrument identifier (e.g., BTC-9OCT26-90000-C). Either instrument_name or currency is required."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL instruments for this currency. Either currency or instrument_name is required."},"settlement_currency":{"example":"BTC","type":"string","description":"Settlement-currency filter (for example BTC for inverse Deribit options or USDC for linear Deribit options). Requires exchange."},"margin_type":{"example":"inverse","type":"string","enum":["inverse","linear"],"description":"Contract margin convention. Use inverse or linear to keep differently quoted option books separate."},"min_premium_usd":{"example":1000,"type":"number","description":"Minimum premium in USD. Filters out dust trades."},"min_notional":{"example":10000,"type":"number","description":"Minimum notional value in USD."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction (aggressor side)"},"strategy":{"example":"","type":"string","description":"Filter by strategy label. Accepts comma-separated values (e.g. SHORT_CALL,LONG_PUT)."},"block_only":{"default":false,"type":"boolean","description":"If true, only return trades with a block_trade_id (block trades)."},"opening_only":{"default":false,"type":"boolean","description":"If true, only return trades where strategy starts with \"Opened\" (new positions)."},"option_type":{"type":"string","enum":["C","P"],"description":"Filter by option type: C (call) or P (put)"},"maturity":{"example":"16OCT26","type":"string","description":"Filter by maturity date (e.g. 16OCT26)"},"sort":{"default":"timestamp","type":"string","enum":["timestamp","premium_usd","notional","amount"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/options/flow":{"get":{"description":"Returns an aggregated flow summary for a currency including total trades, premium breakdowns (call/put, buy/sell), net Greeks (delta, gamma, vega), opening/closing counts, block trade stats, most active strikes, and notable trades. One call returns everything pre-computed.","operationId":"Options Flow Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH). Required.","schema":{"example":"BTC","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time bucket resolution for aggregation.","schema":{"default":"1h","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"min_premium_usd","required":false,"in":"query","description":"Minimum premium_usd per trade to include in aggregation. Filters dust before aggregating.","schema":{"example":1000,"type":"number"}},{"name":"top_n","required":false,"in":"query","description":"Number of notable trades to return (most_active_strikes always returns top 10). Default 10.","schema":{"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"Flow summary successfully retrieved","content":{"application/json":{"schema":{"properties":{"summary":{"$ref":"#/components/schemas/OptionsFlowSummaryEntity"},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/OptionsFlowBucketEntity"}},"notable_trades":{"type":"array","items":{"$ref":"#/components/schemas/OptionsTradeEntity"}}}},"example":{"summary":{"start":"2026-03-11T10:00:00.000Z","end":"2026-03-18T10:00:00.000Z","resolution":"1h","total_trades":17473,"total_premium_usd":313090175.66,"total_notional_usd":10663319458.94,"call_premium_usd":178403755.18,"put_premium_usd":134686420.48,"buy_premium_usd":166205839.48,"sell_premium_usd":146884336.18,"net_delta":2409.04,"net_gamma":0.24,"net_vega":413362.73,"opening_trades":3144,"closing_trades":887,"net_oi_change":46885.23,"block_trade_count":1223,"block_trade_premium_usd":190954915.46,"most_active_strikes":[{"instrument_name":"BTC-25SEP26-70000-C","trade_count":78,"premium_usd":14778377.67,"net_oi_change":913.8},{"instrument_name":"BTC-25SEP26-70000-P","trade_count":27,"premium_usd":8580802.91,"net_oi_change":862.4},{"instrument_name":"BTC-26JUN26-95000-P","trade_count":3,"premium_usd":8027375.24,"net_oi_change":0}]},"buckets":[{"date":"2026-03-11T10:00:00.000Z","trade_count":142,"buy_count":78,"sell_count":64,"total_amount":1250.5,"buy_amount":680.2,"sell_amount":570.3,"total_premium_usd":2450312.45,"buy_premium_usd":1320150.22,"sell_premium_usd":1130162.23,"total_notional":85230100.5,"buy_notional":46120050.3,"sell_notional":39110050.2,"call_premium_usd":1420180.3,"put_premium_usd":1030132.15,"call_count":82,"put_count":60,"block_trade_count":8,"block_premium_usd":1520200.4,"net_oi_change":320.5,"avg_iv":52.34,"avg_abs_delta":0.45},{"date":"2026-03-11T11:00:00.000Z","trade_count":98,"buy_count":52,"sell_count":46,"total_amount":890.3,"buy_amount":470.1,"sell_amount":420.2,"total_premium_usd":1780245.12,"buy_premium_usd":950130.45,"sell_premium_usd":830114.67,"total_notional":62150080.3,"buy_notional":33080040.1,"sell_notional":29070040.2,"call_premium_usd":1020140.2,"put_premium_usd":760104.92,"call_count":55,"put_count":43,"block_trade_count":5,"block_premium_usd":980130.2,"net_oi_change":180.2,"avg_iv":51.87,"avg_abs_delta":0.43}],"notable_trades":[{"instrument_name":"BTC-26JUN26-95000-P","timestamp":1773269099057,"trade_id":"412345678","block_trade_id":"BLK-12345","combo_id":"","strategy":"Opened LONG_PUT","date":"2026-03-11 14:30:00","currency":"BTC","maturity":"26JUN26","days_to_expiry":107.4,"strike":95000,"option_type":"P","direction":"buy","amount":50,"price":0.0312,"iv":58.2,"index_price":84500.12,"mark_price":0.031,"premium_usd":8027375.24,"notional":4225006,"delta":-0.3512,"gamma":0.000008,"vega":142.35,"theta":-18.42,"oi_change":50,"open_interest":250}]}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Flow Summary","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Required."},"resolution":{"default":"1h","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time bucket resolution for aggregation."},"min_premium_usd":{"example":1000,"type":"number","description":"Minimum premium_usd per trade to include in aggregation. Filters dust before aggregating."},"top_n":{"default":10,"example":10,"type":"number","description":"Number of notable trades to return (most_active_strikes always returns top 10). Default 10."}},"required":["exchange","currency"]}}}}}},"/api/v1/options/open-interest":{"get":{"description":"Instrument oi_open, oi_high, oi_low and oi_close across the interval. Outstanding position quantity, not traded volume or the sum of minute OI.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.open_interest. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Open Interest","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseOpenInterestEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","oi_open":2.6,"oi_high":2.6,"oi_low":2.6,"oi_close":2.6},{"date":"2025-11-04 11:01:00","oi_open":2.6,"oi_high":2.6,"oi_low":2.6,"oi_close":2.6},{"date":"2025-11-04 11:02:00","oi_open":2.6,"oi_high":2.6,"oi_low":2.6,"oi_close":2.6}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Open Interest","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/level1":{"get":{"description":"Best bid/ask price and displayed-size OHLC, size/spread averages and related L1 summaries from minute ticker buckets. Not full book depth, order IDs, queue priority or an executable quote-update replay. Historical displayed size does not guarantee a fill.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.level1. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Level 1","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","bid_price_open":0.212,"bid_price_high":0.212,"bid_price_low":0.2115,"bid_price_close":0.2115,"ask_price_open":0.2195,"ask_price_high":0.22,"ask_price_low":0.2195,"ask_price_close":0.22,"bid_size_open":19.3,"bid_size_high":19.3,"bid_size_low":19.3,"bid_size_close":19.3,"ask_size_open":19.4,"ask_size_high":31.3,"ask_size_low":12,"ask_size_close":31.3,"bid_ask_spread_open":0.007500000000000007,"bid_ask_spread_high":0.008500000000000008,"bid_ask_spread_low":0.007500000000000007,"bid_ask_spread_close":0.008500000000000008,"total_liquidity_open":38.7,"total_liquidity_high":50.6,"total_liquidity_low":31.3,"total_liquidity_close":50.6,"total_liquidity_avg":43.16666666666667},{"date":"2025-11-04 11:01:00","bid_price_open":0.2115,"bid_price_high":0.2115,"bid_price_low":0.2115,"bid_price_close":0.2115,"ask_price_open":0.22,"ask_price_high":0.22,"ask_price_low":0.22,"ask_price_close":0.22,"bid_size_open":19.3,"bid_size_high":19.3,"bid_size_low":19.3,"bid_size_close":19.3,"ask_size_open":31.3,"ask_size_high":31.3,"ask_size_low":31.3,"ask_size_close":31.3,"bid_ask_spread_open":0.008500000000000008,"bid_ask_spread_high":0.008500000000000008,"bid_ask_spread_low":0.008500000000000008,"bid_ask_spread_close":0.008500000000000008,"total_liquidity_open":50.6,"total_liquidity_high":50.6,"total_liquidity_low":50.6,"total_liquidity_close":50.6,"total_liquidity_avg":50.600000000000016},{"date":"2025-11-04 11:02:00","bid_price_open":0.211,"bid_price_high":0.214,"bid_price_low":0.211,"bid_price_close":0.214,"ask_price_open":0.22,"ask_price_high":0.22,"ask_price_low":0.219,"ask_price_close":0.219,"bid_size_open":19.3,"bid_size_high":19.3,"bid_size_low":0.3,"bid_size_close":0.3,"ask_size_open":31.3,"ask_size_high":31.3,"ask_size_low":19.3,"ask_size_close":19.6,"bid_ask_spread_open":0.009000000000000008,"bid_ask_spread_high":0.009000000000000008,"bid_ask_spread_low":0.0050000000000000044,"bid_ask_spread_close":0.0050000000000000044,"total_liquidity_open":50.6,"total_liquidity_high":50.6,"total_liquidity_low":19.6,"total_liquidity_close":19.900000000000002,"total_liquidity_avg":26.576190476190483}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Level 1","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/volatility":{"get":{"description":"Instrument-level mark/bid/ask IV OHLC and IV-spread statistics, with latest retained Greeks. Not a constant-maturity fitted surface or the retained /options/volatility-history analytics family. Averages summarize stored minute values, not time-weighted raw events.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nImplied volatility in percentage points: 65 means 65%, not 0.65.\n\nAsk IV minus bid IV, in volatility percentage points.\n\nRetained venue conventions; no universal cross-venue theta/vega/rho rescaling is applied.\n\nOption underlying pricing reference, potentially expiry-specific. Distinct from the spot index; missing references are unavailable, not substituted with each other.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.volatility. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Volatility & Greeks","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsVolatilityDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","strike":100000,"maturity":"25SEP26","days_to_expiry":324.9166666666667,"underlying_price":109227.13,"mark_iv_open":47.62,"mark_iv_high":47.62,"mark_iv_low":47.62,"mark_iv_close":47.62,"bid_iv_open":46.42,"bid_iv_high":46.53,"bid_iv_low":46.36,"bid_iv_close":46.4,"ask_iv_open":48.6,"ask_iv_high":48.89,"ask_iv_low":48.57,"ask_iv_close":48.87,"iv_spread_open":2.1799999999999997,"iv_spread_high":2.47,"iv_spread_low":2.17,"iv_spread_close":2.469999999999999,"iv_spread_avg":2.3077777777777784,"delta":0.66315,"gamma":0.00001,"theta":-27.57357,"vega":376.24963,"rho":435.06539},{"date":"2025-11-04 11:01:00","strike":100000,"maturity":"25SEP26","days_to_expiry":324.91597222222225,"underlying_price":109138.04,"mark_iv_open":47.62,"mark_iv_high":47.62,"mark_iv_low":47.62,"mark_iv_close":47.62,"bid_iv_open":46.45,"bid_iv_high":46.51,"bid_iv_low":46.39,"bid_iv_close":46.51,"ask_iv_open":48.92,"ask_iv_high":48.98,"ask_iv_low":48.86,"ask_iv_close":48.98,"iv_spread_open":2.469999999999999,"iv_spread_high":2.47,"iv_spread_low":2.46,"iv_spread_close":2.469999999999999,"iv_spread_avg":2.4662499999999987,"delta":0.66249,"gamma":0.00001,"theta":-27.57106,"vega":376.22951,"rho":434.42588},{"date":"2025-11-04 11:02:00","strike":100000,"maturity":"25SEP26","days_to_expiry":324.91527777777776,"underlying_price":109194.74,"mark_iv_open":47.62,"mark_iv_high":47.62,"mark_iv_low":47.62,"mark_iv_close":47.62,"bid_iv_open":46.51,"bid_iv_high":47.17,"bid_iv_low":46.24,"bid_iv_close":47.17,"ask_iv_open":48.97,"ask_iv_high":48.97,"ask_iv_low":48.54,"ask_iv_close":48.62,"iv_spread_open":2.460000000000001,"iv_spread_high":2.47,"iv_spread_low":1.45,"iv_spread_close":1.4499999999999957,"iv_spread_avg":1.8576190476190468,"delta":0.66291,"gamma":0.00001,"theta":-27.57346,"vega":376.24168,"rho":434.82764}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjQwOjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Volatility & Greeks","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/ticker-history":{"get":{"description":"One final observed ticker state per requested interval: premiums, best bid/ask and displayed sizes, oi, IV and rolling volume_usd_24h. All state fields come from the selected final minute row, including its nulls. Not OHLC, not a sum of OI or rolling volume; no Greeks or underlying_price in this response. Empty intervals are not filled by this reader.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nImplied volatility in percentage points: 65 means 65%, not 0.65.\n\nExchange spot-index price, not the expiry-specific option underlying/forward reference.\n\nLatest rolling 24-hour USD volume state, not volume traded during the requested interval.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.ticker_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Ticker History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsTickerDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price":0.2157,"index_price":103722.83,"bid_price":0.2115,"ask_price":0.22,"bid_ask_spread":0.008500000000000008,"bid_size":19.3,"ask_size":31.3,"oi":2.6,"volume_usd_24h":29521.78,"bid_iv":46.4,"ask_iv":48.87,"mark_iv":47.62,"iv_spread":2.469999999999999},{"date":"2025-11-04 11:01:00","mark_price":0.2154,"index_price":103639.67,"bid_price":0.2115,"ask_price":0.22,"bid_ask_spread":0.008500000000000008,"bid_size":19.3,"ask_size":31.3,"oi":2.6,"volume_usd_24h":29521.78,"bid_iv":46.51,"ask_iv":48.98,"mark_iv":47.62,"iv_spread":2.469999999999999},{"date":"2025-11-04 11:02:00","mark_price":0.2156,"index_price":103695.66,"bid_price":0.214,"ask_price":0.219,"bid_ask_spread":0.0050000000000000044,"bid_size":0.3,"ask_size":19.6,"oi":2.6,"volume_usd_24h":29521.78,"bid_iv":47.17,"ask_iv":48.62,"mark_iv":47.62,"iv_spread":1.4499999999999957}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Ticker History","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/reference-price":{"get":{"description":"Mark-price OHLC, plus the final observed index_price and underlying_price references. The references are scalar final values, not index-price OHLC. They are selected together from the same source minute/revision. For mark-IV OHLC use /options/volatility.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nExchange spot-index price, not the expiry-specific option underlying/forward reference.\n\nOption underlying pricing reference, potentially expiry-specific. Distinct from the spot index; missing references are unavailable, not substituted with each other.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.reference_price. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Reference Prices","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"instrument_name","required":false,"in":"query","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes.","schema":{"example":"BTC-9OCT26-90000-C","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsRefDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price_open":0.2162,"mark_price_high":0.2162,"mark_price_low":0.2156,"mark_price_close":0.2157,"underlying_price":109227.13,"days_to_expiry":324.9166666666667,"index_price":103722.83},{"date":"2025-11-04 11:01:00","mark_price_open":0.2156,"mark_price_high":0.2157,"mark_price_low":0.2154,"mark_price_close":0.2154,"underlying_price":109138.04,"days_to_expiry":324.91597222222225,"index_price":103639.67},{"date":"2025-11-04 11:02:00","mark_price_open":0.2153,"mark_price_high":0.2158,"mark_price_low":0.2153,"mark_price_close":0.2156,"underlying_price":109194.74,"days_to_expiry":324.91527777777776,"index_price":103695.66}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Reference Prices","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange. Paradex prices are USD-quoted, settled in USDC; discover exact symbols in /options/catalog."},"instrument_name":{"example":"BTC-9OCT26-90000-C","type":"string","description":"Exact instrument from /options/catalog (e.g., Deribit BTC-9OCT26-90000-C; Paradex BTC-USD-30OCT26-81000-C). Do not use the legacy underscore symbol on modern routes."}}}}}}}},"/api/v1/options/snapshot":{"get":{"description":"Cross-instrument chain of retained ticker states and joined premium-candle fields for one exchange/currency. IV is percentage points; open interest is named oi. This response does not include Greeks or underlying_price. Select settlement_currency/margin_type to distinguish inverse and linear books.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nAt 1m, date must match a retained minute exactly; there is no nearest-minute fallback. Omitted date selects the latest matching minute. At coarser REST resolutions, date selects the whole containing bucket, including observations AFTER date; it is not an as-of cutoff. REST returns matching chain rows without an instrument limit.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nImplied volatility in percentage points: 65 means 65%, not 0.65.\n\nExchange spot-index price, not the expiry-specific option underlying/forward reference.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.snapshot. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Options Snapshot","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required.","schema":{"example":"deribit","type":"string"}},{"name":"date","required":false,"in":"query","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for latest matching snapshot.","schema":{"format":"date-time","example":"2025-11-01T15:09:00Z","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g., BTC, ETH). Required for options due to large dataset size.","schema":{"example":"BTC","type":"string"}},{"name":"settlement_currency","required":false,"in":"query","description":"Settlement-currency filter for the option chain (for example BTC for inverse Deribit options or USDC for linear Deribit options). Prevents differently settled books from being combined.","schema":{"example":"BTC","type":"string"}},{"name":"margin_type","required":false,"in":"query","description":"Contract margin convention. Use inverse or linear to select one options book.","schema":{"example":"inverse","type":"string","enum":["inverse","linear"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"BTC-9OCT26-90000-C","currency":"BTC","mark_price":0.2157,"index_price":103722.83,"bid_price":0.2115,"ask_price":0.22,"bid_ask_spread":0.0085,"bid_size":19.3,"ask_size":31.3,"oi":2.6,"volume_usd_24h":29521.78,"bid_iv":46.4,"ask_iv":48.87,"mark_iv":47.62,"iv_spread":2.47},{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"BTC-9OCT26-90000-C","currency":"BTC","mark_price":0.0542,"index_price":103722.83,"bid_price":0.053,"ask_price":0.0555,"bid_ask_spread":0.0025,"bid_size":10.1,"ask_size":15.4,"oi":5.2,"volume_usd_24h":12340.5,"bid_iv":52.1,"ask_iv":54.3,"mark_iv":53.15,"iv_spread":2.2}],"meta":{"minute":"2025-11-04 11:00:00"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Snapshot","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required."},"date":{"format":"date-time","example":"2025-11-01T15:09:00Z","type":"string","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for latest matching snapshot."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH). Required for options due to large dataset size."},"settlement_currency":{"example":"BTC","type":"string","description":"Settlement-currency filter for the option chain (for example BTC for inverse Deribit options or USDC for linear Deribit options). Prevents differently settled books from being combined."},"margin_type":{"example":"inverse","type":"string","enum":["inverse","linear"],"description":"Contract margin convention. Use inverse or linear to select one options book."}},"required":["exchange","currency"]}}}}}},"/api/v1/options/gex/catalog":{"get":{"description":"Lists currencies and venues with dealer GEX data, including history depth and latest aggregate state.","operationId":"Options GEX Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of currency/venue rows to return.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"description":"Dealer GEX catalog successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexCatalogEntity"}},"meta":{"$ref":"#/components/schemas/PaginationMetaEntity"}}}]},"example":{"data":[{"currency":"BTC","exchange":"deribit","market":0,"first_date":"2025-10-04T00:00:00.000Z","latest_date":"2026-06-15T10:06:00.000Z","row_count":318224,"spot":65651.87,"total_gex":-4542768.08,"net_long_gex":19984373.25,"net_short_gex":-24527141.33,"regime":"neutral"}],"meta":{"next_cursor":null}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Dealer GEX Catalog","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of currency/venue rows to return."}}}}}}}},"/api/v1/options/gex/latest":{"get":{"description":"Returns the latest aggregate dealer gamma exposure snapshot. Snapshots are emitted every 60 seconds; freshness is reported in meta.snapshot_time, meta.snapshot_interval_ms, meta.staleness_ms, and meta.warnings.","operationId":"Options GEX Latest","parameters":[{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Return the latest snapshot at or before this UTC datetime. Defaults to the latest available snapshot.","schema":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of currency/venue rows to return.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"description":"Latest dealer GEX successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexIndexEntity"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true},"snapshot_time":{"type":"string","nullable":true,"example":"2026-06-15 10:06:00"},"snapshot_time_iso":{"type":"string","nullable":true,"example":"2026-06-15T10:06:00.000Z"},"snapshot_interval_ms":{"type":"number","example":60000},"freshness_basis":{"type":"string","enum":["snapshot"]},"staleness_ms":{"type":"number","nullable":true},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}]},"example":{"data":[{"date":"2026-06-15T10:06:00.000Z","currency":"BTC","exchange":"deribit","market":0,"spot":65651.87,"total_gex":-4542768.08,"net_long_gex":19984373.25,"net_short_gex":-24527141.33,"regime":"neutral"}],"meta":{"next_cursor":null,"snapshot_time":"2026-06-15 10:06:00","snapshot_time_iso":"2026-06-15T10:06:00.000Z","snapshot_interval_ms":60000,"freshness_basis":"snapshot","staleness_ms":42000}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Latest Options Dealer GEX","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"date":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string","description":"Return the latest snapshot at or before this UTC datetime. Defaults to the latest available snapshot."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of currency/venue rows to return."}}}}}}}},"/api/v1/options/gex/history":{"get":{"description":"Returns aggregate dealer GEX history for one currency/venue. Supports 1m, 5m, 15m, 1h, 4h, and 1d bucketing with cursor pagination via meta.next_cursor.","operationId":"Options GEX History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}}],"responses":{"200":{"description":"Dealer GEX history successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexIndexEntity"}},"meta":{"$ref":"#/components/schemas/PaginationMetaEntity"}}}]},"example":{"data":[{"date":"2026-06-15T10:00:00.000Z","currency":"BTC","exchange":"deribit","market":0,"spot":65590.12,"total_gex":-4120000,"net_long_gex":20100000,"net_short_gex":-24220000,"regime":"neutral"}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA2LTE1IDEwOjAwOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Historical Options Dealer GEX","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."}}}}}}}},"/api/v1/options/gex/regime-changes":{"get":{"description":"Returns aggregate dealer-regime transitions for one currency/venue. Use this to detect flips between positive, negative, and neutral dealer-gamma regimes.","operationId":"Options GEX Regime Changes","parameters":[{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). Defaults to 7 days ago.","schema":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Defaults to now.","schema":{"format":"date-time","example":"2026-06-15T00:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of regime changes to return.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from meta.next_cursor.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by transition time.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"Dealer GEX regime changes successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexRegimeChangeEntity"}},"meta":{"$ref":"#/components/schemas/PaginationMetaEntity"}}}]},"example":{"data":[{"date":"2026-06-15T09:18:00.000Z","currency":"BTC","exchange":"deribit","market":0,"spot":65380.22,"total_gex":125000,"net_long_gex":21400000,"net_short_gex":-21275000,"previous_regime":"negative","regime":"neutral"}],"meta":{"next_cursor":null}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Dealer GEX Regime Changes","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"start":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string","description":"Start date in ISO 8601 format (UTC). Defaults to 7 days ago."},"end":{"format":"date-time","example":"2026-06-15T00:00:00Z","type":"string","description":"End date in ISO 8601 format (UTC). Defaults to now."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of regime changes to return."},"cursor":{"type":"string","description":"Pagination cursor from meta.next_cursor."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by transition time."}}}}}}}},"/api/v1/options/gex/strikes":{"get":{"description":"Returns strike-level dealer GEX contributions. Legacy contribution fields are raw/unweighted; weighted_contribution fields use the dealer-model weighting and reconcile with aggregate total_gex when summed across per-expiry rows. Latest mode returns the most recent persisted detail snapshot; history mode is enabled by start, end, or cursor. When expiry is omitted, aggregate all_expiries rows are returned by default; set include_expiries=true for per-expiry rows.","operationId":"Options GEX Strike Contributions","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot.","schema":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string"}},{"name":"expiry","required":false,"in":"query","description":"Expiry code to filter, e.g. '27JUN26'. Use 'all_expiries' for the aggregate strike view.","schema":{"example":"all_expiries","type":"string"}},{"name":"include_expiries","required":false,"in":"query","description":"Include per-expiry rows when expiry is omitted. Defaults to false, which returns aggregate all_expiries rows only.","schema":{"default":false,"type":"boolean"}},{"name":"strike_min","required":false,"in":"query","description":"Minimum numeric strike to return.","schema":{"example":50000,"type":"number"}},{"name":"strike_max","required":false,"in":"query","description":"Maximum numeric strike to return.","schema":{"example":90000,"type":"number"}},{"name":"contribution_basis","required":false,"in":"query","description":"Contribution basis used by min_abs_contribution. weighted reconciles with aggregate total_gex; raw preserves unweighted decomposition.","schema":{"default":"weighted","example":"weighted","type":"string","enum":["weighted","raw"]}},{"name":"min_abs_contribution","required":false,"in":"query","description":"Minimum absolute GEX contribution on contribution_basis. Defaults to weighted contribution, which reconciles with aggregate total_gex.","schema":{"example":10000,"type":"number"}}],"responses":{"200":{"description":"Dealer GEX strike contributions successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexStrikeContributionEntity"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true},"snapshot_time":{"type":"string","nullable":true,"example":"2026-06-15 10:06:00"},"snapshot_time_iso":{"type":"string","nullable":true,"example":"2026-06-15T10:06:00.000Z"},"snapshot_interval_ms":{"type":"number","example":60000},"freshness_basis":{"type":"string","enum":["snapshot"]},"staleness_ms":{"type":"number","nullable":true},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}]},"example":{"data":[{"date":"2026-06-15T10:06:00.000Z","currency":"BTC","exchange":"deribit","market":0,"spot":65651.87,"total_gex":-4542768.08,"expiry":"all_expiries","is_aggregate":true,"strike_label":"65000","strike":65000,"contribution":-1500000,"pos_contribution":200000,"neg_contribution":-1700000,"raw_contribution":-1500000,"raw_pos_contribution":200000,"raw_neg_contribution":-1700000,"weighted_contribution":-1297350,"weighted_pos_contribution":172980,"weighted_neg_contribution":-1470330,"moneyness_weight":0.93,"expiry_weight":0}],"meta":{"next_cursor":null,"snapshot_time":"2026-06-15 10:06:00","snapshot_time_iso":"2026-06-15T10:06:00.000Z","snapshot_interval_ms":60000,"freshness_basis":"snapshot","staleness_ms":42000}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Dealer GEX Strike Contributions","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"date":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot."},"expiry":{"example":"all_expiries","type":"string","description":"Expiry code to filter, e.g. '27JUN26'. Use 'all_expiries' for the aggregate strike view."},"include_expiries":{"default":false,"type":"boolean","description":"Include per-expiry rows when expiry is omitted. Defaults to false, which returns aggregate all_expiries rows only."},"strike_min":{"example":50000,"type":"number","description":"Minimum numeric strike to return."},"strike_max":{"example":90000,"type":"number","description":"Maximum numeric strike to return."},"contribution_basis":{"default":"weighted","example":"weighted","type":"string","enum":["weighted","raw"],"description":"Contribution basis used by min_abs_contribution. weighted reconciles with aggregate total_gex; raw preserves unweighted decomposition."},"min_abs_contribution":{"example":10000,"type":"number","description":"Minimum absolute GEX contribution on contribution_basis. Defaults to weighted contribution, which reconciles with aggregate total_gex."}}}}}}}},"/api/v1/options/gex/term-structure":{"get":{"description":"Returns per-expiry dealer GEX term structure. Legacy total_gex/net_long_gex/net_short_gex fields are raw/unweighted; weighted_total_gex fields reconcile with snapshot_total_gex. Latest mode returns one snapshot; history mode is enabled by start, end, or cursor.","operationId":"Options GEX Term Structure","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot.","schema":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string"}},{"name":"expiry","required":false,"in":"query","description":"Expiry code to filter, e.g. '27JUN26'. Omit to return all expiries.","schema":{"example":"27JUN26","type":"string"}}],"responses":{"200":{"description":"Dealer GEX term structure successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexTermStructureEntity"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true},"snapshot_time":{"type":"string","nullable":true,"example":"2026-06-15 10:06:00"},"snapshot_time_iso":{"type":"string","nullable":true,"example":"2026-06-15T10:06:00.000Z"},"snapshot_interval_ms":{"type":"number","example":60000},"freshness_basis":{"type":"string","enum":["snapshot"]},"staleness_ms":{"type":"number","nullable":true},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}]},"example":{"data":[{"date":"2026-06-15T10:06:00.000Z","currency":"BTC","exchange":"deribit","market":0,"expiry":"27JUN26","total_gex":-2100000,"net_long_gex":5500000,"net_short_gex":-7600000,"raw_total_gex":-2100000,"raw_net_long_gex":5500000,"raw_net_short_gex":-7600000,"weighted_total_gex":-1816290,"weighted_net_long_gex":4755300,"weighted_net_short_gex":-6571590,"strike_count":43,"spot":65651.87,"snapshot_total_gex":-4542768.08}],"meta":{"next_cursor":null,"snapshot_time":"2026-06-15 10:06:00","snapshot_time_iso":"2026-06-15T10:06:00.000Z","snapshot_interval_ms":60000,"freshness_basis":"snapshot","staleness_ms":42000}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Dealer GEX Term Structure","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"date":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot."},"expiry":{"example":"27JUN26","type":"string","description":"Expiry code to filter, e.g. '27JUN26'. Omit to return all expiries."}}}}}}}},"/api/v1/options/gex/profile":{"get":{"description":"Returns interpolated dealer GEX profile points. Legacy gex is the raw interpolated profile; weighted_gex is interpolated from dealer-model weighted contributions. Defaults to profile_group=all_expiries and supports per-expiry profile groups, strike filters, latest mode, and paginated history mode.","operationId":"Options GEX Profile","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Options venue. Dealer GEX is currently backed by Deribit options.","schema":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"]}},{"name":"currency","required":false,"in":"query","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot.","schema":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string"}},{"name":"profile_group","required":false,"in":"query","description":"Profile group to return. Defaults to 'all_expiries'; pass an expiry code for a per-expiry profile.","schema":{"default":"all_expiries","example":"all_expiries","type":"string"}},{"name":"strike_min","required":false,"in":"query","description":"Minimum numeric strike to return.","schema":{"example":50000,"type":"number"}},{"name":"strike_max","required":false,"in":"query","description":"Maximum numeric strike to return.","schema":{"example":90000,"type":"number"}}],"responses":{"200":{"description":"Dealer GEX profile successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionsGexProfileEntity"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true},"snapshot_time":{"type":"string","nullable":true,"example":"2026-06-15 10:06:00"},"snapshot_time_iso":{"type":"string","nullable":true,"example":"2026-06-15T10:06:00.000Z"},"snapshot_interval_ms":{"type":"number","example":60000},"freshness_basis":{"type":"string","enum":["snapshot"]},"staleness_ms":{"type":"number","nullable":true},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}]},"example":{"data":[{"date":"2026-06-15T10:06:00.000Z","currency":"BTC","exchange":"deribit","market":0,"spot":65651.87,"total_gex":-4542768.08,"profile_group":"all_expiries","strike_label":"65000","strike":65000,"gex":-1200000,"raw_gex":-1200000,"weighted_gex":-1037880,"min_strike":40000,"max_strike":90000,"interpolator":"pchip"}],"meta":{"next_cursor":null,"snapshot_time":"2026-06-15 10:06:00","snapshot_time_iso":"2026-06-15T10:06:00.000Z","snapshot_interval_ms":60000,"freshness_basis":"snapshot","staleness_ms":42000}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Options Dealer GEX Profile","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"default":"deribit","example":"deribit","type":"string","enum":["deribit"],"description":"Options venue. Dealer GEX is currently backed by Deribit options."},"currency":{"example":"BTC","type":"string","description":"Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC."},"date":{"format":"date-time","example":"2026-06-15T10:00:00Z","type":"string","description":"Return the latest detail snapshot at or before this UTC datetime. When omitted and no start/end/cursor is supplied, returns the latest available snapshot."},"profile_group":{"default":"all_expiries","example":"all_expiries","type":"string","description":"Profile group to return. Defaults to 'all_expiries'; pass an expiry code for a per-expiry profile."},"strike_min":{"example":50000,"type":"number","description":"Minimum numeric strike to return."},"strike_max":{"example":90000,"type":"number","description":"Maximum numeric strike to return."}}}}}}}},"/api/v1/perpetuals/catalog":{"get":{"description":"Perpetual instruments with ticker observations dated the current UTC day, so the list can briefly omit instruments just after 00:00 UTC. Includes macro perpetuals (filter with asset_class and sub_exchange). Not an all-history inventory: delisted instruments remain requestable by name on the data routes.\n\nCurrent discovery, not a historical listed/open-for-trading timeline.\n\nFilter exchange, currency, asset_class and sub_exchange; follow next_cursor. total counts the whole matching list.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.catalog. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Filter by base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity/expiry date (e.g., 28MAR25, 27JUN25)","schema":{"example":"28MAR25","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of instruments to return (1-1000)","schema":{"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from a previous response","schema":{"type":"string"}},{"name":"asset_class","required":false,"in":"query","description":"Filter by asset class. Defaults to all classes. Use \"equity\"/\"commodity\"/\"forex\"/\"index\" to scope to non-crypto perps (NVDA/TSLA equity perps, GOLD/OIL commodity perps, EURUSD FX perps, etc.). Discover available instruments via /api/v1/macro/catalog.","schema":{"example":"equity","type":"string","enum":["crypto","equity","commodity","forex","index"]}},{"name":"sub_exchange","required":false,"in":"query","description":"Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.","schema":{"example":"xyz","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":[{"instrument_name":"0G-USDT-SWAP","exchange":"okx"},{"instrument_name":"0GUSDT","exchange":"binance"},{"instrument_name":"1000000BOBUSDT","exchange":"binance"}]}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Catalog","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)"},"currency":{"example":"BTC","type":"string","description":"Filter by base currency (e.g., BTC, ETH, SOL)"},"maturity":{"example":"28MAR25","type":"string","description":"Filter by maturity/expiry date (e.g., 28MAR25, 27JUN25)"},"limit":{"default":100,"example":100,"type":"number","description":"Maximum number of instruments to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response"},"asset_class":{"example":"equity","type":"string","enum":["crypto","equity","commodity","forex","index"],"description":"Filter by asset class. Defaults to all classes. Use \"equity\"/\"commodity\"/\"forex\"/\"index\" to scope to non-crypto perps (NVDA/TSLA equity perps, GOLD/OIL commodity perps, EURUSD FX perps, etc.). Discover available instruments via /api/v1/macro/catalog."},"sub_exchange":{"example":"xyz","type":"string","description":"Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges."}}}}}}}},"/api/v1/perpetuals/metadata":{"get":{"description":"Returns metadata for a specific perpetual instrument including data availability, total record count, and pagination information.","operationId":"Perpetuals Metadata","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name","schema":{"example":"deribit","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page for pagination calculation","schema":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number"}},{"name":"instrument_name","required":true,"in":"query","description":"Instrument name","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"description":"Metadata successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponseEntity"}}}},"400":{"description":"Bad Request - Invalid parameters or no data found","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Metadata","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name"},"limit":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number","description":"Number of records per page for pagination calculation"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Instrument name"}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/perpetuals/ohlcvt":{"get":{"description":"Trade-price OHLC plus interval buy/sell volume, trade counts, liquidation and block-trade volume per UTC bucket. Minutes without executions are synthetic mark-filled candles (OHLC = mark price, trades_count = 0); a price is not evidence of an execution. Coarser OHLC uses first open, maximum high, minimum low and last close; VWAP is traded-volume weighted, and a zero-volume bucket uses the mean minute reference price. mark_price and index_price are final-minute values, not OHLC. liquidation_short_volume is forced buying (shorts liquidated); liquidation_long_volume is forced selling (longs liquidated).\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCount of retained trades in the bucket; 0 marks a synthetic mark-filled candle.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.ohlcvt. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals OHLCVT Market Data","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"description":"OHLCVT data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PerpetualsOhlcvtEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","open":103796,"high":103820,"low":103658.5,"close":103673,"vwap":103699.66571160624,"volume":6184600,"buy_volume":1253540,"sell_volume":4931060,"trades_count":419,"buy_trades_count":54,"sell_trades_count":365,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":103690.42,"index_price":103715.64},{"date":"2025-11-04 11:01:00","open":103673,"high":103721,"low":103620.5,"close":103620.5,"vwap":103672.90218204964,"volume":2230930,"buy_volume":325270,"sell_volume":1905660,"trades_count":204,"buy_trades_count":35,"sell_trades_count":169,"liquidation_short_volume":15430,"liquidation_long_volume":28950,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":103619.18,"index_price":103641.58},{"date":"2025-11-04 11:02:00","open":103610,"high":103745,"low":103610,"close":103672.5,"vwap":103706.1497721229,"volume":3613790,"buy_volume":1379460,"sell_volume":2234330,"trades_count":231,"buy_trades_count":70,"sell_trades_count":161,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":250000,"block_trade_sell_volume":180000,"mark_price":103662.33,"index_price":103686.53}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals OHLCVT Market Data","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/level1":{"get":{"description":"Best bid/ask price OHLC, displayed bid/ask size OHLC, bid_ask_spread OHLC and total_liquidity (bid size + ask size) OHLC plus average per bucket. Only minutes with at least one quote update contribute; buckets without them are absent, not zero-filled. No size or spread averages are returned. Top of book only: not depth, order IDs, queue position or an executable quote replay.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.level1. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Level 1","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseBookEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","bid_price_open":103795.5,"bid_price_high":103819.5,"bid_price_low":103658.5,"bid_price_close":103673,"ask_price_open":103796,"ask_price_high":103820,"ask_price_low":103666,"ask_price_close":103673.5,"bid_size_open":141100,"bid_size_high":315370,"bid_size_low":20,"bid_size_close":175500,"ask_size_open":160120,"ask_size_high":859690,"ask_size_low":20,"ask_size_close":199550,"bid_ask_spread_open":0.5,"bid_ask_spread_high":34.5,"bid_ask_spread_low":0.5,"bid_ask_spread_close":0.5,"total_liquidity_open":244470,"total_liquidity_high":870680,"total_liquidity_low":140,"total_liquidity_close":375050,"total_liquidity_avg":346298.3168859649},{"date":"2025-11-04 11:01:00","bid_price_open":103673,"bid_price_high":103726,"bid_price_low":103609.5,"bid_price_close":103609.5,"ask_price_open":103673.5,"ask_price_high":103726.5,"ask_price_low":103610,"ask_price_close":103610,"bid_size_open":173630,"bid_size_high":429090,"bid_size_low":140,"bid_size_close":208530,"ask_size_open":175750,"ask_size_high":824410,"ask_size_low":40,"ask_size_close":176980,"bid_ask_spread_open":0.5,"bid_ask_spread_high":39.5,"bid_ask_spread_low":0.5,"bid_ask_spread_close":0.5,"total_liquidity_open":260070,"total_liquidity_high":1014770,"total_liquidity_low":13470,"total_liquidity_close":385510,"total_liquidity_avg":441197.5935828877},{"date":"2025-11-04 11:02:00","bid_price_open":103609.5,"bid_price_high":103744.5,"bid_price_low":103609.5,"bid_price_close":103655,"ask_price_open":103610,"ask_price_high":103745,"ask_price_low":103610,"ask_price_close":103655.5,"bid_size_open":182250,"bid_size_high":581540,"bid_size_low":20,"bid_size_close":133120,"ask_size_open":196980,"ask_size_high":565090,"ask_size_low":20,"ask_size_close":320250,"bid_ask_spread_open":0.5,"bid_ask_spread_high":32,"bid_ask_spread_low":0.5,"bid_ask_spread_close":0.5,"total_liquidity_open":461780,"total_liquidity_high":768070,"total_liquidity_low":1820,"total_liquidity_close":453370,"total_liquidity_avg":317816.1932938856}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Level 1","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/orderbook":{"get":{"description":"Aggregated L2 depth per bucket: bid/ask liquidity (summed displayed size over the top 10, 20, 50 and 100 levels) and imbalance at each depth as open/high/low/close/avg, microprice open/high/low/close/avg, and snapshot_count (book snapshots, summed across minutes). Imbalance runs from -1 (ask-heavy) to +1 (bid-heavy). microprice is documented as the top-of-book size-weighted mid (bid × ask_size + ask × bid_size) / (bid_size + ask_size); the formula is not re-verified against samples. Coarser averages are unweighted means of minute averages.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.orderbook. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals L2 Orderbook","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"description":"L2 orderbook data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseL2OrderbookEntity"}}}}]},"example":{"data":[{"date":"2026-01-22 07:20:00","exchange":"bybit","instrument_name":"BTCUSDT","currency":"BTC","bid_liq_10_open":0.301,"bid_liq_10_high":0.55,"bid_liq_10_low":0.15,"bid_liq_10_close":0.42,"bid_liq_10_avg":0.35,"bid_liq_20_open":0.359,"bid_liq_20_high":0.8,"bid_liq_20_low":0.2,"bid_liq_20_close":0.5,"bid_liq_20_avg":0.45,"bid_liq_50_open":7.831,"bid_liq_50_high":10.5,"bid_liq_50_low":5.2,"bid_liq_50_close":8.1,"bid_liq_50_avg":7.5,"bid_liq_100_open":12.891,"bid_liq_100_high":18,"bid_liq_100_low":9,"bid_liq_100_close":14.5,"bid_liq_100_avg":13.2,"ask_liq_10_open":5.375,"ask_liq_10_high":6.2,"ask_liq_10_low":4.1,"ask_liq_10_close":5.1,"ask_liq_10_avg":5,"ask_liq_20_open":6.398,"ask_liq_20_high":8,"ask_liq_20_low":4.5,"ask_liq_20_close":6,"ask_liq_20_avg":5.8,"ask_liq_50_open":18.966,"ask_liq_50_high":22,"ask_liq_50_low":15,"ask_liq_50_close":19.5,"ask_liq_50_avg":18.2,"ask_liq_100_open":40.834,"ask_liq_100_high":50,"ask_liq_100_low":30,"ask_liq_100_close":42,"ask_liq_100_avg":39.5,"imbalance_10_open":-0.894,"imbalance_10_high":-0.5,"imbalance_10_low":-0.95,"imbalance_10_close":-0.82,"imbalance_10_avg":-0.78,"imbalance_20_open":-0.894,"imbalance_20_high":-0.5,"imbalance_20_low":-0.95,"imbalance_20_close":-0.82,"imbalance_20_avg":-0.78,"imbalance_50_open":-0.416,"imbalance_50_high":-0.1,"imbalance_50_low":-0.6,"imbalance_50_close":-0.35,"imbalance_50_avg":-0.38,"imbalance_100_open":-0.52,"imbalance_100_high":-0.2,"imbalance_100_low":-0.7,"imbalance_100_close":-0.45,"imbalance_100_avg":-0.48,"microprice_open":89967.9,"microprice_high":89975,"microprice_low":89960,"microprice_close":89970.5,"microprice_avg":89968.2,"snapshot_count":60}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTAxLTIyIDA3OjIxOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals L2 Orderbook","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/orderbook-raw":{"get":{"description":"Individual retained L2 book snapshots, kept for a rolling 30 days: up to 100 bid and ask levels as {price, size} (best first), depth, pre-computed liquidity and imbalance at depths 10/20/50/100, microprice, margin_type and multiplier (null when not recorded). Not aggregated. Pages are keyset-ordered by (timestamp, exchange, instrument_name), so snapshots sharing a millisecond are not skipped.\n\nSnapshot event time in timestamp; date is the same instant truncated to whole seconds (.000Z). Order by timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.orderbook_raw. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals L2 Orderbook Raw","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.","schema":{"example":"BTC-PERPETUAL","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.","schema":{"example":"BTC","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction (aggressor side)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only return trades with a block_trade_id (block trades).","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades.","schema":{"example":1,"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).","schema":{"type":"string","enum":["COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","Closed COMBO_MULTI_LEG_1","Closed COMBO_PERP_VS_FUTURE_UNWIND","Closed LONG_PERP","Closed SHORT_PERP","LONG_PERP","Opened COMBO_MULTI_LEG_1","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_PERP","Opened SHORT_PERP","SHORT_PERP"]}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"description":"Raw L2 orderbook snapshots successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseL2OrderbookRawEntity"}}}}]},"example":{"data":[{"timestamp":1769066457868,"date":"2026-01-22T07:20:57.000Z","exchange":"bybit","instrument_name":"BTCUSDT","currency":"BTC","margin_type":"linear","multiplier":1,"depth":100,"bids":[{"price":89967.9,"size":0.169},{"price":89967.8,"size":0.002}],"asks":[{"price":89968,"size":3.085},{"price":89968.2,"size":0.002}],"bid_liquidity_10":0.301,"ask_liquidity_10":5.375,"bid_liquidity_20":0.359,"ask_liquidity_20":6.398,"bid_liquidity_50":7.831,"ask_liquidity_50":18.966,"bid_liquidity_100":12.891,"ask_liquidity_100":40.834,"imbalance_10":-0.894,"imbalance_20":-0.894,"imbalance_50":-0.416,"imbalance_100":-0.52,"microprice":89967.905}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3NjkwNjY0NTc4Njh9"}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals L2 Orderbook Raw Snapshots","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction (aggressor side)"},"block_only":{"default":false,"type":"boolean","description":"If true, only return trades with a block_trade_id (block trades)."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades."},"strategy":{"example":"calendar_spread","type":"string","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread)."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/perpetuals/volume":{"get":{"description":"Per bucket for one instrument: the latest venue-reported rolling volume_24h and volume_usd_24h from the final ticker minute, plus interval buy_volume, sell_volume, volume (= buy + sell) and trade counts summed from trade candles. Buckets come from ticker data: a bucket without a ticker row is absent even if it had trades. instrument_name is required; currency selection is not supported.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nvolume_24h is the venue-reported rolling 24-hour volume in base coin (verified on Deribit inverse); volume_usd_24h is the rolling 24-hour volume in USD. Both are latest rolling states, not sums over the requested interval.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.volume. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Volume Stats","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"description":"Successfully retrieved perpetuals volume data","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseVolumeDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","volume_24h":13306.97626536,"volume_usd_24h":1408049640},{"date":"2025-11-04 11:01:00","volume_24h":13325.84296037,"volume_usd_24h":1409996050},{"date":"2025-11-04 11:02:00","volume_24h":13359.76934158,"volume_usd_24h":1413511150}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Volume Stats","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/trades/summary":{"get":{"description":"Aggregates retained raw perpetual trades (rolling 30 days) of one exchange and base currency over [start, end], grouped by exchange, instrument_name, direction or strategy: trade_count, volume, buy/sell volume, net_oi_change, block-trade count/volume, avg_price and vwap, plus metadata totals (group_by, total_trades, total_volume). Filters: direction, block_only, min_amount, strategy.\n\nWindow aggregate over trade event times in [start, end]; result rows carry no bucket timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Omitted end is the request time. exchange and currency are required.\n\nvolume, buy_volume, sell_volume and block_trade_volume sum trade amount, and net_oi_change sums trade-level oi_change, in venue-native units added across instruments (e.g. Deribit inverse USD with linear base-coin amounts); not comparable across margin types.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified. avg_price is an unweighted mean of trade prices; vwap is amount-weighted.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.trades_summary. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Trades Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH)","schema":{"example":"BTC","type":"string"}},{"name":"group_by","required":true,"in":"query","description":"Axis to group results by","schema":{"type":"string","enum":["exchange","instrument_name","direction","strategy"]}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only include block trades.","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit.","schema":{"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values.","schema":{"type":"string","enum":["COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","Closed COMBO_MULTI_LEG_1","Closed COMBO_PERP_VS_FUTURE_UNWIND","Closed LONG_PERP","Closed SHORT_PERP","LONG_PERP","Opened COMBO_MULTI_LEG_1","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_PERP","Opened SHORT_PERP","SHORT_PERP"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"group_key":"BTC-PERPETUAL","trade_count":5000,"volume":12345.6,"buy_volume":6500.3,"sell_volume":5845.3,"net_oi_change":450.2,"block_trade_count":12,"block_trade_volume":800,"avg_price":95000,"vwap":95050}],"metadata":{"group_by":"instrument_name","total_trades":5000,"total_volume":12345.6}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Trades Summary","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH)"},"group_by":{"type":"string","enum":["exchange","instrument_name","direction","strategy"],"description":"Axis to group results by"},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction"},"block_only":{"default":false,"type":"boolean","description":"If true, only include block trades."},"min_amount":{"type":"number","description":"Minimum trade amount in the venue-native trade amount unit."},"strategy":{"type":"string","description":"Filter by strategy label. Accepts comma-separated values."}},"required":["exchange","currency","group_by"]}}}}}},"/api/v1/perpetuals/flow":{"get":{"description":"One summary of retained raw trades (rolling 30 days) for one exchange and base currency over [start, end]: total_trades, total/buy/sell volume (sum of amount), net_oi_change, block-trade count/volume, avg_price (unweighted) and vwap (amount-weighted); most_active_instruments (top_n by summed amount) and notable_trades (top_n largest by amount, which compares units across instruments); plus liquidation stats for the same exchange, currency and window (counts and USD totals by long/short side, largest) with notable_liquidations (largest by amount_usd). min_amount filters trades only. Venues without a liquidation feed (e.g. Deribit) report zero liquidation stats.\n\nWindow aggregate over trade event times in [start, end]; result rows carry no bucket timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Omitted end is the request time. exchange and currency are required.\n\nvolume, buy_volume, sell_volume and block_trade_volume sum trade amount, and net_oi_change sums trade-level oi_change, in venue-native units added across instruments (e.g. Deribit inverse USD with linear base-coin amounts); not comparable across margin types.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified. avg_price is an unweighted mean of trade prices; vwap is amount-weighted.\n\nLiquidation totals are USD sums of amount_usd.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.flow. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Flow Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH). Required.","schema":{"example":"BTC","type":"string"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount (venue-native trade amount unit) per trade to include. Applies to trades only (summary, most-active instruments, notable trades); liquidation stats are not size-filtered.","schema":{"example":1,"type":"number"}},{"name":"top_n","required":false,"in":"query","description":"Number of notable trades and most active instruments to return. Default 10.","schema":{"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"Flow summary successfully retrieved","content":{"application/json":{"example":{"summary":{"total_trades":5000,"total_volume":12345.6,"buy_volume":6500.3,"sell_volume":5845.3,"net_oi_change":450.2,"block_trade_count":12,"block_trade_volume":800,"avg_price":95000,"vwap":95050,"most_active_instruments":[{"instrument_name":"BTC-PERPETUAL","trade_count":3000,"volume":8000,"net_oi_change":200}],"liquidation_count":120,"long_liquidation_count":75,"short_liquidation_count":45,"total_liquidation_usd":8500000,"long_liquidation_usd":5500000,"short_liquidation_usd":3000000,"largest_liquidation_usd":500000},"notable_trades":[],"notable_liquidations":[]}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Flow Summary","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Required."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount (venue-native trade amount unit) per trade to include. Applies to trades only (summary, most-active instruments, notable trades); liquidation stats are not size-filtered."},"top_n":{"default":10,"example":10,"type":"number","description":"Number of notable trades and most active instruments to return. Default 10."}},"required":["exchange","currency"]}}}}}},"/api/v1/perpetuals/trades":{"get":{"description":"Individual retained executed trades, kept for a rolling 30 days: trade_id, price, amount, direction, tick_direction, index_price, basis (price − index; null without a usable index), trade-level open_interest/oi_before/oi_change, funding (omitted when not reported), maturity and block/combo/strategy identifiers. Not mark-filled bars. Rows carry instrument_name but no exchange or currency field; pass exchange to avoid mixing venues. Instrument mode (instrument_name) or currency mode (all perpetuals of a base currency).\n\nVenue trade event time. date is UTC with a space separator and no 'Z' (not ISO 8601). Not Laevitas ingestion or publication time.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Sort by timestamp pages by keyset (timestamp, trade_id) without skipping same-millisecond trades; amount/price sorts page by offset. top_n returns the N largest by the sort field with no cursor.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nTrade-level open_interest, oi_before and oi_change are USD on Deribit inverse (unlike oi on /open-interest, which is base coin) and null where the venue reports no trade-level open interest (e.g. Binance). Genuine zero readings are kept.\n\nFunding values are decimals (0.0001 = 0.01%). funding_rate is the venue-native rate per funding interval (hourly on Hyperliquid, 8-hourly on Binance); funding_8h is normalized to 8 hours. Deribit inverse funding_rate has been observed as 0 while funding_8h is non-zero; its exact meaning there is unverified. Null when the venue does not report it.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.trades. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nAdditional filters: direction, block_only, min_amount (in the trade amount unit), strategy, sort, sort_dir. top_n returns the N largest trades by the sort field without a cursor.","operationId":"Perpetuals Trade History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.","schema":{"example":"BTC-PERPETUAL","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.","schema":{"example":"BTC","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction (aggressor side)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only return trades with a block_trade_id (block trades).","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades.","schema":{"example":1,"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).","schema":{"type":"string","enum":["COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","Closed COMBO_MULTI_LEG_1","Closed COMBO_PERP_VS_FUTURE_UNWIND","Closed LONG_PERP","Closed SHORT_PERP","LONG_PERP","Opened COMBO_MULTI_LEG_1","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_PERP","Opened SHORT_PERP","SHORT_PERP"]}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesTradeEntity"}}}}]},"example":{"data":[{"instrument_name":"BTC-PERPETUAL","timestamp":1748936294661,"date":"2025-11-04 11:00:00","trade_id":"369968310","block_trade_id":"","combo_id":"BTC-FS-6JUN25_PERP","combo_trade_id":"369968308","strategy":"COMBO_PERP_VS_FUTURE","direction":"buy","tick_direction":0,"amount":500,"price":105306.5,"index_price":105306.68,"oi_change":null,"open_interest":968197530,"oi_before":968197530,"maturity":"PERPETUAL","basis":-0.17999999999301508,"funding":0.00001299},{"instrument_name":"BTC-PERPETUAL","timestamp":1748936295702,"date":"2025-11-04 11:00:00","trade_id":"369968315","block_trade_id":"","combo_id":"BTC-FS-6JUN25_PERP","combo_trade_id":"369968313","strategy":"COMBO_PERP_VS_FUTURE","direction":"buy","tick_direction":0,"amount":150,"price":105308,"index_price":105308.34,"oi_change":null,"open_interest":968197530,"oi_before":968197530,"maturity":"PERPETUAL","basis":-0.33999999999650754,"funding":0.00001299},{"instrument_name":"BTC-PERPETUAL","timestamp":1748936320292,"date":"2025-11-04 11:00:00","trade_id":"369968340","block_trade_id":"","combo_id":"BTC-FS-6JUN25_PERP","combo_trade_id":"369968338","strategy":"COMBO_PERP_VS_FUTURE","direction":"buy","tick_direction":0,"amount":500,"price":105307.5,"index_price":105310.39,"oi_change":null,"open_interest":968194400,"oi_before":968194400,"maturity":"PERPETUAL","basis":-2.889999999999418,"funding":0.00001299}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOiIxNzQ4OTk0NTQ5NDUyIiwidHJhZGVfaWQiOiIzNzAwNDk3NTEifQ=="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Trade History","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction (aggressor side)"},"block_only":{"default":false,"type":"boolean","description":"If true, only return trades with a block_trade_id (block trades)."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades."},"strategy":{"example":"calendar_spread","type":"string","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread)."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/perpetuals/open-interest":{"get":{"description":"Open-interest OHLC per bucket for one instrument: first open, maximum high, minimum low and last close of the minute OI states. Outstanding positions, not traded volume or a sum of minute OI. instrument_name is required; currency or cross-instrument aggregation is not supported.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end compare bucket starts, not source minutes: a bucket is returned only if its start lies in [start, end]. An unaligned start drops its containing bucket; an end inside a bucket returns the whole bucket, including minutes after end. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.open_interest. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Open Interest","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseOpenInterestEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","oi_open":14483.836684775828,"oi_high":14494.975017789338,"oi_low":14480.302050051028,"oi_close":14484.75799403648},{"date":"2025-11-04 11:01:00","oi_open":14484.75799403648,"oi_high":14495.570477778463,"oi_low":14484.624753264488,"oi_close":14495.303282654815},{"date":"2025-11-04 11:02:00","oi_open":14495.306080458478,"oi_high":14495.349446553402,"oi_low":14470.044024835908,"oi_close":14479.21911460026}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Open Interest","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/ticker-history":{"get":{"description":"One final observed ticker state per UTC bucket (latest source minute, duplicates resolved deterministically): mark_price, index_price, best bid/ask and displayed sizes, bid_ask_spread, oi, volume_usd_24h, funding_rate and next_funding_time (Unix ms; null when not reported). Not OHLC and not interval sums; no volume_24h, funding_8h, settlement_price or total_liquidity. Buckets without ticker rows are absent. Use /perpetuals/carry for funding OHLC and funding_8h.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\nvolume_usd_24h is the latest rolling 24-hour USD volume state, not bucket volume.\n\nFunding values are decimals (0.0001 = 0.01%). funding_rate is the venue-native rate per funding interval (hourly on Hyperliquid, 8-hourly on Binance); funding_8h is normalized to 8 hours. Deribit inverse funding_rate has been observed as 0 while funding_8h is non-zero; its exact meaning there is unverified. Null when the venue does not report it.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.ticker_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Ticker History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PerpetualsTickerDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price":103690.42,"index_price":103715.64,"bid_price":103673,"ask_price":103673.5,"bid_ask_spread":0.5,"bid_size":175500,"ask_size":199550,"oi":14484.75799403648,"volume_usd_24h":1408049640,"funding_rate":5,"next_funding_time":155},{"date":"2025-11-04 11:01:00","mark_price":103619.18,"index_price":103641.58,"bid_price":103609.5,"ask_price":103610,"bid_ask_spread":0.5,"bid_size":208530,"ask_size":176980,"oi":14495.303282654815,"volume_usd_24h":1409996050,"funding_rate":5,"next_funding_time":155},{"date":"2025-11-04 11:02:00","mark_price":103662.33,"index_price":103686.53,"bid_price":103655,"ask_price":103655.5,"bid_ask_spread":0.5,"bid_size":133120,"ask_size":320250,"oi":14479.21911460026,"volume_usd_24h":1413511150,"funding_rate":5,"next_funding_time":155}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Ticker History","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/carry":{"get":{"description":"Funding and basis per bucket for one perpetual: funding_rate and funding_8h OHLC, basis OHLC and annualized_carry = funding_8h_close × 3 × 365 × 100 (percent; null when funding_8h_close is missing). basis_open and basis_close are observed mark − index at the first and last source minute with a usable index; basis_high (maximum of mark_high − index_low) and basis_low (minimum of mark_low − index_high) are synthetic bounds, not observed basis values. Basis is null where the index is missing or zero. This is the perpetual funding endpoint (MCP: get_perpetuals_funding); there is no separate /funding route. It also serves macro perpetuals listed by /api/v1/macro/catalog.\n\nUTC bucket start as Unix milliseconds and as an ISO string in minute. This route has no date field.\n\nstart/end compare bucket starts, not source minutes: a bucket is returned only if its start lies in [start, end]. An unaligned start drops its containing bucket; an end inside a bucket returns the whole bucket, including minutes after end. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nFunding values are decimals (0.0001 = 0.01%). funding_rate is the venue-native rate per funding interval (hourly on Hyperliquid, 8-hourly on Binance); funding_8h is normalized to 8 hours. Deribit inverse funding_rate has been observed as 0 while funding_8h is non-zero; its exact meaning there is unverified. Null when the venue does not report it.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.carry. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Carry","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PerpetualsOhlcCarryEntity"}}}}]},"example":{"data":[{"timestamp":1762250400000,"minute":"2025-11-04 11:00:00","funding_rate_open":0,"funding_rate_high":0,"funding_rate_low":0,"funding_rate_close":0,"funding_8h_open":-0.00004634,"funding_8h_high":-0.00004628,"funding_8h_low":-0.00004634,"funding_8h_close":-0.00004628,"basis_open":-19.69999999999709,"basis_high":-18.820000000006985,"basis_low":-23.330000000001746,"basis_close":-25.220000000001164},{"timestamp":1762250460000,"minute":"2025-11-04 11:01:00","funding_rate_open":0,"funding_rate_high":0,"funding_rate_low":-0.00001633,"funding_rate_close":0,"funding_8h_open":-0.00004628,"funding_8h_high":-0.00004627,"funding_8h_low":-0.00004628,"funding_8h_close":-0.00004627,"basis_open":-25.220000000001164,"basis_high":-23.020000000004075,"basis_low":-22.39999999999418,"basis_close":-22.40000000000873},{"timestamp":1762250520000,"minute":"2025-11-04 11:02:00","funding_rate_open":0,"funding_rate_high":0,"funding_rate_low":0,"funding_rate_close":0,"funding_8h_open":-0.00004626,"funding_8h_high":-0.00004626,"funding_8h_low":-0.00004626,"funding_8h_close":-0.00004626,"basis_open":-22.70999999999185,"basis_high":-17.830000000001746,"basis_low":-22.729999999995925,"basis_close":-24.19999999999709}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Carry — funding rate, basis, annualized carry","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/reference-price":{"get":{"description":"Mark-price OHLC and index-price OHLC per bucket (first open, maximum high, minimum low, last close of the minute values). Source minutes with any missing or non-positive mark or index value are excluded, so gaps are absent rather than zero-filled. underlying_price is always null on this route. For basis and funding use /perpetuals/carry.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.reference_price. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Reference Prices","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesOhlcrefDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price_open":103794.61,"mark_price_high":103815.84,"mark_price_low":103680.29,"mark_price_close":103690.42,"index_price_open":103814.31,"index_price_high":103834.66,"index_price_low":103703.62,"index_price_close":103715.64,"underlying_price":19321.37},{"date":"2025-11-04 11:01:00","mark_price_open":103690.42,"mark_price_high":103709.23,"mark_price_low":103617.27,"mark_price_close":103619.18,"index_price_open":103715.64,"index_price_high":103732.25,"index_price_low":103639.67,"index_price_close":103641.58,"underlying_price":19321.37},{"date":"2025-11-04 11:02:00","mark_price_open":103619.16,"mark_price_high":103737.92,"mark_price_low":103618.85,"mark_price_close":103662.33,"index_price_open":103641.87,"index_price_high":103755.75,"index_price_low":103641.58,"index_price_close":103686.53,"underlying_price":19321.37}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Reference Prices","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"}}}}}}}},"/api/v1/perpetuals/snapshot":{"get":{"description":"Cross-instrument perpetual chain for one exchange (optional currency) at one minute or bucket: final ticker state per instrument (mark/index price, best bid/ask and sizes, bid_ask_spread, oi, volume_usd_24h, funding_rate, next_funding_time) joined with that minute or bucket’s trade-candle open/high/low/close, vwap, buy/sell volume, volume and trade counts. Open interest is named oi; no volume_24h.\n\nSelected UTC minute (1m) or bucket start shared by every row; meta.date repeats it.\n\nAt 1m, date must equal a retained minute exactly (non-zero seconds return an empty chain); there is no nearest-minute fallback. Omitted date selects the latest minute observed for that exchange (and currency) in the current or previous UTC day. At coarser resolutions date selects the whole containing UTC bucket, including observations after date: ticker fields are each instrument’s last minute in the bucket and candle fields aggregate the bucket. Not an as-of cutoff. meta.date and meta.next_date name the selected and following minute/bucket. REST returns every matching instrument without a limit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\nFunding values are decimals (0.0001 = 0.01%). funding_rate is the venue-native rate per funding interval (hourly on Hyperliquid, 8-hourly on Binance); funding_8h is normalized to 8 hours. Deribit inverse funding_rate has been observed as 0 while funding_8h is non-zero; its exact meaning there is unverified. Null when the venue does not report it.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.snapshot. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Perpetuals Snapshot","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required.","schema":{"example":"deribit","type":"string"}},{"name":"date","required":false,"in":"query","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute; other seconds return no rows. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for the latest matching snapshot.","schema":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"currency","required":false,"in":"query","description":"Base currency filter (e.g., BTC, ETH)","schema":{"example":"BTC","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"BTC-PERPETUAL","currency":"BTC","mark_price":103690.42,"index_price":103715.64,"bid_price":103673,"ask_price":103673.5,"bid_ask_spread":0.5,"bid_size":175500,"ask_size":199550,"oi":14484.76,"volume_usd_24h":1408049640,"funding_rate":5,"next_funding_time":1733788800000},{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"ETH-PERPETUAL","currency":"ETH","mark_price":3180.25,"index_price":3182.1,"bid_price":3179.5,"ask_price":3180,"bid_ask_spread":0.5,"bid_size":50000,"ask_size":60000,"oi":48200.3,"volume_usd_24h":520400000,"funding_rate":3.2,"next_funding_time":1733788800000}],"meta":{"minute":"2025-11-04 11:00:00"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Snapshot","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required."},"date":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute; other seconds return no rows. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for the latest matching snapshot."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records."},"currency":{"example":"BTC","type":"string","description":"Base currency filter (e.g., BTC, ETH)"}},"required":["exchange"]}}}}}},"/api/v1/perpetuals/liquidations":{"get":{"description":"Individual retained forced-liquidation events, with all stored history per exchange served (no rolling retention): price, amount, amount_base, amount_usd, direction (liquidation order side: sell closes longs, buy closes shorts), position_side (position liquidated), category, mark/index price, margin_type, trade_id and order_id. Filter by instrument_name or currency, direction, position_side and min_amount_usd. An empty response carries meta.empty_reason. Served exchanges: binance, bybit, hyperliquid, kraken, lighter, nado, okx. Deribit is not served.\n\nVenue liquidation event time; date is derived from timestamp. Not Laevitas ingestion or publication time.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Sort by timestamp (default DESC) pages by keyset (timestamp, exchange, instrument_name, trade_id, order_id) without skipping same-millisecond events; amount_usd/price sorts page by offset.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\namount is the venue-native liquidation quantity (contracts or coin; per-venue convention unverified); amount_base is base coin; amount_usd = price × amount_base. min_amount_usd filters on amount_usd.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.liquidations. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nWhen data is empty, meta.empty_reason distinguishes unsupported_exchange, ineligible_instrument, outside_coverage and no_matching_data. Coverage timestamps are observed event boundaries, not completeness watermarks.","operationId":"Perpetuals Liquidation History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to DESC (newest/largest first).","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name. Served exchanges: binance, bybit, hyperliquid, kraken, lighter, nado, and okx. Catalog membership does not guarantee that liquidation events exist for an instrument.","schema":{"example":"binance","type":"string","enum":["binance","bybit","hyperliquid","kraken","lighter","nado","okx"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"position_side","required":false,"in":"query","description":"Filter by position side being liquidated","schema":{"type":"string","enum":["long","short"]}},{"name":"min_amount_usd","required":false,"in":"query","description":"Minimum liquidation value in USD. Filters out small liquidations.","schema":{"example":1000,"type":"number"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount_usd","price"]}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LiquidationEntity"}},"meta":{"$ref":"#/components/schemas/DataAvailabilityPaginationMetaEntity"}}},"example":{"data":[{"instrument_name":"BTCUSDT","timestamp":1772104946628,"date":"2026-02-26T18:22:26.628Z","exchange":"binance","currency":"BTC","direction":"sell","position_side":"long","category":"forced","price":68187.4,"amount":0.075,"amount_base":0.075,"amount_usd":5114.05,"mark_price":68187.5,"index_price":68222.5,"margin_type":"linear","maturity":null,"days_to_expiry":null,"trade_id":null,"order_id":null},{"instrument_name":"ENSOUSDT","timestamp":1772104947089,"date":"2026-02-26T18:22:27.089Z","exchange":"binance","currency":"ENSO","direction":"sell","position_side":"long","category":"forced","price":1.5442,"amount":21.7,"amount_base":21.7,"amount_usd":33.51,"mark_price":1.5444,"index_price":1.6229,"margin_type":"linear","maturity":null,"days_to_expiry":null,"trade_id":null,"order_id":null}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3NzIxMDQ5NDYwMDB9","empty_reason":null,"coverage":{"source_id":"perpetuals.liquidations","exchange_supported":true,"instrument_eligible":true,"earliest_observed_at":null,"latest_observed_at":null}}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Perpetuals Liquidation History","tags":["Perpetuals"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to DESC (newest/largest first)."},"exchange":{"example":"binance","type":"string","enum":["binance","bybit","hyperliquid","kraken","lighter","nado","okx"],"description":"Exchange name. Served exchanges: binance, bybit, hyperliquid, kraken, lighter, nado, and okx. Catalog membership does not guarantee that liquidation events exist for an instrument."},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)"},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)"},"position_side":{"type":"string","enum":["long","short"],"description":"Filter by position side being liquidated"},"min_amount_usd":{"example":1000,"type":"number","description":"Minimum liquidation value in USD. Filters out small liquidations."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount_usd","price"],"description":"Sort field. Default: timestamp."}}}}}}}},"/api/v1/futures/catalog":{"get":{"description":"Dated futures observed in the last 24 hours and unexpired at request time, using exchange-published expiry timestamps where available and otherwise the latest observed days_to_expiry advanced to the request time. Not an all-history catalog: expired contracts remain requestable by name on the data routes.\n\nCurrent discovery, not a historical listed/open-for-trading timeline.\n\nFilter exchange, currency and maturity; follow next_cursor. total counts the whole matching list.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.catalog. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Filter by base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity/expiry date (e.g., 16OCT26, 27JUN25)","schema":{"example":"16OCT26","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of instruments to return (1-1000)","schema":{"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from a previous response","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":[{"instrument_name":"BNBUSD_251226","exchange":"binance"},{"instrument_name":"BNBUSD_260327","exchange":"binance"},{"instrument_name":"BTC-16OCT26","exchange":"deribit"}]}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Catalog","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)"},"currency":{"example":"BTC","type":"string","description":"Filter by base currency (e.g., BTC, ETH, SOL)"},"maturity":{"example":"16OCT26","type":"string","description":"Filter by maturity/expiry date (e.g., 16OCT26, 27JUN25)"},"limit":{"default":100,"example":100,"type":"number","description":"Maximum number of instruments to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response"}}}}}}}},"/api/v1/futures/metadata":{"get":{"description":"Returns metadata for a specific futures instrument including data availability, total record count, and pagination information.","operationId":"Futures Metadata","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name","schema":{"example":"deribit","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page for pagination calculation","schema":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number"}},{"name":"instrument_name","required":true,"in":"query","description":"Instrument name","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"description":"Metadata successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponseEntity"}}}},"400":{"description":"Bad Request - Invalid parameters or no data found","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Metadata","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name"},"limit":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number","description":"Number of records per page for pagination calculation"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Instrument name"}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/futures/ohlcvt":{"get":{"description":"Trade-price OHLC plus interval buy/sell volume, trade counts, liquidation and block-trade volume per UTC bucket. Minutes without executions are synthetic mark-filled candles (OHLC = mark price, trades_count = 0); a price is not evidence of an execution. Coarser OHLC uses first open, maximum high, minimum low and last close; VWAP is traded-volume weighted, and a zero-volume bucket uses the mean minute reference price. mark_price and index_price are final-minute values, not OHLC. liquidation_short_volume is forced buying (shorts liquidated); liquidation_long_volume is forced selling (longs liquidated). days_to_expiry comes from one source minute of the bucket, not necessarily its close.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCount of retained trades in the bucket; 0 marks a synthetic mark-filled candle.\n\ndays_to_expiry is fractional days until expiry.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.ohlcvt. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures OHLCVT Market Data","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"description":"OHLCVT data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesOhlcvtEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","open":109307.5,"high":109307.5,"low":109307.5,"close":109307.5,"vwap":109307.5,"volume":5830,"buy_volume":0,"sell_volume":5830,"trades_count":2,"buy_trades_count":0,"sell_trades_count":2,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":109224.93,"index_price":103721.05,"days_to_expiry":324.9166666666667},{"date":"2025-11-04 11:01:00","open":109139.43,"high":109139.43,"low":109139.43,"close":109139.43,"vwap":109139.43,"volume":0,"buy_volume":0,"sell_volume":0,"trades_count":0,"buy_trades_count":0,"sell_trades_count":0,"liquidation_short_volume":3200,"liquidation_long_volume":5800,"block_trade_buy_volume":null,"block_trade_sell_volume":null,"mark_price":109139.43,"index_price":103641.58,"days_to_expiry":324.91597222222225},{"date":"2025-11-04 11:02:00","open":109183.39,"high":109183.39,"low":109183.39,"close":109183.39,"vwap":109183.39,"volume":0,"buy_volume":0,"sell_volume":0,"trades_count":0,"buy_trades_count":0,"sell_trades_count":0,"liquidation_short_volume":null,"liquidation_long_volume":null,"block_trade_buy_volume":50000,"block_trade_sell_volume":35000,"mark_price":109183.39,"index_price":103686.12,"days_to_expiry":324.91527777777776}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures OHLCVT Market Data","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/level1":{"get":{"description":"Best bid/ask price OHLC, displayed bid/ask size OHLC, bid_ask_spread OHLC and total_liquidity (bid size + ask size) OHLC plus average per bucket. Only minutes with at least one quote update contribute; buckets without them are absent, not zero-filled. No size or spread averages are returned. Top of book only: not depth, order IDs, queue position or an executable quote replay.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.level1. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Level 1","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseBookEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","bid_price_open":109295,"bid_price_high":109347.5,"bid_price_low":109120,"bid_price_close":109182.5,"ask_price_open":109330,"ask_price_high":109367.5,"ask_price_low":109207.5,"ask_price_close":109225,"bid_size_open":5730,"bid_size_high":48510,"bid_size_low":320,"bid_size_close":40000,"ask_size_open":700,"ask_size_high":59890,"ask_size_low":490,"ask_size_close":40000,"bid_ask_spread_open":35,"bid_ask_spread_high":192.5,"bid_ask_spread_low":2.5,"bid_ask_spread_close":42.5,"total_liquidity_open":40700,"total_liquidity_high":99890,"total_liquidity_low":1110,"total_liquidity_close":80000,"total_liquidity_avg":23645.138121546963},{"date":"2025-11-04 11:01:00","bid_price_open":109187.5,"bid_price_high":109242.5,"bid_price_low":109110,"bid_price_close":109125,"ask_price_open":109215,"ask_price_high":109315,"ask_price_low":109135,"ask_price_close":109135,"bid_size_open":7460,"bid_size_high":45000,"bid_size_low":40,"bid_size_close":3520,"ask_size_open":6980,"ask_size_high":135000,"ask_size_low":700,"ask_size_close":700,"bid_ask_spread_open":27.5,"bid_ask_spread_high":112.5,"bid_ask_spread_low":5,"bid_ask_spread_close":10,"total_liquidity_open":7250,"total_liquidity_high":148430,"total_liquidity_low":740,"total_liquidity_close":4220,"total_liquidity_avg":21844.923547400613},{"date":"2025-11-04 11:02:00","bid_price_open":109125,"bid_price_high":109260,"bid_price_low":109110,"bid_price_close":109162.5,"ask_price_open":109135,"ask_price_high":109330,"ask_price_low":109135,"ask_price_close":109182.5,"bid_size_open":4370,"bid_size_high":45000,"bid_size_low":40,"bid_size_close":4550,"ask_size_open":700,"ask_size_high":90000,"ask_size_low":670,"ask_size_close":700,"bid_ask_spread_open":10,"bid_ask_spread_high":165,"bid_ask_spread_low":5,"bid_ask_spread_close":20,"total_liquidity_open":6200,"total_liquidity_high":103430,"total_liquidity_low":1220,"total_liquidity_close":5250,"total_liquidity_avg":21753.742038216562}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Level 1","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/orderbook":{"get":{"description":"Aggregated L2 depth per bucket: bid/ask liquidity (summed displayed size over the top 10, 20, 50 and 100 levels) and imbalance at each depth as open/high/low/close/avg, microprice open/high/low/close/avg, and snapshot_count (book snapshots, summed across minutes). Imbalance runs from -1 (ask-heavy) to +1 (bid-heavy). microprice is documented as the top-of-book size-weighted mid (bid × ask_size + ask × bid_size) / (bid_size + ask_size); the formula is not re-verified against samples. Coarser averages are unweighted means of minute averages. Rows add instrument_type, maturity and days_to_expiry (last source minute).\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.orderbook. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures L2 Orderbook","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"description":"L2 orderbook data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseL2OrderbookEntity"}}}}]},"example":{"data":[{"date":"2026-01-22 07:20:00","exchange":"deribit","instrument_name":"BTC-16OCT26","currency":"BTC","instrument_type":"future","maturity":"16OCT26","days_to_expiry":64.7,"bid_liq_10_open":12.5,"bid_liq_10_high":18.2,"bid_liq_10_low":8.1,"bid_liq_10_close":14.3,"bid_liq_10_avg":13.1,"bid_liq_20_open":25.8,"bid_liq_20_high":35,"bid_liq_20_low":18.5,"bid_liq_20_close":28.1,"bid_liq_20_avg":26.4,"bid_liq_50_open":65.2,"bid_liq_50_high":82,"bid_liq_50_low":50.3,"bid_liq_50_close":70.5,"bid_liq_50_avg":66.8,"bid_liq_100_open":120.5,"bid_liq_100_high":155,"bid_liq_100_low":95.2,"bid_liq_100_close":130.8,"bid_liq_100_avg":124.3,"ask_liq_10_open":15.3,"ask_liq_10_high":22.1,"ask_liq_10_low":10.5,"ask_liq_10_close":17.8,"ask_liq_10_avg":16.2,"ask_liq_20_open":30.1,"ask_liq_20_high":42,"ask_liq_20_low":22.5,"ask_liq_20_close":33.5,"ask_liq_20_avg":31,"ask_liq_50_open":78.5,"ask_liq_50_high":95,"ask_liq_50_low":60.2,"ask_liq_50_close":82.1,"ask_liq_50_avg":77.5,"ask_liq_100_open":145.2,"ask_liq_100_high":180,"ask_liq_100_low":110.5,"ask_liq_100_close":152.3,"ask_liq_100_avg":142.1,"imbalance_10_open":-0.1,"imbalance_10_high":0.25,"imbalance_10_low":-0.35,"imbalance_10_close":-0.11,"imbalance_10_avg":-0.09,"imbalance_20_open":-0.08,"imbalance_20_high":0.2,"imbalance_20_low":-0.3,"imbalance_20_close":-0.09,"imbalance_20_avg":-0.07,"imbalance_50_open":-0.09,"imbalance_50_high":0.15,"imbalance_50_low":-0.25,"imbalance_50_close":-0.08,"imbalance_50_avg":-0.06,"imbalance_100_open":-0.09,"imbalance_100_high":0.12,"imbalance_100_low":-0.2,"imbalance_100_close":-0.08,"imbalance_100_avg":-0.06,"microprice_open":105250.5,"microprice_high":105320,"microprice_low":105180,"microprice_close":105290.2,"microprice_avg":105260.8,"snapshot_count":60}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTAxLTIyIDA3OjIxOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures L2 Orderbook","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/orderbook-raw":{"get":{"description":"Individual retained L2 book snapshots, kept for a rolling 30 days: up to 100 bid and ask levels as {price, size} (best first), depth, pre-computed liquidity and imbalance at depths 10/20/50/100, microprice, margin_type and multiplier (null when not recorded). Not aggregated. Pages are keyset-ordered by (timestamp, exchange, instrument_name), so snapshots sharing a millisecond are not skipped. Rows add instrument_type, maturity and days_to_expiry.\n\nSnapshot event time in timestamp; date is the same instant truncated to whole seconds (.000Z). Order by timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.orderbook_raw. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures L2 Orderbook Raw","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26). Either instrument_name or currency is required.","schema":{"example":"BTC-16OCT26","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.","schema":{"example":"BTC","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction (aggressor side)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only return trades with a block_trade_id (block trades).","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades.","schema":{"example":1,"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).","schema":{"type":"string","enum":["COMBO_CALENDAR_SPREAD","COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","COMBO_ROLL_BACK","COMBO_ROLL_FORWARD","Closed COMBO_CALENDAR_SPREAD","Closed COMBO_PERP_VS_FUTURE_UNWIND","LONG_FUTURE","Opened COMBO_CALENDAR_SPREAD","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_FUTURE","Opened SHORT_FUTURE"]}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity date (e.g. 16OCT26). Only for dated futures.","schema":{"example":"16OCT26","type":"string"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"description":"Raw L2 orderbook snapshots successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseL2OrderbookRawEntity"}}}}]},"example":{"data":[{"timestamp":1769066457868,"date":"2026-01-22T07:20:57.000Z","exchange":"deribit","instrument_name":"BTC-16OCT26","currency":"BTC","instrument_type":"future","maturity":"16OCT26","days_to_expiry":64.7,"margin_type":"inverse","multiplier":1,"depth":100,"bids":[{"price":105250,"size":1.5},{"price":105249.5,"size":0.8}],"asks":[{"price":105250.5,"size":2.1},{"price":105251,"size":1.2}],"bid_liquidity_10":12.5,"ask_liquidity_10":15.3,"bid_liquidity_20":25.8,"ask_liquidity_20":30.1,"bid_liquidity_50":65.2,"ask_liquidity_50":78.5,"bid_liquidity_100":120.5,"ask_liquidity_100":145.2,"imbalance_10":-0.1,"imbalance_20":-0.08,"imbalance_50":-0.09,"imbalance_100":-0.09,"microprice":105250.3}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3NjkwNjY0NTc4Njh9"}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures L2 Orderbook Raw Snapshots","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26). Either instrument_name or currency is required."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction (aggressor side)"},"block_only":{"default":false,"type":"boolean","description":"If true, only return trades with a block_trade_id (block trades)."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades."},"strategy":{"example":"calendar_spread","type":"string","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread)."},"maturity":{"example":"16OCT26","type":"string","description":"Filter by maturity date (e.g. 16OCT26). Only for dated futures."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/futures/volume":{"get":{"description":"Per bucket for one instrument: the latest venue-reported rolling volume_24h and volume_usd_24h from the final ticker minute, plus interval buy_volume, sell_volume, volume (= buy + sell) and trade counts summed from trade candles. Buckets come from ticker data: a bucket without a ticker row is absent even if it had trades. instrument_name is required; currency selection is not supported.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nvolume_24h is the venue-reported rolling 24-hour volume in base coin (verified on Deribit inverse); volume_usd_24h is the rolling 24-hour volume in USD. Both are latest rolling states, not sums over the requested interval.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.volume. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Volume Stats","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"description":"Successfully retrieved futures volume data","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseVolumeDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","volume_24h":29.54344186,"volume_usd_24h":3297310},{"date":"2025-11-04 11:01:00","volume_24h":29.54264721,"volume_usd_24h":3297220},{"date":"2025-11-04 11:02:00","volume_24h":29.54264721,"volume_usd_24h":3297220}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Volume Stats","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/trades/summary":{"get":{"description":"Aggregates retained raw dated-futures trades (rolling 30 days) of one exchange and base currency over [start, end], grouped by exchange, instrument_name, maturity, direction or strategy: trade_count, volume, buy/sell volume, net_oi_change, block-trade count/volume, avg_price and vwap, plus metadata totals (group_by, total_trades, total_volume). Filters: direction, block_only, min_amount, strategy, maturity.\n\nWindow aggregate over trade event times in [start, end]; result rows carry no bucket timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Omitted end is the request time. exchange and currency are required.\n\nvolume, buy_volume, sell_volume and block_trade_volume sum trade amount, and net_oi_change sums trade-level oi_change, in venue-native units added across instruments (e.g. Deribit inverse USD with linear base-coin amounts); not comparable across margin types.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified. avg_price is an unweighted mean of trade prices; vwap is amount-weighted.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.trades_summary. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Trades Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH)","schema":{"example":"BTC","type":"string"}},{"name":"group_by","required":true,"in":"query","description":"Axis to group results by","schema":{"type":"string","enum":["exchange","instrument_name","maturity","direction","strategy"]}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only include block trades.","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit.","schema":{"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values.","schema":{"type":"string","enum":["COMBO_CALENDAR_SPREAD","COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","COMBO_ROLL_BACK","COMBO_ROLL_FORWARD","Closed COMBO_CALENDAR_SPREAD","Closed COMBO_PERP_VS_FUTURE_UNWIND","LONG_FUTURE","Opened COMBO_CALENDAR_SPREAD","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_FUTURE","Opened SHORT_FUTURE"]}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity date (e.g. 16OCT26).","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"group_key":"16OCT26","trade_count":150,"volume":1234.5,"buy_volume":700.2,"sell_volume":534.3,"net_oi_change":120.5,"block_trade_count":5,"block_trade_volume":200,"avg_price":95000,"vwap":95100}],"metadata":{"group_by":"maturity","total_trades":150,"total_volume":1234.5}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Trades Summary","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH)"},"group_by":{"type":"string","enum":["exchange","instrument_name","maturity","direction","strategy"],"description":"Axis to group results by"},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction"},"block_only":{"default":false,"type":"boolean","description":"If true, only include block trades."},"min_amount":{"type":"number","description":"Minimum trade amount in the venue-native trade amount unit."},"strategy":{"type":"string","description":"Filter by strategy label. Accepts comma-separated values."},"maturity":{"type":"string","description":"Filter by maturity date (e.g. 16OCT26)."}},"required":["exchange","currency","group_by"]}}}}}},"/api/v1/futures/flow":{"get":{"description":"One summary of retained raw trades (rolling 30 days) for one exchange and base currency over [start, end]: total_trades, total/buy/sell volume (sum of amount), net_oi_change, block-trade count/volume, avg_price (unweighted) and vwap (amount-weighted); most_active_instruments (top_n by summed amount) and notable_trades (top_n largest by amount, which compares units across instruments); plus liquidation stats for the same exchange, currency and window (counts and USD totals by long/short side, largest) with notable_liquidations (largest by amount_usd). min_amount filters trades only. Venues without a liquidation feed (e.g. Deribit) report zero liquidation stats.\n\nWindow aggregate over trade event times in [start, end]; result rows carry no bucket timestamp.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Omitted end is the request time. exchange and currency are required.\n\nvolume, buy_volume, sell_volume and block_trade_volume sum trade amount, and net_oi_change sums trade-level oi_change, in venue-native units added across instruments (e.g. Deribit inverse USD with linear base-coin amounts); not comparable across margin types.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified. avg_price is an unweighted mean of trade prices; vwap is amount-weighted.\n\nLiquidation totals are USD sums of amount_usd.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.flow. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Flow Summary","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g. BTC, ETH). Required.","schema":{"example":"BTC","type":"string"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount (venue-native trade amount unit) per trade to include. Applies to trades only (summary, most-active instruments, notable trades); liquidation stats are not size-filtered.","schema":{"example":1,"type":"number"}},{"name":"top_n","required":false,"in":"query","description":"Number of notable trades and most active instruments to return. Default 10.","schema":{"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"Flow summary successfully retrieved","content":{"application/json":{"example":{"summary":{"total_trades":500,"total_volume":1234.5,"buy_volume":700.2,"sell_volume":534.3,"net_oi_change":120.5,"block_trade_count":8,"block_trade_volume":400,"avg_price":95000,"vwap":95100,"most_active_instruments":[{"instrument_name":"BTC-16OCT26","trade_count":150,"volume":500,"net_oi_change":80}],"liquidation_count":45,"long_liquidation_count":30,"short_liquidation_count":15,"total_liquidation_usd":2500000,"long_liquidation_usd":1800000,"short_liquidation_usd":700000,"largest_liquidation_usd":250000},"notable_trades":[],"notable_liquidations":[]}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Flow Summary","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Required."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount (venue-native trade amount unit) per trade to include. Applies to trades only (summary, most-active instruments, notable trades); liquidation stats are not size-filtered."},"top_n":{"default":10,"example":10,"type":"number","description":"Number of notable trades and most active instruments to return. Default 10."}},"required":["exchange","currency"]}}}}}},"/api/v1/futures/trades":{"get":{"description":"Individual retained executed trades, kept for a rolling 30 days: trade_id, price, amount, direction, tick_direction, index_price, basis (price − index; null without a usable index), trade-level open_interest/oi_before/oi_change, maturity, days_to_expiry and block/combo/strategy identifiers. Not mark-filled bars. Rows carry instrument_name but no exchange or currency field; pass exchange to avoid mixing venues. Instrument mode (instrument_name) or currency mode (all dated futures of a base currency, optionally one maturity).\n\nVenue trade event time. date is UTC with a space separator and no 'Z' (not ISO 8601). Not Laevitas ingestion or publication time.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Sort by timestamp pages by keyset (timestamp, trade_id) without skipping same-millisecond trades; amount/price sorts page by offset. top_n returns the N largest by the sort field with no cursor.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nTrade amount is venue-native with no unit column: USD on Deribit inverse, observed as USDC notional on Deribit USDC linear, USDT notional on Binance USDT-M. Binance COIN-M and other venues are unverified. min_amount filters in this same unit.\n\nTrade-level open_interest, oi_before and oi_change are USD on Deribit inverse (unlike oi on /open-interest, which is base coin) and null where the venue reports no trade-level open interest (e.g. Binance). Genuine zero readings are kept.\n\ndays_to_expiry is fractional days until expiry.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.trades. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nAdditional filters: direction, block_only, min_amount (in the trade amount unit), strategy, maturity, sort, sort_dir. top_n returns the N largest trades by the sort field without a cursor.","operationId":"Futures Trade History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26). Either instrument_name or currency is required.","schema":{"example":"BTC-16OCT26","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.","schema":{"example":"BTC","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by trade direction (aggressor side)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"block_only","required":false,"in":"query","description":"If true, only return trades with a block_trade_id (block trades).","schema":{"default":false,"type":"boolean"}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades.","schema":{"example":1,"type":"number"}},{"name":"strategy","required":false,"in":"query","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).","schema":{"type":"string","enum":["COMBO_CALENDAR_SPREAD","COMBO_HEDGE_ROLL_TO_FUTURE","COMBO_HEDGE_ROLL_TO_PERP","COMBO_MULTI_LEG_1","COMBO_PERP_VS_FUTURE","COMBO_ROLL_BACK","COMBO_ROLL_FORWARD","Closed COMBO_CALENDAR_SPREAD","Closed COMBO_PERP_VS_FUTURE_UNWIND","LONG_FUTURE","Opened COMBO_CALENDAR_SPREAD","Opened COMBO_PERP_VS_FUTURE_SPREAD","Opened LONG_FUTURE","Opened SHORT_FUTURE"]}},{"name":"maturity","required":false,"in":"query","description":"Filter by maturity date (e.g. 16OCT26). Only for dated futures.","schema":{"example":"16OCT26","type":"string"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesTradeEntity"}}}}]},"example":{"data":[{"instrument_name":"BTC-16OCT26","date":"2025-11-04T11:01:55.040Z","timestamp":1758876115040,"trade_id":"386518052","block_trade_id":"","combo_id":"BTC-FS-25SEP26_26JUN26","combo_trade_id":"386518051","strategy":"COMBO_CALENDAR_SPREAD","direction":"sell","tick_direction":2,"amount":23750,"price":117287.5,"index_price":109621.72,"oi_change":null,"open_interest":1095380,"oi_before":1095380,"maturity":"25SEP26","days_to_expiry":363.9709,"basis":7665.779999999999},{"instrument_name":"BTC-16OCT26","date":"2025-11-04T11:01:55.040Z","timestamp":1758885173562,"trade_id":"386539875","block_trade_id":"","combo_id":"BTC-FS-25SEP26_26JUN26","combo_trade_id":"386539874","strategy":"COMBO_CALENDAR_SPREAD","direction":"buy","tick_direction":2,"amount":50000,"price":116762.5,"index_price":108916.75,"oi_change":50000,"open_interest":2985210,"oi_before":2935210,"maturity":"25SEP26","days_to_expiry":363.866,"basis":7845.75},{"instrument_name":"BTC-16OCT26","date":"2025-11-04T11:01:55.040Z","timestamp":1758885174875,"trade_id":"386539878","block_trade_id":"","combo_id":"BTC-FS-25SEP26_26JUN26","combo_trade_id":"386539877","strategy":"COMBO_CALENDAR_SPREAD","direction":"sell","tick_direction":0,"amount":50000,"price":116797,"index_price":108913.27,"oi_change":50000,"open_interest":3035210,"oi_before":2985210,"maturity":"25SEP26","days_to_expiry":363.866,"basis":7883.729999999996}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOiIxNzU4ODk5MjAxMDY0IiwidHJhZGVfaWQiOiIzODY2MjA5ODgifQ=="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Trade History","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26). Either instrument_name or currency is required."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required."},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by trade direction (aggressor side)"},"block_only":{"default":false,"type":"boolean","description":"If true, only return trades with a block_trade_id (block trades)."},"min_amount":{"example":1,"type":"number","description":"Minimum trade amount in the venue-native trade amount unit (e.g. USD on Deribit inverse, USDT notional on Binance USDT-M). Filters out dust trades."},"strategy":{"example":"calendar_spread","type":"string","description":"Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread)."},"maturity":{"example":"16OCT26","type":"string","description":"Filter by maturity date (e.g. 16OCT26). Only for dated futures."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount","price"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/futures/open-interest":{"get":{"description":"Open-interest OHLC per bucket for one instrument: first open, maximum high, minimum low and last close of the minute OI states. Outstanding positions, not traded volume or a sum of minute OI. instrument_name is required; currency or cross-instrument aggregation is not supported.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end compare bucket starts, not source minutes: a bucket is returned only if its start lies in [start, end]. An unaligned start drops its containing bucket; an end inside a bucket returns the whole bucket, including minutes after end. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.open_interest. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Open Interest","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BaseOpenInterestEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","oi_open":559.1289933303566,"oi_high":559.7229134379199,"oi_low":559.0182983385522,"oi_close":559.6348745657242},{"date":"2025-11-04 11:01:00","oi_open":559.666130831103,"oi_high":560.0817095526673,"oi_low":559.5719114785235,"oi_close":560.0732934009276},{"date":"2025-11-04 11:02:00","oi_open":560.0728315462629,"oi_high":560.0728315462629,"oi_low":559.4456693812764,"oi_close":559.8441531321868}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Open Interest","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/ticker-history":{"get":{"description":"One final observed ticker state per UTC bucket (latest source minute, duplicates resolved deterministically): mark_price, index_price, best bid/ask and displayed sizes, bid_ask_spread, oi, volume_usd_24h and days_to_expiry. Not OHLC and not interval sums; no volume_24h, funding, settlement_price or total_liquidity. Buckets without ticker rows are absent. Use /futures/carry for basis.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\nvolume_usd_24h is the latest rolling 24-hour USD volume state, not bucket volume.\n\ndays_to_expiry is fractional days until expiry.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.ticker_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Ticker History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesTickerDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price":109224.93,"index_price":103721.05,"bid_price":109182.5,"ask_price":109225,"bid_ask_spread":42.5,"bid_size":40000,"ask_size":40000,"oi":559.6348745657242,"volume_usd_24h":3297310,"days_to_expiry":324.9166666666667},{"date":"2025-11-04 11:01:00","mark_price":109139.43,"index_price":103641.58,"bid_price":109125,"ask_price":109135,"bid_ask_spread":10,"bid_size":3520,"ask_size":700,"oi":560.0732934009276,"volume_usd_24h":3297220,"days_to_expiry":324.91597222222225},{"date":"2025-11-04 11:02:00","mark_price":109184.1,"index_price":103686.53,"bid_price":109162.5,"ask_price":109182.5,"bid_ask_spread":20,"bid_size":4550,"ask_size":700,"oi":559.8441531321868,"volume_usd_24h":3297220,"days_to_expiry":324.91527777777776}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Ticker History","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/carry":{"get":{"description":"Basis per bucket for one dated future: basis OHLC, days_to_expiry (last source minute) and annualized_carry = basis_close / index × 365 / days_to_expiry × 100 (percent) using the bucket’s final index price; null when the index or days_to_expiry is missing or non-positive. basis_open and basis_close are observed mark − index at the first and last source minute with a usable index; basis_high (maximum of mark_high − index_low) and basis_low (minimum of mark_low − index_high) are synthetic bounds, not observed basis values. Basis is null where the index is missing or zero. No funding fields (MCP: get_futures_basis).\n\nUTC bucket start as Unix milliseconds and as an ISO string in minute. This route has no date field.\n\nstart/end compare bucket starts, not source minutes: a bucket is returned only if its start lies in [start, end]. An unaligned start drops its containing bucket; an end inside a bucket returns the whole bucket, including minutes after end. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\ndays_to_expiry is fractional days until expiry.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.carry. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Carry","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesOhlcCarryEntity"}}}}]},"example":{"data":[{"timestamp":1733788800000,"minute":"2024-12-10T00:00:00.000Z","basis_open":5503.88,"basis_high":5519.17,"basis_low":5497.57,"basis_close":5503.88},{"timestamp":1733788860000,"minute":"2024-12-10T00:01:00.000Z","basis_open":5503.88,"basis_high":5534.09,"basis_low":5497.65,"basis_close":5497.57}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI0LTEyLTEwIDAwOjAxOjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Carry","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/reference-price":{"get":{"description":"Mark-price OHLC and index-price OHLC per bucket (first open, maximum high, minimum low, last close of the minute values). Source minutes with any missing or non-positive mark or index value are excluded, so gaps are absent rather than zero-filled. underlying_price is always null on this route. For basis use /futures/carry.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end, or before the request time without end.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.reference_price. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Reference Prices","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FuturesOhlcrefDataEntity"}}}}]},"example":{"data":[{"date":"2025-11-04 11:00:00","mark_price_open":109334.18,"mark_price_high":109355.83,"mark_price_low":109207.75,"mark_price_close":109224.93,"index_price_open":103814.31,"index_price_high":103834.66,"index_price_low":103703.62,"index_price_close":103721.05,"underlying_price":19321.37},{"date":"2025-11-04 11:01:00","mark_price_open":109218.83,"mark_price_high":109237.22,"mark_price_low":109137.79,"mark_price_close":109139.43,"index_price_open":103715.64,"index_price_high":103732.25,"index_price_low":103639.67,"index_price_close":103641.58,"underlying_price":19321.37},{"date":"2025-11-04 11:02:00","mark_price_open":109139.52,"mark_price_high":109261.87,"mark_price_low":109139.52,"mark_price_close":109184.1,"index_price_open":103641.87,"index_price_high":103755.75,"index_price_low":103641.87,"index_price_close":103686.53,"underlying_price":19321.37}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Reference Prices","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, kraken)"},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"}}}}}}}},"/api/v1/futures/snapshot":{"get":{"description":"Cross-instrument dated-futures chain for one exchange (optional currency) at one minute or bucket: final ticker state per instrument (mark/index price, best bid/ask and sizes, bid_ask_spread, oi, volume_usd_24h, days_to_expiry) joined with that minute or bucket’s trade-candle open/high/low/close, vwap, buy/sell volume, volume and trade counts. Open interest is named oi; no volume_24h or funding.\n\nSelected UTC minute (1m) or bucket start shared by every row; meta.date repeats it.\n\nAt 1m, date must equal a retained minute exactly (non-zero seconds return an empty chain); there is no nearest-minute fallback. Omitted date selects the latest minute observed for that exchange (and currency) in the current or previous UTC day. At coarser resolutions date selects the whole containing UTC bucket, including observations after date: ticker fields are each instrument’s last minute in the bucket and candle fields aggregate the bucket. Not an as-of cutoff. meta.date and meta.next_date name the selected and following minute/bucket. REST returns every matching instrument without a limit.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\nCandle volume, displayed L1 sizes and L2 depth are venue-native with no unit column: USD notional on Deribit inverse; base coin on Deribit USDC linear and Binance USDT-M; contracts on Binance COIN-M (100 USD face for BTC; verified for candle volume and L1 sizes). Other venues are unverified. Convert before adding across venues or margin types.\n\nOpen interest (oi, oi_*) in base coin: BTC for Deribit inverse BTC contracts, base coin for Deribit USDC linear and Binance USDT-M, converted to base coin for Binance COIN-M. Other venues are unverified.\n\ndays_to_expiry is fractional days until expiry.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.snapshot. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Futures Snapshot","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required.","schema":{"example":"deribit","type":"string"}},{"name":"date","required":false,"in":"query","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute; other seconds return no rows. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for the latest matching snapshot.","schema":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"currency","required":false,"in":"query","description":"Base currency filter (e.g., BTC, ETH)","schema":{"example":"BTC","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"BTC-16OCT26","currency":"BTC","mark_price":109224.93,"index_price":103721.05,"bid_price":109182.5,"ask_price":109225,"bid_ask_spread":42.5,"bid_size":40000,"ask_size":40000,"oi":559.63,"volume_usd_24h":3297310,"days_to_expiry":324.92},{"date":"2025-11-04 11:00:00","exchange":"deribit","instrument_name":"ETH-16OCT26","currency":"ETH","mark_price":3212.45,"index_price":3180.12,"bid_price":3210,"ask_price":3215,"bid_ask_spread":5,"bid_size":500,"ask_size":600,"oi":12450.5,"volume_usd_24h":8540000,"days_to_expiry":143.92}],"meta":{"minute":"2025-11-04 11:00:00"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Snapshot","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive, paradex). Required."},"date":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute; other seconds return no rows. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for the latest matching snapshot."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records."},"currency":{"example":"BTC","type":"string","description":"Base currency filter (e.g., BTC, ETH)"}},"required":["exchange"]}}}}}},"/api/v1/futures/liquidations":{"get":{"description":"Individual retained forced-liquidation events, with all stored history per exchange served (no rolling retention): price, amount, amount_base, amount_usd, direction (liquidation order side: sell closes longs, buy closes shorts), position_side (position liquidated), category, mark/index price, margin_type, trade_id and order_id. Filter by instrument_name or currency, direction, position_side and min_amount_usd. An empty response carries meta.empty_reason. Rows add maturity and days_to_expiry. Served exchanges: binance, bybit, kraken, okx. Deribit is not served.\n\nVenue liquidation event time; date is derived from timestamp. Not Laevitas ingestion or publication time.\n\nInclusive millisecond event-time bounds [start, end]. Omitted start defaults to 24 hours before end, or before the request time without end. Sort by timestamp (default DESC) pages by keyset (timestamp, exchange, instrument_name, trade_id, order_id) without skipping same-millisecond events; amount_usd/price sorts page by offset.\n\nPrices (OHLC, VWAP, mark, index, bid/ask, spread, basis, microprice) are in the quote currency: USD for Deribit inverse (BTC-PERPETUAL, BTC-25DEC26) and Binance COIN-M (BTCUSD_261225), USDC for Deribit USDC linear, USDT for Binance USDT-M. Other venues are unverified.\n\namount is the venue-native liquidation quantity (contracts or coin; per-venue convention unverified); amount_base is base coin; amount_usd = price × amount_base. min_amount_usd filters on amount_usd.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.liquidations. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nWhen data is empty, meta.empty_reason distinguishes unsupported_exchange, ineligible_instrument, outside_coverage and no_matching_data. Coverage timestamps are observed event boundaries, not completeness watermarks.","operationId":"Futures Liquidation History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to DESC (newest/largest first).","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name. Served exchanges: binance, bybit, kraken, and okx. Catalog membership does not guarantee that liquidation events exist for an instrument.","schema":{"example":"binance","type":"string","enum":["binance","bybit","kraken","okx"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)","schema":{"example":"BTC-16OCT26","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)","schema":{"type":"string","enum":["buy","sell"]}},{"name":"position_side","required":false,"in":"query","description":"Filter by position side being liquidated","schema":{"type":"string","enum":["long","short"]}},{"name":"min_amount_usd","required":false,"in":"query","description":"Minimum liquidation value in USD. Filters out small liquidations.","schema":{"example":1000,"type":"number"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount_usd","price"]}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LiquidationEntity"}},"meta":{"$ref":"#/components/schemas/DataAvailabilityPaginationMetaEntity"}}},"example":{"data":[{"instrument_name":"BTCUSD_250627","timestamp":1772104946628,"date":"2026-02-26T18:22:26.628Z","exchange":"binance","currency":"BTC","direction":"sell","position_side":"long","category":"forced","price":68187.4,"amount":0.075,"amount_base":0.075,"amount_usd":5114.05,"mark_price":68187.5,"index_price":68222.5,"margin_type":"linear","maturity":"250627","days_to_expiry":121.2,"trade_id":null,"order_id":null}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3NzIxMDQ5NDYwMDB9","empty_reason":null,"coverage":{"source_id":"futures.liquidations","exchange_supported":true,"instrument_eligible":true,"earliest_observed_at":null,"latest_observed_at":null}}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Futures Liquidation History","tags":["Futures"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to DESC (newest/largest first)."},"exchange":{"example":"binance","type":"string","enum":["binance","bybit","kraken","okx"],"description":"Exchange name. Served exchanges: binance, bybit, kraken, and okx. Catalog membership does not guarantee that liquidation events exist for an instrument."},"instrument_name":{"example":"BTC-16OCT26","type":"string","description":"Full futures instrument identifier (e.g., BTC-16OCT26, ETH-16OCT26)"},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)"},"position_side":{"type":"string","enum":["long","short"],"description":"Filter by position side being liquidated"},"min_amount_usd":{"example":1000,"type":"number","description":"Minimum liquidation value in USD. Filters out small liquidations."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount_usd","price"],"description":"Sort field. Default: timestamp."}}}}}}}},"/api/v1/options/vol-surface/by-expiry":{"get":{"description":"Returns ATM IV, 25-delta skew, and 25-delta butterfly across all real expiries for a given exchange and currency. **Snapshot mode** (default): provide `date` or omit for latest. **Time-series mode**: provide `start` and/or `end` to get paginated snapshots over time with cursor-based pagination.","operationId":"Vol Surface By Expiry","parameters":[{"name":"exchange","required":true,"in":"query","description":"Options exchange, including Paradex. Required; availability follows retained chain observations.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Exact date/time for a single snapshot in ISO 8601 format (UTC). If omitted and no start/end provided, returns the latest available snapshot. Mutually exclusive with start/end.","schema":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.","schema":{"format":"date-time","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date for time-series mode in ISO 8601 format (UTC)","schema":{"format":"date-time","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for aggregation. The 1m default is a persisted aggregate of finer source observations; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"limit","required":false,"in":"query","description":"Requested page limit (1-1000). Only used in time-series mode (when start/end provided). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response. Only used in time-series mode.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket (time-series mode only). ASC = oldest first (default). DESC = newest first. Keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-11-04T11:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"29NOV25","days_to_expiry":25.5,"underlying_price":103722.83,"atm_iv":47.62,"call_25d_iv":43.8,"put_25d_iv":52.1,"skew_25d":8.3,"butterfly_25d":0.33,"call_10d_iv":40.1,"put_10d_iv":58.3,"skew_10d":18.2,"butterfly_10d":1.58},{"date":"2025-11-04T11:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"27DEC25","days_to_expiry":53.5,"underlying_price":103722.83,"atm_iv":52.1,"call_25d_iv":48.5,"put_25d_iv":56.8,"skew_25d":8.3,"butterfly_25d":0.55,"call_10d_iv":44.2,"put_10d_iv":63.5,"skew_10d":19.3,"butterfly_10d":1.75},{"date":"2025-11-04T11:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"28MAR26","days_to_expiry":144.5,"underlying_price":103722.83,"atm_iv":55.3,"call_25d_iv":51.2,"put_25d_iv":60.1,"skew_25d":8.9,"butterfly_25d":0.35,"call_10d_iv":47.5,"put_10d_iv":66.2,"skew_10d":18.7,"butterfly_10d":1.55}],"meta":{"date":"2025-11-04T11:00:00.000Z","next_date":"2025-11-04T11:01:00.000Z"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}},"504":{"description":"VOL_SURFACE_QUERY_TIMEOUT: history query could not complete in time. Retry with a smaller limit or shorter window."}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface By Expiry","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange, including Paradex. Required; availability follows retained chain observations."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries."},"date":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string","description":"Exact date/time for a single snapshot in ISO 8601 format (UTC). If omitted and no start/end provided, returns the latest available snapshot. Mutually exclusive with start/end."},"start":{"format":"date-time","type":"string","description":"Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot."},"end":{"format":"date-time","type":"string","description":"End date for time-series mode in ISO 8601 format (UTC)"},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for aggregation. The 1m default is a persisted aggregate of finer source observations; higher resolutions roll up those 1m records."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Requested page limit (1-1000). Only used in time-series mode (when start/end provided). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit."},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response. Only used in time-series mode."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket (time-series mode only). ASC = oldest first (default). DESC = newest first. Keep sort_dir constant within a paginated scan."}},"required":["exchange","currency"]}}}}}},"/api/v1/options/vol-surface/by-tenor":{"get":{"description":"Returns ATM IV, 25-delta skew, and 25-delta butterfly interpolated to fixed constant-maturity tenors (1d, 7d, 14d, 30d, 60d, 90d, 180d, 365d). Uses linear interpolation in total variance space. **Snapshot mode** (default): provide `date` or omit for latest. **Time-series mode**: provide `start` and/or `end` to get paginated term structures over time. Each time bucket returns eight tenor rows; limit counts buckets, not rows. Continue with meta.next_cursor until null.","operationId":"Vol Surface By Tenor","parameters":[{"name":"exchange","required":true,"in":"query","description":"Options exchange, including Paradex. Required; availability follows retained chain observations.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries.","schema":{"example":"BTC","type":"string"}},{"name":"date","required":false,"in":"query","description":"Exact date/time for a single snapshot in ISO 8601 format (UTC). If omitted and no start/end provided, returns the latest available snapshot. Mutually exclusive with start/end.","schema":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.","schema":{"format":"date-time","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date for time-series mode in ISO 8601 format (UTC)","schema":{"format":"date-time","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for aggregation. The 1m default is a persisted aggregate of finer source observations; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"limit","required":false,"in":"query","description":"Requested page limit (1-1000). Only used in time-series mode (when start/end provided). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response. Only used in time-series mode.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket (time-series mode only). ASC = oldest first (default). DESC = newest first. Keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"tenor":1,"atm_iv":43.74,"call_25d_iv":41.2,"put_25d_iv":46.8,"skew_25d":5.6,"butterfly_25d":0.26,"call_10d_iv":38.5,"put_10d_iv":52.1,"skew_10d":13.6,"butterfly_10d":1.54},{"tenor":7,"atm_iv":40.43,"call_25d_iv":38.1,"put_25d_iv":43.9,"skew_25d":5.8,"butterfly_25d":0.57,"call_10d_iv":35.2,"put_10d_iv":49.3,"skew_10d":14.1,"butterfly_10d":1.82},{"tenor":14,"atm_iv":38.66,"call_25d_iv":36.5,"put_25d_iv":41.8,"skew_25d":5.3,"butterfly_25d":0.49,"call_10d_iv":33.8,"put_10d_iv":47.2,"skew_10d":13.4,"butterfly_10d":1.84},{"tenor":30,"atm_iv":38.55,"call_25d_iv":36.2,"put_25d_iv":41.9,"skew_25d":5.7,"butterfly_25d":0.5,"call_10d_iv":33.1,"put_10d_iv":48.5,"skew_10d":15.4,"butterfly_10d":2.25},{"tenor":60,"atm_iv":39.92,"call_25d_iv":37.4,"put_25d_iv":43.1,"skew_25d":5.7,"butterfly_25d":0.33,"call_10d_iv":34.5,"put_10d_iv":49.8,"skew_10d":15.3,"butterfly_10d":2.23},{"tenor":90,"atm_iv":41.3,"call_25d_iv":38.8,"put_25d_iv":44.5,"skew_25d":5.7,"butterfly_25d":0.35,"call_10d_iv":36.1,"put_10d_iv":51.2,"skew_10d":15.1,"butterfly_10d":2.35},{"tenor":180,"atm_iv":44.78,"call_25d_iv":42.1,"put_25d_iv":48.2,"skew_25d":6.1,"butterfly_25d":0.37,"call_10d_iv":39.3,"put_10d_iv":54.5,"skew_10d":15.2,"butterfly_10d":2.12},{"tenor":365,"atm_iv":47.15,"call_25d_iv":44.3,"put_25d_iv":50.8,"skew_25d":6.5,"butterfly_25d":0.4,"call_10d_iv":41.8,"put_10d_iv":57.3,"skew_10d":15.5,"butterfly_10d":2.4}],"meta":{"date":"2025-11-04T11:00:00.000Z","next_date":"2025-11-04T11:01:00.000Z"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}},"504":{"description":"VOL_SURFACE_QUERY_TIMEOUT: history query could not complete in time. Retry with a smaller limit or shorter window."}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface By Tenor","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange, including Paradex. Required; availability follows retained chain observations."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries."},"date":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string","description":"Exact date/time for a single snapshot in ISO 8601 format (UTC). If omitted and no start/end provided, returns the latest available snapshot. Mutually exclusive with start/end."},"start":{"format":"date-time","type":"string","description":"Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot."},"end":{"format":"date-time","type":"string","description":"End date for time-series mode in ISO 8601 format (UTC)"},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for aggregation. The 1m default is a persisted aggregate of finer source observations; higher resolutions roll up those 1m records."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Requested page limit (1-1000). Only used in time-series mode (when start/end provided). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit."},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response. Only used in time-series mode."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket (time-series mode only). ASC = oldest first (default). DESC = newest first. Keep sort_dir constant within a paginated scan."}},"required":["exchange","currency"]}}}}}},"/api/v1/options/vol-surface/by-time":{"get":{"description":"Returns a paginated time-series of ATM IV, 25-delta skew, and 25-delta butterfly for the specified exchange and currency. Filter by maturity to track one expiry across time. Uses cursor-based pagination.","operationId":"Vol Surface By Time","parameters":[{"name":"exchange","required":true,"in":"query","description":"Options exchange, including Paradex. Required; availability follows retained chain observations.","schema":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"]}},{"name":"currency","required":true,"in":"query","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries.","schema":{"example":"BTC","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC)","schema":{"format":"date-time","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC)","schema":{"format":"date-time","type":"string"}},{"name":"maturity","required":true,"in":"query","description":"Maturity to query (e.g., 16OCT26). Required for vol-surface history due to large dataset size.","schema":{"example":"16OCT26","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for aggregation. Default 1m.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"limit","required":false,"in":"query","description":"Requested page limit (1-1000). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default). DESC = newest first. Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-11-04T10:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"29NOV25","days_to_expiry":25.54,"underlying_price":103500,"atm_iv":47.2,"call_25d_iv":43.5,"put_25d_iv":51.8,"skew_25d":8.3,"butterfly_25d":0.45,"call_10d_iv":39.8,"put_10d_iv":58.1,"skew_10d":18.3,"butterfly_10d":1.7},{"date":"2025-11-04T10:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"27DEC25","days_to_expiry":53.54,"underlying_price":103500,"atm_iv":51.9,"call_25d_iv":48.2,"put_25d_iv":56.5,"skew_25d":8.3,"butterfly_25d":0.45,"call_10d_iv":44.5,"put_10d_iv":63.2,"skew_10d":18.7,"butterfly_10d":1.75},{"date":"2025-11-04T11:00:00.000Z","exchange":"deribit","currency":"BTC","maturity":"29NOV25","days_to_expiry":25.5,"underlying_price":103722.83,"atm_iv":47.62,"call_25d_iv":43.8,"put_25d_iv":52.1,"skew_25d":8.3,"butterfly_25d":0.33,"call_10d_iv":40.1,"put_10d_iv":58.3,"skew_10d":18.2,"butterfly_10d":1.58}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI1LTExLTA0IDExOjAwOjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}},"504":{"description":"VOL_SURFACE_QUERY_TIMEOUT: history query could not complete in time. Retry with a smaller limit or shorter window."}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface By Time","tags":["Options"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","enum":["deribit","binance","okx","bybit","bullish","derive","paradex"],"description":"Options exchange, including Paradex. Required; availability follows retained chain observations."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH). Required for vol-surface queries."},"start":{"format":"date-time","type":"string","description":"Start date in ISO 8601 format (UTC)"},"end":{"format":"date-time","type":"string","description":"End date in ISO 8601 format (UTC)"},"maturity":{"example":"16OCT26","type":"string","description":"Maturity to query (e.g., 16OCT26). Required for vol-surface history due to large dataset size."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for aggregation. Default 1m."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Requested page limit (1-1000). limit is an upper bound on distinct time buckets, not tenor/expiry rows. Page caps by resolution: 1m/5m 1000, 15m 672, 1h 168, 4h 42, 1d 7. All tenors/expiries of a bucket stay together. This limits page work, not the requested date range or historical coverage. Keep the same filters and follow meta.next_cursor until null, even when a page is shorter than limit."},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default). DESC = newest first. Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."}},"required":["exchange","currency","maturity"]}}}}}},"/api/v1/spot/catalog":{"get":{"description":"Spot instruments (instrument_name, exchange, currency, quote_currency) with a ticker row in the last 24 hours, as {data, next_cursor, total}. Pairs quiet for more than 24 hours, or with only trade candles, are absent. Current discovery, not an all-history instrument list.\n\nCurrent discovery over the trailing 24 hours, not a historical listing or trading-status timeline.\n\nOptional exchange, currency and quote_currency filters; limit default 100, maximum 1000. next_cursor is an offset cursor and can shift if membership changes between pages.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.catalog. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency filter (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency filter (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"instrument_name":"BTCUSDT","exchange":"binance","currency":"BTC","quote_currency":"USDT"},{"instrument_name":"BTC-USD","exchange":"coinbase","currency":"BTC","quote_currency":"USD"}],"next_cursor":"eyJvZmZzZXQiOjEwMH0=","total":412}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Catalog","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"currency":{"example":"BTC","type":"string","description":"Base currency filter (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency filter (e.g., USDT, USDC, USD)"},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."}}}}}}}},"/api/v1/spot/metadata":{"get":{"description":"For one exchange and instrument: first and last stored spot.ohlcvt candle minute and the number of stored candle minutes. Candles only, not ticker, level1, L2 or trade availability. total_pages = ceil(total_count / 100), a fixed page size of 100. Returns 400 when the instrument has no stored candles.\n\nFirst and last stored one-minute candle starts; not listing dates and not a promise of a candle at every minute in between.\n\nexchange and instrument_name are required; there are no time filters.\n\nNumber of stored one-minute candles, including flat zero-volume candles. Stored minutes are not continuous, so this is not the minute span between start_date and end_date.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.metadata. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Metadata","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD)","schema":{"example":"BTCUSDT","type":"string"}}],"responses":{"200":{"description":"Metadata successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponseEntity"}}}},"400":{"description":"Bad Request - Invalid parameters or no data found","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Metadata","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD)"}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/spot/ohlcvt":{"get":{"description":"Trade candles per UTC bucket: open, high, low, close, vwap, buy/sell base volume, buy/sell quote volume, buy/sell trade counts and first/last trade id; volume, quote_volume and trades_count are buy + sell. Coarser buckets use first open, maximum high, minimum low, last close and summed volumes and counts. vwap is weighted by traded base volume; a bucket with zero volume reports the mean of its minute vwap values. Stored minutes include flat zero-volume candles with no trades, so a candle is not evidence of an execution, and stored minutes are not continuous. data_source labels the ingestion path.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end (or now); omitted end is open-ended. Resolutions 1m, 5m, 15m, 1h, 4h and 1d (REST default 1m), aligned to UTC (4h buckets start at 00:00, 04:00, ... UTC). Buckets without a stored source minute are absent; there is no gap filling. Pass exchange and instrument_name. limit counts buckets; follow meta.next_cursor and keep sort_dir constant within a paginated scan.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nQuote-asset notional (USDT for BTCUSDT, USD for BTC-USD), not converted to or certified as USD. Convert before adding across quote currencies.\n\nNumber of trades in the bucket; 0 on flat no-trade candles.\n\nbuy_*/sell_* split interval activity by the aggressor side of each trade.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.ohlcvt. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot OHLCVT Market Data","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"description":"OHLCVT data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpotOhlcvtEntity"}}}}]},"example":{"data":[{"date":"2026-09-29T12:00:00.000Z","open":90125.5,"high":90340.75,"low":89980.25,"close":90210,"vwap":90150.3,"volume":45.82,"buy_volume":25.5,"sell_volume":20.32,"quote_volume":4130280,"buy_quote_volume":2298825,"sell_quote_volume":1831455,"trades_count":312,"buy_trades_count":175,"sell_trades_count":137,"first_trade_id":"5230471001","last_trade_id":"3847291312","data_source":"rest","quote_currency":"USDT"},{"date":"2026-09-29T12:01:00.000Z","open":90210,"high":90415,"low":90150,"close":90380.5,"vwap":90285.2,"volume":38.15,"buy_volume":22.1,"sell_volume":16.05,"quote_volume":3444382,"buy_quote_volume":1995303,"sell_quote_volume":1449079,"trades_count":248,"buy_trades_count":140,"sell_trades_count":108,"first_trade_id":"3847291313","last_trade_id":"3847291560","data_source":"rest","quote_currency":"USDT"},{"date":"2026-09-29T12:02:00.000Z","open":90380.5,"high":90425,"low":90200,"close":90275,"vwap":90310.8,"volume":29.63,"buy_volume":14.2,"sell_volume":15.43,"quote_volume":2675507,"buy_quote_volume":1282413,"sell_quote_volume":1393094,"trades_count":195,"buy_trades_count":92,"sell_trades_count":103,"first_trade_id":"3847291561","last_trade_id":"3847291755","data_source":"rest","quote_currency":"USDT"}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA5LTI5IDEyOjAyOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot OHLCVT Market Data","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results"},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/spot/ticker":{"get":{"description":"Ticker-state bars per UTC bucket: open/high/low/close of last trade price, best bid, best ask, bid-ask spread, best bid size, best ask size and total_liquidity, with *_avg values and update counts, plus rolling 24-hour state fields. Coarser buckets use first open, maximum high, minimum low and last close; *_avg is the unweighted mean of the minute averages; ticker_updates_count and quote_updates_count are summed. The rolling 24-hour fields come from the final minute of the bucket. Trade-only minutes (quote_updates_count = 0) are included and serialize their bid/ask fields as 0, which can also pull coarser bid/ask lows and averages toward 0; use spot.level1 for quote statistics.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end (or now); omitted end is open-ended. Resolutions 1m, 5m, 15m, 1h, 4h and 1d (REST default 1m), aligned to UTC (4h buckets start at 00:00, 04:00, ... UTC). Buckets without a stored source minute are absent; there is no gap filling. Pass exchange and instrument_name. limit counts buckets; follow meta.next_cursor and keep sort_dir constant within a paginated scan.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nAbsolute best ask minus best bid in quote currency, not basis points or a percentage.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD. total_liquidity is best bid size plus best ask size.\n\nvolume_24h (base asset), quote_volume_24h (quote asset), high_24h and low_24h are the rolling 24-hour state at the final minute of the bucket, not a sum over the requested window. Do not add them across buckets.\n\nprice_change_24h_pct is a fraction, not percentage points: 0.0235 means +2.35%.\n\nbid_ask_spread_low / bid_ask_spread_high of a minute (0 to 1, higher = steadier spread); at coarser resolutions the mean of the minute ratios.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.ticker. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Ticker History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"date":"2026-09-29T12:00:00.000Z","last_price_open":90125.5,"last_price_high":90340.75,"last_price_low":89980.25,"last_price_close":90210,"bid_price_open":90124,"bid_price_high":90339,"bid_price_low":89979,"bid_price_close":90209,"ask_price_open":90126,"ask_price_high":90341,"ask_price_low":89981,"ask_price_close":90211,"bid_ask_spread_open":2,"bid_ask_spread_high":5,"bid_ask_spread_low":0.5,"bid_ask_spread_close":2,"bid_ask_spread_avg":1.8,"bid_size_open":0.5,"bid_size_high":2,"bid_size_low":0.1,"bid_size_close":0.8,"bid_size_avg":0.6,"ask_size_open":0.4,"ask_size_high":1.5,"ask_size_low":0.05,"ask_size_close":0.7,"ask_size_avg":0.5,"total_liquidity_open":0.9,"total_liquidity_high":3.5,"total_liquidity_low":0.15,"total_liquidity_close":1.5,"total_liquidity_avg":1.1,"volume_24h":15230.5,"quote_volume_24h":1373250000,"high_24h":91200,"low_24h":88500,"price_change_24h_pct":0.0235,"ticker_updates_count":1200,"quote_updates_count":800,"spread_stability_ratio":0.1,"quote_currency":"USDT"},{"date":"2026-09-29T12:01:00.000Z","last_price_open":90210,"last_price_high":90415,"last_price_low":90150,"last_price_close":90380.5,"bid_price_open":90209,"bid_price_high":90414,"bid_price_low":90149,"bid_price_close":90379,"ask_price_open":90211,"ask_price_high":90416,"ask_price_low":90151,"ask_price_close":90381,"bid_ask_spread_open":2,"bid_ask_spread_high":4,"bid_ask_spread_low":1,"bid_ask_spread_close":2,"bid_ask_spread_avg":1.9,"bid_size_open":0.8,"bid_size_high":1.8,"bid_size_low":0.2,"bid_size_close":0.6,"bid_size_avg":0.7,"ask_size_open":0.7,"ask_size_high":1.2,"ask_size_low":0.1,"ask_size_close":0.5,"ask_size_avg":0.55,"total_liquidity_open":1.5,"total_liquidity_high":3,"total_liquidity_low":0.3,"total_liquidity_close":1.1,"total_liquidity_avg":1.25,"volume_24h":15245.2,"quote_volume_24h":1374580000,"high_24h":91200,"low_24h":88500,"price_change_24h_pct":0.0238,"ticker_updates_count":1150,"quote_updates_count":780,"spread_stability_ratio":0.25,"quote_currency":"USDT"}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA5LTI5IDEyOjAxOjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Ticker History","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results"},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/spot/trades":{"get":{"description":"All retained spot trade records, not a large-trade feed: trade_id, price, amount, quote_amount and direction, plus an attached quote snapshot (bid/ask price and size). Instrument mode selects one pair by instrument_name; currency mode selects every pair of a base currency. exchange is optional in both modes. Filters: quote_currency, direction, min_amount, min_quote_amount.\n\nStored trade event time. timestamp keeps milliseconds; date is the same time truncated to the second (.000Z), so order and paginate on timestamp. Not Laevitas ingestion or publication time.\n\nInclusive timestamp start/end. Omitted start defaults to 24 hours before end (or now); currency mode without end ends now. Default order is timestamp ASC in instrument mode and DESC in currency mode. Timestamp order paginates with a (timestamp, trade_id) cursor, so trades sharing a millisecond are not skipped; amount, price and quote_amount orders use an offset cursor that can shift if trades arrive between pages. top_n returns the N largest by the sort field (DESC) and disables the cursor.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nQuote-asset notional (USDT for BTCUSDT, USD for BTC-USD), not converted to or certified as USD. Convert before adding across quote currencies.\n\nAggressor (taker) side: buy when the buyer took the ask, sell when the seller hit the bid. Verified on binance and coinbase; other venues report their own taker-side field.\n\nbid_price/ask_price/bid_size/ask_size are the same venue's best bid/ask and displayed sizes from its ticker stream as of the trade, refreshed every few seconds: a near-time reference rather than the exact book at execution. For execution-level spread or slippage analysis use spot.level1 or the order-book products.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.trades. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Trade History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT). Either instrument_name or currency is recommended.","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL spot pairs for this currency. Either currency or instrument_name is recommended.","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}},{"name":"direction","required":false,"in":"query","description":"Filter by aggressor (taker) side","schema":{"type":"string","enum":["buy","sell"]}},{"name":"min_amount","required":false,"in":"query","description":"Minimum trade amount (in base currency). Filters out dust trades.","schema":{"example":0.01,"type":"number"}},{"name":"min_quote_amount","required":false,"in":"query","description":"Minimum trade value in quote currency. Filters out small trades.","schema":{"example":100,"type":"number"}},{"name":"sort","required":false,"in":"query","description":"Sort field. Default: timestamp.","schema":{"default":"timestamp","type":"string","enum":["timestamp","amount","price","quote_amount"]}},{"name":"top_n","required":false,"in":"query","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.","schema":{"example":20,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"timestamp":1790685000123,"date":"2026-09-29T12:30:00.000Z","trade_id":"5230471001","exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","quote_currency":"USDT","direction":"buy","amount":0.125,"price":90250.5,"quote_amount":11281.31,"bid_price":90249,"ask_price":90251,"bid_size":0.5,"ask_size":0.4},{"timestamp":1790685001456,"date":"2026-09-29T12:30:01.000Z","trade_id":"5230471002","exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","quote_currency":"USDT","direction":"sell","amount":0.05,"price":90248,"quote_amount":4512.4,"bid_price":90247,"ask_price":90249,"bid_size":0.3,"ask_size":0.6},{"timestamp":1790685002789,"date":"2026-09-29T12:30:02.000Z","trade_id":"5230471003","exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","quote_currency":"USDT","direction":"buy","amount":1.5,"price":90255,"quote_amount":135382.5,"bid_price":90254,"ask_price":90256,"bid_size":0.8,"ask_size":0.3}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3OTA2ODUwMDI3ODksInRyYWRlX2lkIjoiNTIzMDQ3MTAwMyJ9"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Trade History","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction. Defaults to ASC for instrument mode, DESC for currency mode."},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT). Either instrument_name or currency is recommended."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, ETH). Returns trades across ALL spot pairs for this currency. Either currency or instrument_name is recommended."},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"},"direction":{"type":"string","enum":["buy","sell"],"description":"Filter by aggressor (taker) side"},"min_amount":{"example":0.01,"type":"number","description":"Minimum trade amount (in base currency). Filters out dust trades."},"min_quote_amount":{"example":100,"type":"number","description":"Minimum trade value in quote currency. Filters out small trades."},"sort":{"default":"timestamp","type":"string","enum":["timestamp","amount","price","quote_amount"],"description":"Sort field. Default: timestamp."},"top_n":{"example":20,"type":"number","description":"Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned."}}}}}}}},"/api/v1/spot/volume":{"get":{"description":"Per UTC bucket: the final rolling 24-hour counters volume_24h and quote_volume_24h from the last ticker minute of the bucket, alongside interval buy/sell base volume, buy/sell quote volume and buy/sell trade counts summed from trade candles (volume, quote_volume and trades_count are buy + sell). Rows exist only for buckets with a ticker row; a ticker bucket without candles reports 0 interval volume. Without exchange, REST returns one row per exchange per bucket.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end (or now); omitted end is open-ended. Resolutions 1m, 5m, 15m, 1h, 4h and 1d (REST default 1m), aligned to UTC (4h buckets start at 00:00, 04:00, ... UTC). Buckets without a stored source minute are absent; there is no gap filling. instrument_name is required; exchange is optional on REST. limit counts buckets; follow meta.next_cursor and keep sort_dir constant within a paginated scan.\n\nRolling 24-hour state, not a sum over the requested window. Base-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nRolling 24-hour state, not a sum over the requested window. Quote-asset notional (USDT for BTCUSDT, USD for BTC-USD), not converted to or certified as USD. Convert before adding across quote currencies.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nQuote-asset notional (USDT for BTCUSDT, USD for BTC-USD), not converted to or certified as USD. Convert before adding across quote currencies.\n\nbuy_*/sell_* split interval activity by the aggressor side of each trade.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.volume. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Volume Stats","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"description":"Successfully retrieved spot volume data","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"date":"2026-09-29T12:00:00.000Z","volume_24h":15230.5,"quote_volume_24h":1373250000,"buy_volume":25.5,"sell_volume":20.32,"volume":45.82,"buy_quote_volume":2298825,"sell_quote_volume":1831455,"quote_volume":4130280,"buy_trades_count":175,"sell_trades_count":137,"trades_count":312,"quote_currency":"USDT"},{"date":"2026-09-29T12:01:00.000Z","volume_24h":15245.2,"quote_volume_24h":1374580000,"buy_volume":22.1,"sell_volume":16.05,"volume":38.15,"buy_quote_volume":1995303,"sell_quote_volume":1449079,"quote_volume":3444382,"buy_trades_count":140,"sell_trades_count":108,"trades_count":248,"quote_currency":"USDT"},{"date":"2026-09-29T12:02:00.000Z","volume_24h":15260.8,"quote_volume_24h":1375920000,"buy_volume":14.2,"sell_volume":15.43,"volume":29.63,"buy_quote_volume":1282413,"sell_quote_volume":1393094,"quote_volume":2675507,"buy_trades_count":92,"sell_trades_count":103,"trades_count":195,"quote_currency":"USDT"}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA5LTI5IDEyOjAyOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Volume Stats","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results"},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/spot/snapshot":{"get":{"description":"Cross-instrument chain of ticker-state rows for one exchange, optionally filtered by currency and quote_currency, at one minute or bucket. Each row has the spot.ticker field set: last/bid/ask/spread/size/total_liquidity OHLC and averages, update counts and rolling 24-hour state (price_change_24h_pct is a fraction). Trade-candle fields (open/close/vwap/volume/trade counts) are not returned; use spot.ohlcvt. meta.date and meta.next_date give the selected and the next minute or bucket.\n\nRow date and meta.date are the selected UTC minute or bucket start; meta.next_date is the following minute or bucket start. Not an exchange publication time.\n\nAt 1m (default), date must match a stored minute exactly; there is no nearest-minute fallback, and a date-only value means 00:00:00 UTC. Omitted date selects the latest stored minute (or the bucket containing it) for the exchange and filters since the start of the previous UTC day; that newest minute can be only partly populated while ingestion completes. At coarser resolutions, date selects the whole containing UTC bucket, including observations AFTER date; it is not an as-of cutoff. REST returns all matching rows without an instrument limit.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nAbsolute best ask minus best bid in quote currency, not basis points or a percentage.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD. total_liquidity is best bid size plus best ask size.\n\nvolume_24h (base asset), quote_volume_24h (quote asset), high_24h and low_24h are the rolling 24-hour state at the final minute of the bucket, not a sum over the requested window. Do not add them across buckets.\n\nprice_change_24h_pct is a fraction, not percentage points: 0.0235 means +2.35%.\n\nbid_ask_spread_low / bid_ask_spread_high of a minute (0 to 1, higher = steadier spread); at coarser resolutions the mean of the minute ratios.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.snapshot. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Snapshot","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency filter (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency filter (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}},{"name":"date","required":false,"in":"query","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for latest available snapshot.","schema":{"format":"date-time","example":"2025-01-15T15:09:00Z","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for the snapshot data. 1m returns one exact minute; coarser values aggregate a UTC bucket.","schema":{"default":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","date":"2026-09-29T12:00:00.000Z","last_price_open":90125.5,"last_price_high":90340.75,"last_price_low":89980.25,"last_price_close":90210,"bid_price_open":90124,"bid_price_high":90339,"bid_price_low":89979,"bid_price_close":90209,"ask_price_open":90126,"ask_price_high":90341,"ask_price_low":89981,"ask_price_close":90211,"bid_ask_spread_open":2,"bid_ask_spread_high":5,"bid_ask_spread_low":0.5,"bid_ask_spread_close":2,"bid_ask_spread_avg":1.8,"bid_size_open":0.5,"bid_size_high":2,"bid_size_low":0.1,"bid_size_close":0.8,"bid_size_avg":0.6,"ask_size_open":0.4,"ask_size_high":1.5,"ask_size_low":0.05,"ask_size_close":0.7,"ask_size_avg":0.5,"total_liquidity_open":0.9,"total_liquidity_high":3.5,"total_liquidity_low":0.15,"total_liquidity_close":1.5,"total_liquidity_avg":1.1,"volume_24h":15230.5,"quote_volume_24h":1373250000,"high_24h":91200,"low_24h":88500,"price_change_24h_pct":0.0235,"ticker_updates_count":1200,"quote_updates_count":800,"spread_stability_ratio":0.1,"quote_currency":"USDT"}],"meta":{"date":"2026-09-29T12:00:00.000Z","next_date":"2026-09-29T12:01:00.000Z"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Snapshot","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"currency":{"example":"BTC","type":"string","description":"Base currency filter (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency filter (e.g., USDT, USDC, USD)"},"date":{"format":"date-time","example":"2025-01-15T15:09:00Z","type":"string","description":"At 1m, exact retained minute (use :00 seconds), not nearest minute. At coarser resolutions selects the entire containing UTC bucket, including observations after date; not an as-of cutoff. Omit for latest available snapshot."},"resolution":{"default":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for the snapshot data. 1m returns one exact minute; coarser values aggregate a UTC bucket."}},"required":["exchange"]}}}}}},"/api/v1/spot/level1":{"get":{"description":"Same fields and aggregation as spot.ticker, restricted to minutes with at least one quote update (quote_updates_count > 0), so trade-only minutes do not contribute zero bid/ask values. Coarser buckets use first open, maximum high, minimum low and last close; *_avg is the unweighted mean of the minute averages; ticker_updates_count and quote_updates_count are summed. Top of book only: no depth, order IDs or quote-by-quote replay; historical displayed size does not guarantee a fill. Default limit 100.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end (or now); omitted end is open-ended. Resolutions 1m, 5m, 15m, 1h, 4h and 1d (REST default 1m), aligned to UTC (4h buckets start at 00:00, 04:00, ... UTC). Buckets without a stored source minute are absent; there is no gap filling. Pass exchange and instrument_name. limit counts buckets; follow meta.next_cursor and keep sort_dir constant within a paginated scan.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nAbsolute best ask minus best bid in quote currency, not basis points or a percentage.\n\nBase-asset quantity (BTC for BTCUSDT), not quote notional and not USD. total_liquidity is best bid size plus best ask size.\n\nvolume_24h (base asset), quote_volume_24h (quote asset), high_24h and low_24h are the rolling 24-hour state at the final minute of the bucket, not a sum over the requested window. Do not add them across buckets.\n\nprice_change_24h_pct is a fraction, not percentage points: 0.0235 means +2.35%.\n\nbid_ask_spread_low / bid_ask_spread_high of a minute (0 to 1, higher = steadier spread); at coarser resolutions the mean of the minute ratios.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.level1. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot Level 1","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"date":"2026-09-29T12:00:00.000Z","last_price_open":90125.5,"last_price_high":90340.75,"last_price_low":89980.25,"last_price_close":90210,"bid_price_open":90124,"bid_price_high":90339,"bid_price_low":89979,"bid_price_close":90209,"ask_price_open":90126,"ask_price_high":90341,"ask_price_low":89981,"ask_price_close":90211,"bid_ask_spread_open":2,"bid_ask_spread_high":5,"bid_ask_spread_low":0.5,"bid_ask_spread_close":2,"bid_ask_spread_avg":1.8,"bid_size_open":0.5,"bid_size_high":2,"bid_size_low":0.1,"bid_size_close":0.8,"bid_size_avg":0.6,"ask_size_open":0.4,"ask_size_high":1.5,"ask_size_low":0.05,"ask_size_close":0.7,"ask_size_avg":0.5,"total_liquidity_open":0.9,"total_liquidity_high":3.5,"total_liquidity_low":0.15,"total_liquidity_close":1.5,"total_liquidity_avg":1.1,"volume_24h":15230.5,"quote_volume_24h":1373250000,"high_24h":91200,"low_24h":88500,"price_change_24h_pct":0.0235,"ticker_updates_count":1200,"quote_updates_count":800,"spread_stability_ratio":0.1,"quote_currency":"USDT"}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA5LTI5IDEyOjAwOjAwIn0="}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot Level 1","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results"},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/spot/l2-orderbook":{"get":{"description":"Per-UTC-bucket summaries of order-book snapshots (about one per second): open/high/low/close and mean of the summed top-10/20/50/100 bid and ask sizes (bid_liq_*, ask_liq_*), of depth imbalance and of microprice, plus snapshot_count. Coarser buckets use first open, maximum high, minimum low, last close, the mean of the minute averages and the summed snapshot_count. microprice is the top-of-book size-weighted price (best_bid × best_ask_size + best_ask × best_bid_size) / (best_bid_size + best_ask_size), in quote currency; not a depth-weighted mid.\n\nUTC interval start. 15:09 labels [15:09:00, 15:10:00) at 1m, not a quote at exactly 15:09:00.\n\nstart/end include matching source minutes before aggregation. Partial edge buckets can differ between windows. For a full hour use :00:00 through :59:59 UTC, not an end at the next hour. Omitted start defaults to 24 hours before end (or now); omitted end is open-ended. Resolutions 1m, 5m, 15m, 1h, 4h and 1d (REST default 1m), aligned to UTC (4h buckets start at 00:00, 04:00, ... UTC). Buckets without a stored source minute are absent; there is no gap filling. Pass exchange and instrument_name. limit counts buckets; follow meta.next_cursor and keep sort_dir constant within a paginated scan.\n\nSum of displayed sizes at the top N levels. Base-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nDimensionless (bid − ask) / (bid + ask) of the summed sizes at that depth, in [−1, 1]; positive means more resting bid size.\n\nPrice in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets.\n\nNumber of order-book snapshots summarized in the bucket.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.l2_orderbook. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot L2 Orderbook","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"description":"L2 orderbook data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"date":"2026-09-29T12:00:00.000Z","exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","quote_currency":"USDT","bid_liq_10_open":0.301,"bid_liq_10_high":0.55,"bid_liq_10_low":0.15,"bid_liq_10_close":0.42,"bid_liq_10_avg":0.35,"bid_liq_20_open":0.359,"bid_liq_20_high":0.8,"bid_liq_20_low":0.2,"bid_liq_20_close":0.5,"bid_liq_20_avg":0.45,"bid_liq_50_open":7.831,"bid_liq_50_high":10.5,"bid_liq_50_low":5.2,"bid_liq_50_close":8.1,"bid_liq_50_avg":7.5,"bid_liq_100_open":12.891,"bid_liq_100_high":18,"bid_liq_100_low":9,"bid_liq_100_close":14.5,"bid_liq_100_avg":13.2,"ask_liq_10_open":5.375,"ask_liq_10_high":6.2,"ask_liq_10_low":4.1,"ask_liq_10_close":5.1,"ask_liq_10_avg":5,"ask_liq_20_open":6.398,"ask_liq_20_high":8,"ask_liq_20_low":4.5,"ask_liq_20_close":6,"ask_liq_20_avg":5.8,"ask_liq_50_open":18.966,"ask_liq_50_high":22,"ask_liq_50_low":15,"ask_liq_50_close":19.5,"ask_liq_50_avg":18.2,"ask_liq_100_open":40.834,"ask_liq_100_high":50,"ask_liq_100_low":30,"ask_liq_100_close":42,"ask_liq_100_avg":39.5,"imbalance_10_open":-0.894,"imbalance_10_high":-0.5,"imbalance_10_low":-0.95,"imbalance_10_close":-0.82,"imbalance_10_avg":-0.78,"imbalance_20_open":-0.894,"imbalance_20_high":-0.5,"imbalance_20_low":-0.95,"imbalance_20_close":-0.82,"imbalance_20_avg":-0.78,"imbalance_50_open":-0.416,"imbalance_50_high":-0.1,"imbalance_50_low":-0.6,"imbalance_50_close":-0.35,"imbalance_50_avg":-0.38,"imbalance_100_open":-0.52,"imbalance_100_high":-0.2,"imbalance_100_low":-0.7,"imbalance_100_close":-0.45,"imbalance_100_avg":-0.48,"microprice_open":90125.9,"microprice_high":90340,"microprice_low":89980,"microprice_close":90210.5,"microprice_avg":90165.2,"snapshot_count":60}],"meta":{"next_cursor":"eyJtaW51dGUiOiIyMDI2LTA5LTI5IDEyOjAwOjAwIn0="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot L2 Orderbook","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results"},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/spot/l2-orderbook-raw":{"get":{"description":"Individual stored order-book snapshots, not aggregated: bids and asks as up to 100 {price, size} levels ordered best first, depth (levels present), precomputed summed bid/ask liquidity at 10/20/50/100 levels, imbalance at each depth and microprice. Snapshot books, not incremental deltas, order IDs or queue positions. microprice is the top-of-book size-weighted price (best_bid × best_ask_size + best_ask × best_bid_size) / (best_bid_size + best_ask_size), in quote currency; not a depth-weighted mid.\n\nStored snapshot time; timestamp keeps milliseconds and date is truncated to the second. Whether it is exchange time or Laevitas receipt time is not verified.\n\nInclusive timestamp start/end; omitted start defaults to 24 hours before end (or now). instrument_name is required; without exchange, REST merges snapshots from every venue. The cursor resumes after (timestamp, exchange, instrument_name), so snapshots sharing a millisecond across venues or instruments are not skipped; follow meta.next_cursor.\n\nprice: Price in quote currency per one unit of base asset (USDT per BTC for binance BTCUSDT, USD per BTC for coinbase BTC-USD). Not converted to USD; USDT, USDC and USD pairs are separate markets. size: Base-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nSum of displayed sizes at the top N levels. Base-asset quantity (BTC for BTCUSDT), not quote notional and not USD.\n\nDimensionless (bid − ask) / (bid + ask) of the summed sizes at that depth, in [−1, 1]; positive means more resting bid size.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.l2_orderbook_raw. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"Spot L2 Orderbook Raw","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (e.g., binance, coinbase, bybit, okx)","schema":{"example":"binance","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)","schema":{"example":"BTCUSDT","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Quote currency (e.g., USDT, USDC, USD)","schema":{"example":"USDT","type":"string"}}],"responses":{"200":{"description":"Raw L2 orderbook snapshots successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array"}}}]},"example":{"data":[{"timestamp":1790685000123,"date":"2026-09-29T12:30:00.000Z","exchange":"binance","instrument_name":"BTCUSDT","currency":"BTC","quote_currency":"USDT","depth":100,"bids":[{"price":90209,"size":0.169},{"price":90208.5,"size":0.002}],"asks":[{"price":90211,"size":3.085},{"price":90211.5,"size":0.002}],"bid_liquidity_10":0.301,"ask_liquidity_10":5.375,"bid_liquidity_20":0.359,"ask_liquidity_20":6.398,"bid_liquidity_50":7.831,"ask_liquidity_50":18.966,"bid_liquidity_100":12.891,"ask_liquidity_100":40.834,"imbalance_10":-0.894,"imbalance_20":-0.894,"imbalance_50":-0.416,"imbalance_100":-0.52,"microprice":90210.905}],"meta":{"next_cursor":"eyJ0aW1lc3RhbXAiOjE3OTA2ODUwMDAxMjMsImV4Y2hhbmdlIjoiYmluYW5jZSIsImluc3RydW1lbnRfbmFtZSI6IkJUQ1VTRFQifQ=="}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Spot L2 Orderbook Raw Snapshots","tags":["Spot"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"example":"binance","type":"string","description":"Exchange name (e.g., binance, coinbase, bybit, okx)"},"instrument_name":{"example":"BTCUSDT","type":"string","description":"Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)"},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USDT","type":"string","description":"Quote currency (e.g., USDT, USDC, USD)"}},"required":["instrument_name"]}}}}}},"/api/v1/analytics/realized-volatility":{"get":{"description":"Returns annualised realised volatility metrics (rv_annualized expressed as a percentage, e.g. 38.76 = 38.76%) from precomputed cross-asset analytics. Snapshot mode is used when start/end are omitted; historical mode is used when start and/or end are provided. If frequency, window_days, and estimator are omitted, all available variants for the requested instrument are returned.","operationId":"getRealizedVolatility","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name. Required. Case-insensitive. Example data includes Deribit, Binance, and Hyperliquid instruments.","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full instrument identifier. Required. Case-insensitive.","schema":{"example":"BTC-PERPETUAL","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency filter. Case-insensitive.","schema":{"example":"BTC","type":"string"}},{"name":"frequency","required":false,"in":"query","description":"Sampling frequency used to compute realised volatility.","schema":{"example":"daily","type":"string","enum":["daily","hourly"]}},{"name":"window_days","required":false,"in":"query","description":"Realised volatility lookback window in days.","schema":{"minimum":1,"example":30,"type":"number","enum":[7,30,60,90,180,365]}},{"name":"estimator","required":false,"in":"query","description":"Realised volatility estimator filter.","schema":{"example":"close_to_close","type":"string","enum":["close_to_close","parkinson","garman_klass"]}},{"name":"date","required":false,"in":"query","description":"Snapshot point-in-time in ISO 8601 format (UTC). If omitted in snapshot mode, returns latest rows.","schema":{"format":"date-time","example":"2026-04-27T12:35:30Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). Providing start or end enables historical mode.","schema":{"format":"date-time","example":"2026-04-27T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Providing start or end enables historical mode.","schema":{"format":"date-time","example":"2026-04-28T00:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of historical records to return (1-1000). Ignored in snapshot mode.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next historical page. Use meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by ts (historical mode only). ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"Realised volatility data successfully retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponse"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RealizedVolatilityEntity"}}}}]},"example":{"data":[{"date":"2026-04-27T12:35:30.000Z","exchange":"deribit","currency":"BTC","instrument_name":"BTC-PERPETUAL","frequency":"daily","window_days":30,"estimator":"close_to_close","rv_annualized":35.73,"sample_count":30},{"date":"2026-04-27T12:35:30.000Z","exchange":"deribit","currency":"BTC","instrument_name":"BTC-PERPETUAL","frequency":"daily","window_days":30,"estimator":"parkinson","rv_annualized":39.11,"sample_count":30},{"date":"2026-04-27T12:35:30.000Z","exchange":"deribit","currency":"BTC","instrument_name":"BTC-PERPETUAL","frequency":"daily","window_days":30,"estimator":"garman_klass","rv_annualized":39.85,"sample_count":30}],"meta":{"next_cursor":null}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Realized Volatility","tags":["Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name. Required. Case-insensitive. Example data includes Deribit, Binance, and Hyperliquid instruments."},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument identifier. Required. Case-insensitive."},"currency":{"example":"BTC","type":"string","description":"Base currency filter. Case-insensitive."},"frequency":{"example":"daily","type":"string","enum":["daily","hourly"],"description":"Sampling frequency used to compute realised volatility."},"window_days":{"minimum":1,"example":30,"type":"number","enum":[7,30,60,90,180,365],"description":"Realised volatility lookback window in days."},"estimator":{"example":"close_to_close","type":"string","enum":["close_to_close","parkinson","garman_klass"],"description":"Realised volatility estimator filter."},"date":{"format":"date-time","example":"2026-04-27T12:35:30Z","type":"string","description":"Snapshot point-in-time in ISO 8601 format (UTC). If omitted in snapshot mode, returns latest rows."},"start":{"format":"date-time","example":"2026-04-27T00:00:00Z","type":"string","description":"Start date in ISO 8601 format (UTC). Providing start or end enables historical mode."},"end":{"format":"date-time","example":"2026-04-28T00:00:00Z","type":"string","description":"End date in ISO 8601 format (UTC). Providing start or end enables historical mode."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of historical records to return (1-1000). Ignored in snapshot mode."},"cursor":{"type":"string","description":"Pagination cursor for fetching the next historical page. Use meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by ts (historical mode only). ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/instruments":{"get":{"description":"Returns a paginated list of instrument contract specifications across all exchanges and market types. Filter by exchange, market_type, base_currency, quote_currency, status, margin_type, option_type, expiry range, or partial instrument name match. Returns contract reference data including tick size, lot size, leverage, expiry, etc.","operationId":"getInstruments","parameters":[{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, bullish, nado, coinbase, paradex)","schema":{"example":"deribit","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Filter by market type","schema":{"example":"perpetual","type":"string","enum":["spot","perpetual","future","option"]}},{"name":"base_currency","required":false,"in":"query","description":"Filter by base currency (e.g., BTC, ETH, SOL)","schema":{"example":"BTC","type":"string"}},{"name":"quote_currency","required":false,"in":"query","description":"Filter by quote currency (e.g., USD, USDT, USDC)","schema":{"example":"USD","type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by instrument status. Default 'active'. Pass 'all' to include all statuses.","schema":{"default":"active","example":"active","type":"string","enum":["active","expired","delisted","suspended","all"]}},{"name":"instrument_name","required":false,"in":"query","description":"Filter by instrument name (partial match, case-insensitive)","schema":{"example":"BTC","type":"string"}},{"name":"margin_type","required":false,"in":"query","description":"Filter by margin type: linear or inverse","schema":{"example":"linear","type":"string"}},{"name":"option_type","required":false,"in":"query","description":"Filter by option type: call or put","schema":{"example":"call","type":"string"}},{"name":"asset_class","required":false,"in":"query","description":"Filter by asset class. Defaults to all classes. Use \"equity\"/\"commodity\"/\"forex\"/\"index\" to scope to non-crypto perps (NVDA/TSLA equity perps, GOLD/OIL commodity perps, EURUSD FX perps, etc.).","schema":{"example":"equity","type":"string","enum":["crypto","equity","commodity","forex","index"]}},{"name":"sub_exchange","required":false,"in":"query","description":"Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges (binance/bybit/okx/kraken/etc.).","schema":{"example":"xyz","type":"string"}},{"name":"expiry_from","required":false,"in":"query","description":"Filter instruments with expiry_date >= this value (ISO 8601 datetime)","schema":{"example":"2026-01-01T00:00:00Z","type":"string"}},{"name":"expiry_to","required":false,"in":"query","description":"Filter instruments with expiry_date <= this value (ISO 8601 datetime)","schema":{"example":"2026-12-31T23:59:59Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in next_cursor from the previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of instrument metadata","content":{"application/json":{"example":{"data":[{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","market_type":"perpetual","base_currency":"BTC","quote_currency":"USD","settlement_currency":"BTC","margin_type":"inverse","contract_multiplier":1,"contract_value":10,"contract_value_currency":"USD","tick_size":0.5,"lot_size":1,"min_order_size":1,"option_type":"","exercise_style":"","strike":null,"expiry_date":null,"contract_cycle":"","funding_interval_hours":8,"delivery_date":null,"underlying_index":"btc_usd","max_leverage":50,"price_precision":1,"quantity_precision":0,"sub_exchange":"","asset_class":"crypto","max_position_notional":null,"status":"active","listing_date":"2020-01-01T00:00:00.000Z","updated_at":"2026-04-02T12:00:00.000Z","created_at":"2020-01-01T00:00:00.000Z"}],"meta":{"next_cursor":"eyJvZmZzZXQiOjEwMH0=","total":15000,"count":1}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"List Instruments","tags":["Instruments"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, bullish, nado, coinbase, paradex)"},"market_type":{"example":"perpetual","type":"string","enum":["spot","perpetual","future","option"],"description":"Filter by market type"},"base_currency":{"example":"BTC","type":"string","description":"Filter by base currency (e.g., BTC, ETH, SOL)"},"quote_currency":{"example":"USD","type":"string","description":"Filter by quote currency (e.g., USD, USDT, USDC)"},"status":{"default":"active","example":"active","type":"string","enum":["active","expired","delisted","suspended","all"],"description":"Filter by instrument status. Default 'active'. Pass 'all' to include all statuses."},"instrument_name":{"example":"BTC","type":"string","description":"Filter by instrument name (partial match, case-insensitive)"},"margin_type":{"example":"linear","type":"string","description":"Filter by margin type: linear or inverse"},"option_type":{"example":"call","type":"string","description":"Filter by option type: call or put"},"asset_class":{"example":"equity","type":"string","enum":["crypto","equity","commodity","forex","index"],"description":"Filter by asset class. Defaults to all classes. Use \"equity\"/\"commodity\"/\"forex\"/\"index\" to scope to non-crypto perps (NVDA/TSLA equity perps, GOLD/OIL commodity perps, EURUSD FX perps, etc.)."},"sub_exchange":{"example":"xyz","type":"string","description":"Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges (binance/bybit/okx/kraken/etc.)."},"expiry_from":{"example":"2026-01-01T00:00:00Z","type":"string","description":"Filter instruments with expiry_date >= this value (ISO 8601 datetime)"},"expiry_to":{"example":"2026-12-31T23:59:59Z","type":"string","description":"Filter instruments with expiry_date <= this value (ISO 8601 datetime)"},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in next_cursor from the previous response."}}}}}}}},"/api/v1/instruments/detail":{"get":{"description":"Returns the full contract specification for a single instrument, including the raw exchange API data. Use this to get complete reference data for a specific instrument. Some exchanges (Binance, Bybit) list spot and perpetual instruments under the same name (e.g. BTCUSDT): pass market_type to select one, otherwise the derivative is returned in preference to spot.","operationId":"getInstrumentDetail","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name (e.g., deribit, binance, okx)","schema":{"example":"deribit","type":"string"}},{"name":"instrument_name","required":true,"in":"query","description":"Full instrument name (e.g., BTC-PERPETUAL, BTCUSDT, BTC-9OCT26-90000-C)","schema":{"example":"BTC-PERPETUAL","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Market type of the instrument. Binance and Bybit list spot and perpetual instruments under the same name (e.g., BTCUSDT); pass this to select one. When omitted, a derivative is preferred over spot.","schema":{"example":"perpetual","type":"string","enum":["spot","perpetual","future","option"]}}],"responses":{"200":{"description":"Full instrument metadata including raw exchange data","content":{"application/json":{"example":{"data":{"exchange":"deribit","instrument_name":"BTC-PERPETUAL","market_type":"perpetual","base_currency":"BTC","quote_currency":"USD","settlement_currency":"BTC","margin_type":"inverse","contract_multiplier":1,"contract_value":10,"contract_value_currency":"USD","tick_size":0.5,"lot_size":1,"min_order_size":1,"option_type":"","exercise_style":"","strike":null,"expiry_date":null,"contract_cycle":"","funding_interval_hours":8,"delivery_date":null,"underlying_index":"btc_usd","max_leverage":50,"price_precision":1,"quantity_precision":0,"sub_exchange":"","asset_class":"crypto","max_position_notional":null,"status":"active","listing_date":"2020-01-01T00:00:00.000Z","updated_at":"2026-04-02T12:00:00.000Z","created_at":"2020-01-01T00:00:00.000Z","raw_data":"{\"instrument_name\":\"BTC-PERPETUAL\",\"kind\":\"future\",...}"},"meta":{}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"404":{"description":"Not Found - Instrument not found","content":{"application/json":{"example":{"statusCode":404,"message":"No instrument found for NONEXISTENT on exchange deribit","error":"Not Found"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Instrument Detail","tags":["Instruments"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name (e.g., deribit, binance, okx)"},"instrument_name":{"example":"BTC-PERPETUAL","type":"string","description":"Full instrument name (e.g., BTC-PERPETUAL, BTCUSDT, BTC-9OCT26-90000-C)"},"market_type":{"example":"perpetual","type":"string","enum":["spot","perpetual","future","option"],"description":"Market type of the instrument. Binance and Bybit list spot and perpetual instruments under the same name (e.g., BTCUSDT); pass this to select one. When omitted, a derivative is preferred over spot."}},"required":["exchange","instrument_name"]}}}}}},"/api/v1/macro/catalog":{"get":{"description":"Discovery endpoint for non-crypto perpetuals: equity perps (NVDA, TSLA, MSTR, AAPL, …), commodity perps (GOLD, SILVER, OIL/CL, NATGAS, …), FX perps (EURUSD, GBPUSD, JPYUSD, …) and the small index segment. Returns full contract specs (tick_size, lot_size, max_leverage, funding_interval_hours, …).\n\nOnce you have an instrument_name + exchange, pull time-series data from the existing /api/v1/perpetuals/* endpoints — the routes are identical for crypto and macro perps:\n\n| Data | Route |\n|---|---|\n| OHLCVT candles (open/high/low/close/volume/trades) | `GET /api/v1/perpetuals/ohlcvt` |\n| Ticker history (mark/index/bid/ask/OI/spread) | `GET /api/v1/perpetuals/ticker-history` |\n| **Funding rate, basis, annualized carry** | `GET /api/v1/perpetuals/carry` |\n| Open interest history | `GET /api/v1/perpetuals/open-interest` |\n| Volume aggregates | `GET /api/v1/perpetuals/volume` |\n| L1 book (best bid/ask) | `GET /api/v1/perpetuals/level1` |\n| L2 orderbook (depth) | `GET /api/v1/perpetuals/orderbook` |\n| Liquidations | `GET /api/v1/perpetuals/liquidations` |\n| Snapshot (latest tick across all instruments) | `GET /api/v1/perpetuals/snapshot` |\n| Reference price | `GET /api/v1/perpetuals/reference-price` |\n| Individual trades (sparse on most macro venues) | `GET /api/v1/perpetuals/trades` |\n\nNote: funding rate lives on `/perpetuals/carry` (alongside basis and annualized carry — these three move together for perp analysis), not on a standalone `/funding` route. The MCP equivalent tool is `get_perpetuals_funding`.","operationId":"getMacroCatalog","parameters":[{"name":"asset_class","required":false,"in":"query","description":"Restrict to a single asset class. Defaults to all non-crypto (equity, commodity, forex, index).","schema":{"example":"equity","type":"string","enum":["equity","commodity","forex","index","crypto"]}},{"name":"market_type","required":false,"in":"query","description":"Restrict to one market_type. Defaults to perpetual (the dominant macro segment).","schema":{"default":"perpetual","example":"perpetual","type":"string","enum":["perpetual","future","spot"]}},{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (binance, bybit, hyperliquid, kraken, okx, nado).","schema":{"example":"hyperliquid","type":"string"}},{"name":"sub_exchange","required":false,"in":"query","description":"Hyperliquid HIP-3 sub-venue: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.","schema":{"example":"xyz","type":"string"}},{"name":"base_currency","required":false,"in":"query","description":"Filter by base currency / underlying ticker (NVDA, TSLA, GOLD, EUR, ...)","schema":{"example":"NVDA","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Partial, case-insensitive instrument-name match (e.g. \"NVDA\" finds xyz:NVDA-USD and PF_NVDAXUSD).","schema":{"example":"NVDA","type":"string"}},{"name":"status","required":false,"in":"query","description":"Instrument status. Default \"active\". Pass \"all\" to include expired/delisted/suspended.","schema":{"default":"active","type":"string","enum":["active","expired","delisted","suspended","all"]}},{"name":"limit","required":false,"in":"query","description":"Records per page (1-1000)","schema":{"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated catalog of macro instruments"},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Macro Catalog","tags":["Macro"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"asset_class":{"example":"equity","type":"string","enum":["equity","commodity","forex","index","crypto"],"description":"Restrict to a single asset class. Defaults to all non-crypto (equity, commodity, forex, index)."},"market_type":{"default":"perpetual","example":"perpetual","type":"string","enum":["perpetual","future","spot"],"description":"Restrict to one market_type. Defaults to perpetual (the dominant macro segment)."},"exchange":{"example":"hyperliquid","type":"string","description":"Filter by exchange (binance, bybit, hyperliquid, kraken, okx, nado)."},"sub_exchange":{"example":"xyz","type":"string","description":"Hyperliquid HIP-3 sub-venue: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges."},"base_currency":{"example":"NVDA","type":"string","description":"Filter by base currency / underlying ticker (NVDA, TSLA, GOLD, EUR, ...)"},"instrument_name":{"example":"NVDA","type":"string","description":"Partial, case-insensitive instrument-name match (e.g. \"NVDA\" finds xyz:NVDA-USD and PF_NVDAXUSD)."},"status":{"default":"active","type":"string","enum":["active","expired","delisted","suspended","all"],"description":"Instrument status. Default \"active\". Pass \"all\" to include expired/delisted/suspended."},"limit":{"default":100,"example":100,"type":"number","description":"Records per page (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response."}}}}}}}},"/api/v1/macro/asset-classes":{"get":{"description":"Returns the four supported non-crypto asset classes (equity, commodity, forex, index) with active-instrument counts per market type and a few example tickers. Cheap dashboard endpoint.","operationId":"getMacroAssetClasses","parameters":[],"responses":{"200":{"description":"Asset class summary"},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Macro Asset Classes","tags":["Macro"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/macro/venues":{"get":{"description":"Per-asset-class venue breakdown. Returns each (asset_class, exchange, sub_exchange, market_type) tuple with active instrument counts. Perpetuals and dated futures appear as separate rows so OKX/Bybit gold weeklies (market_type=future) don't get folded in with their perp counts. Filter by market_type to scope.","operationId":"getMacroVenues","parameters":[{"name":"asset_class","required":false,"in":"query","description":"Restrict to a single asset class. Defaults to all non-crypto.","schema":{"example":"equity","type":"string","enum":["equity","commodity","forex","index"]}},{"name":"market_type","required":false,"in":"query","description":"Restrict to a single market type. Omit to get a row per (exchange, sub_exchange, market_type) tuple.","schema":{"example":"perpetual","type":"string","enum":["perpetual","future","spot"]}}],"responses":{"200":{"description":"Venue breakdown"},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Macro Venues","tags":["Macro"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"asset_class":{"example":"equity","type":"string","enum":["equity","commodity","forex","index"],"description":"Restrict to a single asset class. Defaults to all non-crypto."},"market_type":{"example":"perpetual","type":"string","enum":["perpetual","future","spot"],"description":"Restrict to a single market type. Omit to get a row per (exchange, sub_exchange, market_type) tuple."}}}}}}}},"/api/v1/macro/summary":{"get":{"description":"Top-N most-traded macro instruments per non-crypto asset class over the last 24h, ranked by USD volume. Returns last close, volume_24h_usd, and venue. Defaults to perpetual (the dominant macro segment). Pass market_type=future for dated commodity futures (OKX/Bybit gold weeklies, Bybit XAUT dateds). Use to surface \"what is hot in equity perps right now\" or \"biggest gold-future moves today\" without scanning the full catalog.","operationId":"getMacroSummary","parameters":[{"name":"asset_class","required":false,"in":"query","description":"Restrict to a single asset class. Defaults to all non-crypto.","schema":{"example":"equity","type":"string","enum":["equity","commodity","forex","index"]}},{"name":"market_type","required":false,"in":"query","description":"Market type to rank. Defaults to perpetual (the dominant macro segment). Use \"future\" for dated commodity futures (e.g. OKX gold weeklies, Bybit XAUT dateds).","schema":{"default":"perpetual","example":"perpetual","type":"string","enum":["perpetual","future"]}},{"name":"top","required":false,"in":"query","description":"Top-N per asset class (1-50).","schema":{"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"Top-N per asset class"},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Macro 24h Summary","tags":["Macro"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"asset_class":{"example":"equity","type":"string","enum":["equity","commodity","forex","index"],"description":"Restrict to a single asset class. Defaults to all non-crypto."},"market_type":{"default":"perpetual","example":"perpetual","type":"string","enum":["perpetual","future"],"description":"Market type to rank. Defaults to perpetual (the dominant macro segment). Use \"future\" for dated commodity futures (e.g. OKX gold weeklies, Bybit XAUT dateds)."},"top":{"default":10,"example":10,"type":"number","description":"Top-N per asset class (1-50)."}}}}}}}},"/api/v1/vol-surface/catalog":{"get":{"description":"Lists available proprietary vol-surface tuples by exchange, currency, margin, and model with the latest calibration timestamp. Use this before querying slices, term structure, strikes, or risk.","operationId":"Vol Surface Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Optional exchange filter.","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Optional base currency filter.","schema":{"example":"BTC","type":"string"}},{"name":"margin","required":false,"in":"query","description":"Optional margin filter.","schema":{"example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"model","required":false,"in":"query","description":"Optional model filter.","schema":{"example":"svi","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of surface tuples to return.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"exchange":"deribit","currency":"BTC","margin":"inverse","model":"svi","date":"2026-06-08T12:00:00.000Z","index_price":104000.25,"n_slices":10,"n_forward_knots":7}],"meta":{"next_cursor":null}}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Catalog","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Optional exchange filter."},"currency":{"example":"BTC","type":"string","description":"Optional base currency filter."},"margin":{"example":"inverse","type":"string","enum":["inverse","linear"],"description":"Optional margin filter."},"model":{"example":"svi","type":"string","description":"Optional model filter."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of surface tuples to return."}}}}}}}},"/api/v1/vol-surface/snapshots":{"get":{"description":"Returns surface-level calibration metadata: index price, slice count, forward-curve JSON, and calendar-arbitrage diagnostics. Omit start/end for latest snapshot mode; pass start/end for paginated history.","operationId":"Vol Surface Snapshots","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog.","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"margin","required":false,"in":"query","description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined.","schema":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"date","required":false,"in":"query","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of rows to return in historical scan mode.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from meta.next_cursor.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction for historical scan mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"model","required":false,"in":"query","description":"Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.","schema":{"default":"svi","example":"svi","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2026-06-08T12:00:00.000Z","exchange":"deribit","currency":"BTC","margin":"inverse","model":"svi","index_price":104000.25,"n_slices":10,"n_forward_knots":7,"calendar_arb_pairs_checked":9,"calendar_arb_violating_pairs":0,"calendar_arb_in_range_violations":0,"calendar_arb_max_excess":0,"forward_curve":{"points":[{"tau":0.08,"forward":104250.1}]}}],"meta":{"next_cursor":null,"date":"2026-06-08T12:00:00.000Z"}}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Snapshots","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"margin":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"],"description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined."},"date":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp."},"start":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"end":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of rows to return in historical scan mode."},"cursor":{"type":"string","description":"Pagination cursor from meta.next_cursor."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction for historical scan mode."},"model":{"default":"svi","example":"svi","type":"string","description":"Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families."}},"required":["exchange","currency"]}}}}}},"/api/v1/vol-surface/slices":{"get":{"description":"Returns per-expiry proprietary surface fits, including model parameters, ATM/wing metrics, fit diagnostics, spread-model coefficients, quote-quality counts, quality tier, and fallback metadata. Filters `margin` and `model` by default to avoid mixing inverse/linear or SVI/SABR rows.","operationId":"Vol Surface Slices","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog.","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"margin","required":false,"in":"query","description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined.","schema":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"date","required":false,"in":"query","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of rows to return in historical scan mode.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from meta.next_cursor.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction for historical scan mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"model","required":false,"in":"query","description":"Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.","schema":{"default":"svi","example":"svi","type":"string"}},{"name":"expiry","required":false,"in":"query","description":"Expiry filter in ISO 8601 UTC. If omitted in snapshot mode, all expiries from the snapshot are returned.","schema":{"format":"date-time","example":"2026-06-26T08:00:00Z","type":"string"}},{"name":"quality_tier","required":false,"in":"query","description":"Filter by engine trust label: trusted, indicative, or untrusted.","schema":{"example":"trusted","type":"string","enum":["trusted","indicative","untrusted"]}},{"name":"slice_source","required":false,"in":"query","description":"Filter by slice source: fitted or fallback.","schema":{"example":"fitted","type":"string","enum":["fitted","fallback"]}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2026-06-08T12:00:00.000Z","exchange":"deribit","currency":"BTC","margin":"inverse","model":"svi","expiry":"2026-06-26T08:00:00.000Z","tau":0.0465,"forward":104250.1,"atm_iv":48.2,"skew_25d":-3.1,"butterfly_25d":1.4,"put_25d_iv":50.1,"call_25d_iv":47,"rmse":0.42,"n_strikes":64,"n_two_sided":55,"n_one_sided":9,"n_mark_only":0,"quality_tier":"trusted","slice_source":"fitted","fallback_age_seconds":0,"model_params":{"a":0.01,"b":0.2,"rho":-0.4,"m":0,"sigma":0.3}}],"meta":{"next_cursor":null,"date":"2026-06-08T12:00:00.000Z"}}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Slices","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"margin":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"],"description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined."},"date":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp."},"start":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"end":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of rows to return in historical scan mode."},"cursor":{"type":"string","description":"Pagination cursor from meta.next_cursor."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction for historical scan mode."},"model":{"default":"svi","example":"svi","type":"string","description":"Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families."},"expiry":{"format":"date-time","example":"2026-06-26T08:00:00Z","type":"string","description":"Expiry filter in ISO 8601 UTC. If omitted in snapshot mode, all expiries from the snapshot are returned."},"quality_tier":{"example":"trusted","type":"string","enum":["trusted","indicative","untrusted"],"description":"Filter by engine trust label: trusted, indicative, or untrusted."},"slice_source":{"example":"fitted","type":"string","enum":["fitted","fallback"],"description":"Filter by slice source: fitted or fallback."}},"required":["exchange","currency"]}}}}}},"/api/v1/vol-surface/term-structure":{"get":{"description":"Returns constant-maturity proprietary term-structure rows, including ATM IV, total variance, fixed-tenor skew metrics, forward, term slope, forward vol, and source label.","operationId":"Vol Surface Term Structure","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog.","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"margin","required":false,"in":"query","description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined.","schema":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"date","required":false,"in":"query","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of rows to return in historical scan mode.","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from meta.next_cursor.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction for historical scan mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"tenor_days","required":false,"in":"query","description":"Constant-maturity tenor in days.","schema":{"minimum":1,"example":30,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2026-06-08T12:00:00.000Z","exchange":"deribit","currency":"BTC","margin":"inverse","tenor_days":30,"atm_iv":49.1,"total_variance":0.198,"skew_25d":-3.4,"butterfly_25d":1.5,"forward":104500.2,"term_slope":0.7,"forward_vol":50.3,"forward_tenor":"30d-60d","source":"interpolated"}],"meta":{"next_cursor":null,"date":"2026-06-08T12:00:00.000Z"}}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Term Structure","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"margin":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"],"description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined."},"date":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp."},"start":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string","description":"Start time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"end":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"End time in ISO 8601 UTC. Providing start or end enables historical scan mode."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of rows to return in historical scan mode."},"cursor":{"type":"string","description":"Pagination cursor from meta.next_cursor."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction for historical scan mode."},"tenor_days":{"minimum":1,"example":30,"type":"number","description":"Constant-maturity tenor in days."}},"required":["exchange","currency"]}}}}}},"/api/v1/vol-surface/strikes":{"get":{"description":"Returns per-strike proprietary diagnostics and greeks. This is the largest dataset; latest snapshot mode is allowed broadly, while historical scans require `expiry` or `instrument`.","operationId":"Vol Surface Strikes","parameters":[{"name":"exchange","required":true,"in":"query","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog.","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":true,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"margin","required":false,"in":"query","description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined.","schema":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"]}},{"name":"date","required":false,"in":"query","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns strikes at the latest fit at or before this timestamp.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"start","required":false,"in":"query","description":"Start time in ISO 8601 UTC. Historical strike scans require expiry or instrument.","schema":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End time in ISO 8601 UTC. Historical strike scans require expiry or instrument.","schema":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string"}},{"name":"expiry","required":false,"in":"query","description":"Expiry filter in ISO 8601 UTC.","schema":{"format":"date-time","example":"2026-06-26T08:00:00Z","type":"string"}},{"name":"instrument","required":false,"in":"query","description":"Option instrument identifier.","schema":{"example":"BTC-26JUN26-100000-C","type":"string"}},{"name":"strike","required":false,"in":"query","description":"Strike filter.","schema":{"example":100000,"type":"number"}},{"name":"option_type","required":false,"in":"query","description":"Option type filter.","schema":{"example":"C","type":"string","enum":["C","P"]}},{"name":"limit","required":false,"in":"query","description":"Maximum number of rows to return.","schema":{"minimum":1,"maximum":5000,"default":500,"example":500,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from meta.next_cursor.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction for historical scan mode.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"latest","required":false,"in":"query","description":"Whether snapshot mode should return only rows from the latest fit. Defaults to true.","schema":{"default":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2026-06-08T12:00:00.000Z","exchange":"deribit","currency":"BTC","margin":"inverse","expiry":"2026-06-26T08:00:00.000Z","instrument":"BTC-26JUN26-100000-C","strike":100000,"option_type":"C","log_moneyness":-0.0416,"bid_iv":47.5,"ask_iv":48.2,"mark_iv":47.9,"model_iv":48,"deviation_vol":-0.1,"bs_delta":0.55,"bs_gamma":0.00004,"bs_vega":155.2,"bs_theta":-120.4,"smile_delta":0.53,"mv_delta":0.52}],"meta":{"next_cursor":null,"date":"2026-06-08T12:00:00.000Z"}}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Strikes","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"example":"deribit","type":"string","description":"Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive, paradex. Discover collected tuples through /vol-surface/catalog."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"margin":{"default":"inverse","example":"inverse","type":"string","enum":["inverse","linear"],"description":"Margin book. Use linear for Paradex (USD quotes, USDC settlement). Inverse and linear surfaces are distinct and must not be combined."},"date":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns strikes at the latest fit at or before this timestamp."},"start":{"format":"date-time","example":"2026-06-08T00:00:00Z","type":"string","description":"Start time in ISO 8601 UTC. Historical strike scans require expiry or instrument."},"end":{"format":"date-time","example":"2026-06-08T12:00:00Z","type":"string","description":"End time in ISO 8601 UTC. Historical strike scans require expiry or instrument."},"expiry":{"format":"date-time","example":"2026-06-26T08:00:00Z","type":"string","description":"Expiry filter in ISO 8601 UTC."},"instrument":{"example":"BTC-26JUN26-100000-C","type":"string","description":"Option instrument identifier."},"strike":{"example":100000,"type":"number","description":"Strike filter."},"option_type":{"example":"C","type":"string","enum":["C","P"],"description":"Option type filter."},"limit":{"minimum":1,"maximum":5000,"default":500,"example":500,"type":"number","description":"Maximum number of rows to return."},"cursor":{"type":"string","description":"Pagination cursor from meta.next_cursor."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction for historical scan mode."},"latest":{"default":true,"type":"boolean","description":"Whether snapshot mode should return only rows from the latest fit. Defaults to true."}},"required":["exchange","currency"]}}}}}},"/api/v1/vol-surface/risk/decompose":{"post":{"description":"Runs live portfolio risk decomposition through the proprietary vol-surface engine. Requires the same API-key authentication as GET data endpoints.","operationId":"Vol Surface Risk Decompose","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolSurfaceRiskDecomposeRequestDto"},"examples":{"default":{"value":{"exchange":"deribit","currency":"BTC","positions":[{"instrument":"BTC-31JUL26-62000-C","kind":"option","exchange":"deribit","currency":"BTC","margin":"inverse","strike":62000,"expiry":"2026-07-31T08:00:00Z","option_type":"C","quantity":1}]}}}}}},"responses":{"200":{"content":{"application/json":{"example":{"exchange":"deribit","currency":"BTC","margin":"inverse","position_count":1,"mark_value_usd":4048.0574817095476,"mark_value_coin":0.06562415469101558,"gross_value_usd":4048.0574817095476,"market_value_usd":4055.7195304898014,"model_edge_value_usd":-7.662048780253826,"total_mark_pnl_usd":4048.0574817095476,"total_funding_pnl_usd":0,"total_pnl_usd":4048.0574817095476,"total_delta":0.5298747339971175,"total_gamma":0.000038802800723917366,"total_theta":-39.54853334689837,"total_vega":92.5870843232772,"total_rho":34.91393048941768,"total_vanna":0.0008183791577023126,"total_volga":-0.014276290645167958,"total_charm":-0.0003495703061108222,"level_vega":10.904900106306162,"skew_vega":49.27619330071987,"curvature_vega":32.40599091625117,"total_smile_gamma":0.000042352439219740666,"total_smile_vanna":0.0008096251247532112,"total_pa_delta":0.4642505793061019,"total_pa_gamma":0.00003127670901957946,"total_pa_vega":0.0015009542654653445,"total_pa_theta":-0.0006411319705528492,"total_pa_vanna":-0.0006825751077630318,"buckets":[{"tenor_label":"60d","tenor_days":60,"total_vega":92.5870843232772,"level_vega":10.904900106306162,"skew_vega":49.27619330071987,"curvature_vega":32.40599091625117,"net_delta":0.5298747339971175,"net_gamma":0.000038802800723917366,"net_theta":-39.54853334689837,"positions":1}],"positions":[{"instrument":"BTC-31JUL26-62000-C","kind":"option","exchange":"deribit","currency":"BTC","margin":"inverse","strike":62000,"expiry":"2026-07-31T08:00:00Z","option_type":"C","quantity":1,"spot":61685.479999999996,"forward":61919.63800499999,"atm_iv":44.101471505515754,"model_iv":44.05210602686287,"market_iv":44.134861605065296,"model_price_usd":4048.0574817095476,"market_price_usd":4055.7195304898014,"model_edge_usd":-7.662048780253826,"delta":0.5298747339971175,"gamma":0.000038802800723917366,"theta":-39.54853334689837,"vega":92.5870843232772,"rho":34.91393048941768,"pa_delta":0.4642505793061019,"smile_delta":0.5866479117764257,"level_vega":10.904900106306162,"skew_vega":49.27619330071987,"curvature_vega":32.40599091625117,"bid_iv":43.80047281798966,"ask_iv":44.46925039214093,"deviation_vol":0.08275557820242341,"slice_source":"fitted","slice_quality_tier":"trusted","bucket_label":"60d","bucket_days":60}],"unrealized_pnl_usd":4048.0574817095476,"premium_pnl_usd":4048.0574817095476,"model":"svi"}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""},"502":{"description":"Bad Gateway - risk engine returned an unexpected error"},"503":{"description":"Service Unavailable - risk engine has no cached surface or is temporarily unavailable"},"504":{"description":"Gateway Timeout - risk request timed out"}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Risk Decompose","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/vol-surface/risk/scenario":{"post":{"description":"Reprices a portfolio under a spot/vol/skew/curvature/time shock through the proprietary vol-surface engine. Requires the same API-key authentication as GET data endpoints.","operationId":"Vol Surface Risk Scenario","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolSurfaceRiskScenarioRequestDto"},"examples":{"default":{"value":{"exchange":"deribit","currency":"BTC","positions":[{"instrument":"BTC-31JUL26-62000-C","kind":"option","exchange":"deribit","currency":"BTC","margin":"inverse","strike":62000,"expiry":"2026-07-31T08:00:00Z","option_type":"C","quantity":1}],"shock":{"name":"Spot down 10 vol up 5","spot_shift_pct":-10,"level_shift_vol":5,"skew_shift":0,"curvature_shift":0,"time_decay_days":0}}}}}}},"responses":{"200":{"content":{"application/json":{"example":{"shock":{"name":"Spot down 10 vol up 5","spot_shift_pct":-10,"level_shift_vol":5,"skew_shift":0,"curvature_shift":0,"time_decay_days":0},"exchange":"deribit","currency":"BTC","margin":"inverse","position_count":1,"base_value_usd":4048.0574817095476,"base_value_coin":0.06562415469101558,"shocked_value_usd":1689.5573821337857,"shocked_value_coin":0.030433190763023175,"pnl_usd":-2358.500099575762,"pnl_coin":-0.03519096392799241,"pnl_pct":-0.5826251505153371,"total_delta":0.29974008937747426,"total_gamma":0.000035800752388230626,"total_theta":-32.716834317584535,"total_driftless_theta":-32.716834317584535,"total_vega":72.79941739023384,"total_rho":18.824410639288853,"total_vanna":0.005244352743597323,"total_volga":0.576868209820335,"total_charm":-0.00235686803502168,"total_smile_delta":0.32063045230615406,"total_smile_gamma":0.0000434216818884387,"total_smile_vanna":0.005409889593989498,"total_shocked_atm_iv":49.10147150551577,"total_pa_delta":0.26930689861445106,"total_pa_gamma":0.00003094985575340846,"total_pa_vega":0.0013113011610626077,"total_pa_theta":-0.0005893127220644061,"total_pa_vanna":0.003933051582534716,"positions":[{"instrument":"BTC-31JUL26-62000-C","quantity":1,"contract_multiplier":1,"effective_quantity":1,"quantity_status":"metadata","slice_quality_tier":"trusted","base_price_usd":4048.0574817095476,"shocked_price_usd":1689.5573821337857,"shocked_atm_iv":49.10147150551577,"pnl_usd":-2358.500099575762,"delta":0.29974008937747426,"gamma":0.000035800752388230626,"theta":-32.716834317584535,"vega":72.79941739023384,"rho":18.824410639288853,"pa_delta":0.26930689861445106,"smile_delta":0.32063045230615406}]}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""},"502":{"description":"Bad Gateway - risk engine returned an unexpected error"},"503":{"description":"Service Unavailable - risk engine has no cached surface or is temporarily unavailable"},"504":{"description":"Gateway Timeout - risk request timed out"}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Risk Scenario","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/vol-surface/risk/ladder":{"post":{"description":"Reprices a portfolio across a spot x parallel-vol grid through the proprietary vol-surface engine. Requires the same API-key authentication as GET data endpoints. The grid is capped at 400 cells.","operationId":"Vol Surface Risk Ladder","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolSurfaceRiskLadderRequestDto"},"examples":{"default":{"value":{"exchange":"deribit","currency":"BTC","positions":[{"instrument":"BTC-31JUL26-62000-C","kind":"option","exchange":"deribit","currency":"BTC","margin":"inverse","strike":62000,"expiry":"2026-07-31T08:00:00Z","option_type":"C","quantity":1}],"spot_shifts_pct":[-10,0,10],"vol_shifts":[-5,0,5],"skew_shift":0,"curvature_shift":0,"time_decay_days":0}}}}}},"responses":{"200":{"content":{"application/json":{"example":{"exchange":"deribit","currency":"BTC","margin":"inverse","position_count":1,"spot_shifts_pct":[-10,0,10],"vol_shifts":[-5,0,5],"skew_shift":0,"curvature_shift":0,"time_decay_days":0,"cells":[{"spot_shift_pct":-10,"vol_shift":-5,"pnl_usd":-3100.130704472309,"pnl_coin":-0.04854960206196831,"pnl_pct":-0.7658316905033382,"total_delta":0.23250553927858042,"total_gamma":0.00004098821038404953,"total_theta":-22.077273192877684,"total_vega":63.987977535804085,"total_shocked_atm_iv":39.10147150551575,"slice_quality_tier":"trusted"},{"spot_shift_pct":0,"vol_shift":0,"pnl_usd":0,"pnl_coin":0,"pnl_pct":0,"total_delta":0.5298747339971175,"total_gamma":0.000038802800723917366,"total_theta":-39.54853334689837,"total_vega":92.5870843232772,"total_shocked_atm_iv":44.101471505515754,"slice_quality_tier":"trusted"},{"spot_shift_pct":10,"vol_shift":5,"pnl_usd":4716.611382299721,"pnl_coin":0.06354531574940202,"pnl_pct":1.1651542508007655,"total_delta":0.7165886093416941,"total_gamma":0.00002503491483006675,"total_theta":-44.40447141428705,"total_vega":86.68276911566157,"total_shocked_atm_iv":49.10147150551577,"slice_quality_tier":"trusted"}],"pnl_usd_matrix":[[-3100.130704472309,-2737.6842249998426,-2358.500099575762],[-463.6925637164677,0,463.21552979895205],[3942.1427372296457,4320.936753402966,4716.611382299721]],"pnl_coin_matrix":[[-0.04854960206196831,-0.04202102660912329,-0.03519096392799241],[-0.0075170455626910535,0,0.007509312236833557],[0.05213156968453943,0.057714053544942245,0.06354531574940202]],"pnl_pct_matrix":[[-0.7658316905033382,-0.6762957881328511,-0.5826251505153371],[-0.11454693166082322,0,0.11442908898698001],[0.9738356619295898,1.0674099300532112,1.1651542508007655]]}}},"description":""},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""},"502":{"description":"Bad Gateway - risk engine returned an unexpected error"},"503":{"description":"Service Unavailable - risk engine has no cached surface or is temporarily unavailable"},"504":{"description":"Gateway Timeout - risk request timed out"}},"security":[{"X-API-Key":[]}],"summary":"Vol Surface Risk Ladder","tags":["Vol Surface"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/fills":{"get":{"description":"Returns enriched per-fill Hyperliquid L1 HyperCore data with wallet attribution, fees, closed PnL, position direction, builder/deployer fees, and liquidation flags. Requires wallet. Covers perps, HIP-3 perps, and spot fills.\n\nRequired query parameter: wallet.","operationId":"HyperCore Fills","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by event time. Defaults to DESC for node history endpoints.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, NVDA, BASED).","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Hyperliquid node market type.","schema":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"wallet","required":true,"in":"query","description":"Wallet address. Required for raw Hyperliquid node fills.","schema":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string"}},{"name":"side","required":false,"in":"query","description":"Aggressor side.","schema":{"type":"string","enum":["buy","sell"]}},{"name":"dir","required":false,"in":"query","description":"Position direction from the node fill (e.g. Open Long, Close Short, Buy, Sell).","schema":{"example":"Open Long","type":"string"}},{"name":"min_notional","required":false,"in":"query","description":"Minimum fill notional in USDC.","schema":{"example":10000,"type":"number"}},{"name":"crossed","required":false,"in":"query","description":"Filter taker fills. 1 = taker, 0 = maker.","schema":{"type":"number","enum":[0,1]}},{"name":"is_liquidation","required":false,"in":"query","description":"Filter liquidation fills. 1 = liquidation, 0 = non-liquidation.","schema":{"type":"number","enum":[0,1]}}],"responses":{"200":{"description":"Paginated node fills","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Fills","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by event time. Defaults to DESC for node history endpoints."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC)."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, NVDA, BASED)."},"market_type":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Hyperliquid node market type."},"wallet":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string","description":"Wallet address. Required for raw Hyperliquid node fills."},"side":{"type":"string","enum":["buy","sell"],"description":"Aggressor side."},"dir":{"example":"Open Long","type":"string","description":"Position direction from the node fill (e.g. Open Long, Close Short, Buy, Sell)."},"min_notional":{"example":10000,"type":"number","description":"Minimum fill notional in USDC."},"crossed":{"type":"number","enum":[0,1],"description":"Filter taker fills. 1 = taker, 0 = maker."},"is_liquidation":{"type":"number","enum":[0,1],"description":"Filter liquidation fills. 1 = liquidation, 0 = non-liquidation."}},"required":["wallet"]}}}},"x-required-query":["wallet"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/prediction-fills":{"get":{"description":"Returns HIP-4 prediction outcome fills enriched from Hyperliquid L1 HyperCore data, including condition/token identifiers and wallet attribution. Requires at least one of instrument_name, condition_id, or token_id.\n\nAt least one query parameter is required: instrument_name, condition_id, token_id.","operationId":"HyperCore Prediction Fills","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by fill time. Defaults to DESC.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Prediction instrument name.","schema":{"example":"fed-cuts-in-2026-YES","type":"string"}},{"name":"condition_id","required":false,"in":"query","description":"Prediction market condition ID.","schema":{"type":"string"}},{"name":"token_id","required":false,"in":"query","description":"Prediction outcome token ID.","schema":{"type":"string"}},{"name":"outcome","required":false,"in":"query","description":"Outcome side label.","schema":{"example":"YES","type":"string"}},{"name":"category","required":false,"in":"query","description":"Prediction category.","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Prediction event slug.","schema":{"type":"string"}},{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"type":"string"}},{"name":"side","required":false,"in":"query","description":"Aggressor side.","schema":{"type":"string","enum":["buy","sell"]}},{"name":"min_notional","required":false,"in":"query","description":"Minimum fill notional.","schema":{"example":1000,"type":"number"}}],"responses":{"200":{"description":"Paginated HIP-4 prediction fills","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Prediction Fills","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by fill time. Defaults to DESC."},"instrument_name":{"example":"fed-cuts-in-2026-YES","type":"string","description":"Prediction instrument name."},"condition_id":{"type":"string","description":"Prediction market condition ID."},"token_id":{"type":"string","description":"Prediction outcome token ID."},"outcome":{"example":"YES","type":"string","description":"Outcome side label."},"category":{"example":"crypto","type":"string","description":"Prediction category."},"event_slug":{"type":"string","description":"Prediction event slug."},"wallet":{"type":"string","description":"Wallet address."},"side":{"type":"string","enum":["buy","sell"],"description":"Aggressor side."},"min_notional":{"example":1000,"type":"number","description":"Minimum fill notional."}},"anyOf":[{"required":["instrument_name"]},{"required":["condition_id"]},{"required":["token_id"]}]}}}},"x-required-query-anyOf":["instrument_name","condition_id","token_id"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/liquidations":{"get":{"description":"Returns liquidation fills from HyperCore with liquidated user, liquidator wallet, mark price, method, fill price, closed PnL, role, and backstop labels. Raw event mode preserves the two-row liquidated/liquidator structure; dedupe=true returns one canonical row per event.","operationId":"HyperCore Liquidations","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by event time. Defaults to DESC for node history endpoints.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, NVDA, BASED).","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Hyperliquid node market type.","schema":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string"}},{"name":"liquidated_user","required":false,"in":"query","description":"Liquidated wallet address.","schema":{"type":"string"}},{"name":"liquidator","required":false,"in":"query","description":"Liquidator wallet address.","schema":{"type":"string"}},{"name":"min_notional","required":false,"in":"query","description":"Minimum liquidation notional in USDC.","schema":{"example":10000,"type":"number"}},{"name":"dedupe","required":false,"in":"query","description":"When true, returns one canonical liquidation row per event from the liquidated-user perspective. Defaults to false, preserving the raw two-row victim/counterparty structure.","schema":{"default":false,"type":"boolean"}},{"name":"resolution","required":false,"in":"query","description":"Optional aggregation resolution. When set, returns per-instrument liquidation buckets instead of event rows.","schema":{"type":"string","enum":["5m","15m","1h","1d"]}}],"responses":{"200":{"description":"Paginated node liquidations","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Liquidations","tags":["Hyperliquid - HyperCore"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by event time. Defaults to DESC for node history endpoints."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC)."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, NVDA, BASED)."},"market_type":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Hyperliquid node market type."},"wallet":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string","description":"Wallet address."},"liquidated_user":{"type":"string","description":"Liquidated wallet address."},"liquidator":{"type":"string","description":"Liquidator wallet address."},"min_notional":{"example":10000,"type":"number","description":"Minimum liquidation notional in USDC."},"dedupe":{"default":false,"type":"boolean","description":"When true, returns one canonical liquidation row per event from the liquidated-user perspective. Defaults to false, preserving the raw two-row victim/counterparty structure."},"resolution":{"type":"string","enum":["5m","15m","1h","1d"],"description":"Optional aggregation resolution. When set, returns per-instrument liquidation buckets instead of event rows."}}}}}}}},"/api/v1/hyperliquid/node/wallet-flow":{"get":{"description":"Returns per-wallet HyperCore flow rollups with buy/sell/net volume, buy/sell/net/total notional, trade count, realized PnL, and fees. Requires at least one of wallet, instrument_name, instrument_name_raw, or currency. Negative fees are maker rebates. Aggregated per minute from native fills. Time range caps by resolution: 1m=7d, 5m=14d, 15m=30d, 1h=90d, 4h=180d, 1d=365d.\n\nAt least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.","operationId":"HyperCore Wallet Flow","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by event time. Defaults to DESC for node history endpoints.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, NVDA, BASED).","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Hyperliquid node market type.","schema":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Aggregation resolution. Source table is 1-minute wallet flow. Maximum time range by resolution: 1m=7d, 5m=14d, 15m=30d, 1h=90d, 4h=180d, 1d=365d.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"sort_by","required":false,"in":"query","description":"Sort key for wallet flow rows. time preserves the historical time ordering; notional/PnL/count sorts rank wallets inside the selected window.","schema":{"default":"time","type":"string","enum":["time","total_notional","buy_notional","sell_notional","net_notional","realized_pnl","trade_count"]}},{"name":"min_notional","required":false,"in":"query","description":"Minimum total traded notional in USDC (buy_notional + sell_notional).","schema":{"example":100000,"type":"number"}}],"responses":{"200":{"description":"Paginated wallet flow rows","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Wallet Flow","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by event time. Defaults to DESC for node history endpoints."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC)."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, NVDA, BASED)."},"market_type":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Hyperliquid node market type."},"wallet":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string","description":"Wallet address."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Aggregation resolution. Source table is 1-minute wallet flow. Maximum time range by resolution: 1m=7d, 5m=14d, 15m=30d, 1h=90d, 4h=180d, 1d=365d."},"sort_by":{"default":"time","type":"string","enum":["time","total_notional","buy_notional","sell_notional","net_notional","realized_pnl","trade_count"],"description":"Sort key for wallet flow rows. time preserves the historical time ordering; notional/PnL/count sorts rank wallets inside the selected window."},"min_notional":{"example":100000,"type":"number","description":"Minimum total traded notional in USDC (buy_notional + sell_notional)."}},"anyOf":[{"required":["wallet"]},{"required":["instrument_name"]},{"required":["instrument_name_raw"]},{"required":["currency"]}]}}}},"x-required-query-anyOf":["wallet","instrument_name","instrument_name_raw","currency"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/wallet-positions":{"get":{"description":"Returns latest per-wallet HyperCore positions by instrument, ranked by absolute position size, with latest mark price, mark-time, position notional, nullable reconstructed entry price, and wallet labels. Requires at least one of wallet, instrument_name, instrument_name_raw, or currency. Response meta uses freshness_basis=ingestion_watermark with watermark_time and staleness_ms; row updated_at and last_fill_time remain wallet activity timestamps and do not drive freshness warnings. Stale ingestion watermarks and unresolved instrument filters are reported in meta.warnings.\n\nAt least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.","operationId":"HyperCore Wallet Positions","parameters":[{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name.","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin.","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Market type.","schema":{"type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"start","required":false,"in":"query","description":"Start date for last fill time filter.","schema":{"format":"date-time","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date for last fill time filter.","schema":{"format":"date-time","type":"string"}},{"name":"include_zero","required":false,"in":"query","description":"Include zero/flat positions.","schema":{"default":false,"type":"boolean"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of positions to return (1-1000).","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"description":"Latest wallet position rows","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}},"freshness_basis":{"type":"string","enum":["ingestion_watermark"],"description":"Basis used to compute staleness_ms."},"staleness_ms":{"type":"number","nullable":true,"description":"Milliseconds since the freshness basis timestamp."},"watermark_time":{"type":"string","nullable":true,"description":"Latest event ingestion watermark timestamp in UTC."},"watermark_time_iso":{"type":"string","nullable":true,"description":"Latest event ingestion watermark timestamp in ISO 8601 UTC."}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Wallet Positions","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"string","description":"Wallet address."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"market_type":{"type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Market type."},"start":{"format":"date-time","type":"string","description":"Start date for last fill time filter."},"end":{"format":"date-time","type":"string","description":"End date for last fill time filter."},"include_zero":{"default":false,"type":"boolean","description":"Include zero/flat positions."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of positions to return (1-1000)."}},"anyOf":[{"required":["wallet"]},{"required":["instrument_name"]},{"required":["instrument_name_raw"]},{"required":["currency"]}]}}}},"x-required-query-anyOf":["wallet","instrument_name","instrument_name_raw","currency"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/funding-payments":{"get":{"description":"Returns per-wallet hourly HyperCore funding payments from native misc events. Requires wallet. This is payment-level data, not just market-level funding rates.\n\nRequired query parameter: wallet.","operationId":"HyperCore Funding Payments","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by event time. Defaults to DESC for node history endpoints.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, NVDA, BASED).","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Hyperliquid node market type.","schema":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"wallet","required":true,"in":"query","description":"Wallet address. Required for Hyperliquid funding payments.","schema":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string"}},{"name":"min_abs_usdc","required":false,"in":"query","description":"Minimum absolute funding payment in USDC.","schema":{"example":10,"type":"number"}}],"responses":{"200":{"description":"Paginated funding payment rows","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Funding Payments","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by event time. Defaults to DESC for node history endpoints."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC)."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, NVDA, BASED)."},"market_type":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Hyperliquid node market type."},"wallet":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string","description":"Wallet address. Required for Hyperliquid funding payments."},"min_abs_usdc":{"example":10,"type":"number","description":"Minimum absolute funding payment in USDC."}},"required":["wallet"]}}}},"x-required-query":["wallet"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/twap-events":{"get":{"description":"Returns HyperCore TWAP lifecycle events with wallet, status, target size, target notional, executed size/notional, duration, and reduce-only/randomize flags. If wallet/twap_id are omitted, the query defaults to the recent 24h window; use min_target_notional for large TWAP discovery. Broad discovery without wallet/instrument/twap_id is capped to 24h.","operationId":"HyperCore TWAP Events","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by event time. Defaults to DESC for node history endpoints.","schema":{"default":"DESC","type":"string","enum":["ASC","DESC"]}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency (e.g. BTC, NVDA, BASED).","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Hyperliquid node market type.","schema":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string"}},{"name":"twap_id","required":false,"in":"query","description":"TWAP ID.","schema":{"type":"number"}},{"name":"status","required":false,"in":"query","description":"TWAP status.","schema":{"example":"activated","type":"string"}},{"name":"side","required":false,"in":"query","description":"Order side.","schema":{"type":"string","enum":["B","A"]}},{"name":"min_target_notional","required":false,"in":"query","description":"Minimum target notional in USDC. For partially executed TWAPs this uses executed VWAP; otherwise it uses the latest available mark price. Broad TWAP discovery without wallet/instrument/twap_id is capped to a 24h window.","schema":{"example":1000000,"type":"number"}}],"responses":{"200":{"description":"Paginated TWAP lifecycle events","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore TWAP Events","tags":["Hyperliquid - HyperCore"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"DESC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by event time. Defaults to DESC for node history endpoints."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC)."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"currency":{"example":"BTC","type":"string","description":"Base currency (e.g. BTC, NVDA, BASED)."},"market_type":{"example":"perp","type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Hyperliquid node market type."},"wallet":{"example":"0x1234567890abcdef1234567890abcdef12345678","type":"string","description":"Wallet address."},"twap_id":{"type":"number","description":"TWAP ID."},"status":{"example":"activated","type":"string","description":"TWAP status."},"side":{"type":"string","enum":["B","A"],"description":"Order side."},"min_target_notional":{"example":1000000,"type":"number","description":"Minimum target notional in USDC. For partially executed TWAPs this uses executed VWAP; otherwise it uses the latest available mark price. Broad TWAP discovery without wallet/instrument/twap_id is capped to a 24h window."}}}}}}}},"/api/v1/hyperliquid/node/resting-orders":{"get":{"description":"Returns the latest per-wallet resting order snapshot from HyperCore-derived L4 state, ranked by notional, including mark price, distance_from_mark_pct, machine-readable snapshot freshness metadata, and wallet labels. Requires at least one of wallet, instrument_name, instrument_name_raw, or currency. Snapshots are emitted every 60 seconds; latest requests without start/end are pruned to the most recent 15 minutes. Response meta uses freshness_basis=snapshot with snapshot_time, snapshot_interval_ms, and staleness_ms. Stale snapshots and unresolved instrument filters are reported in meta.warnings.\n\nAt least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.","operationId":"HyperCore Resting Orders","parameters":[{"name":"wallet","required":false,"in":"query","description":"Wallet address.","schema":{"type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name.","schema":{"example":"BTC-USD","type":"string"}},{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin.","schema":{"example":"BTC","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Market type.","schema":{"type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"side","required":false,"in":"query","description":"Order side.","schema":{"type":"string","enum":["B","A"]}},{"name":"min_notional","required":false,"in":"query","description":"Minimum resting order notional.","schema":{"example":100000,"type":"number"}},{"name":"max_distance_from_mark","required":false,"in":"query","description":"Maximum absolute distance from mark price in percent. Use this to exclude deep crash bids/asks from near-mark liquidity views.","schema":{"example":10,"type":"number"}},{"name":"start","required":false,"in":"query","description":"Restrict latest snapshot search to this start date.","schema":{"format":"date-time","type":"string"}},{"name":"end","required":false,"in":"query","description":"Restrict latest snapshot search to this end date.","schema":{"format":"date-time","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of resting orders to return (1-1000).","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"description":"Latest resting order snapshot rows","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}},"freshness_basis":{"type":"string","enum":["snapshot"],"description":"Basis used to compute staleness_ms."},"staleness_ms":{"type":"number","nullable":true,"description":"Milliseconds since the freshness basis timestamp."},"snapshot_time":{"type":"string","nullable":true,"description":"Latest snapshot timestamp in UTC."},"snapshot_time_iso":{"type":"string","nullable":true,"description":"Latest snapshot timestamp in ISO 8601 UTC."},"snapshot_interval_ms":{"type":"number","description":"Expected snapshot emission interval in milliseconds."}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Resting Orders","tags":["Hyperliquid - HyperCore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"string","description":"Wallet address."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name."},"instrument_name_raw":{"example":"BTC","type":"string","description":"Raw Hyperliquid node coin."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"market_type":{"type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Market type."},"side":{"type":"string","enum":["B","A"],"description":"Order side."},"min_notional":{"example":100000,"type":"number","description":"Minimum resting order notional."},"max_distance_from_mark":{"example":10,"type":"number","description":"Maximum absolute distance from mark price in percent. Use this to exclude deep crash bids/asks from near-mark liquidity views."},"start":{"format":"date-time","type":"string","description":"Restrict latest snapshot search to this start date."},"end":{"format":"date-time","type":"string","description":"Restrict latest snapshot search to this end date."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of resting orders to return (1-1000)."}},"anyOf":[{"required":["wallet"]},{"required":["instrument_name"]},{"required":["instrument_name_raw"]},{"required":["currency"]}]}}}},"x-required-query-anyOf":["wallet","instrument_name","instrument_name_raw","currency"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/hyperliquid/node/instruments":{"get":{"description":"Maps raw Hyperliquid node coins such as BTC, xyz:NVDA, @305, and #40 to normalized instrument names, market type, base currency, tick/lot sizing, HIP-3 display names, deployer, status, and last-seen time.","operationId":"HyperCore Instruments","parameters":[{"name":"instrument_name_raw","required":false,"in":"query","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).","schema":{"example":"@305","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Normalized instrument name.","schema":{"example":"BTC-USD","type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base currency.","schema":{"example":"BTC","type":"string"}},{"name":"market_type","required":false,"in":"query","description":"Market type.","schema":{"type":"string","enum":["perp","perp_hip3","spot","prediction"]}},{"name":"start","required":false,"in":"query","description":"Only include raw coins observed at or after this UTC datetime. Defaults to 24 hours ago for observed aliases; active perp/HIP-3 mappings also come from Hyperliquid metadata.","schema":{"format":"date-time","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of mappings to return (1-1000).","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}}],"responses":{"200":{"description":"Raw Hyperliquid coin mapping rows","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore Instruments","tags":["Hyperliquid - HyperCore"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"instrument_name_raw":{"example":"@305","type":"string","description":"Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40)."},"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name."},"currency":{"example":"BTC","type":"string","description":"Base currency."},"market_type":{"type":"string","enum":["perp","perp_hip3","spot","prediction"],"description":"Market type."},"start":{"format":"date-time","type":"string","description":"Only include raw coins observed at or after this UTC datetime. Defaults to 24 hours ago for observed aliases; active perp/HIP-3 mappings also come from Hyperliquid metadata."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of mappings to return (1-1000)."}}}}}}}},"/api/v1/hyperliquid/node/l2-orderbook":{"get":{"description":"Returns the latest HyperCore-derived L2 orderbook snapshot for an instrument. Unambiguous inputs such as BTC resolve to canonical names such as BTC-USD when possible; ambiguous or unknown values return an UNRESOLVED_INSTRUMENT warning with an empty data array. Depth can reach 100 levels, compared with the standard WS-derived 20-level Hyperliquid book.","operationId":"HyperCore L2 Orderbook","parameters":[{"name":"instrument_name","required":true,"in":"query","description":"Normalized instrument name.","schema":{"example":"BTC-USD","type":"string"}},{"name":"date","required":false,"in":"query","description":"Snapshot time in ISO 8601 format. If omitted, returns latest available snapshot.","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"Latest node-derived L2 snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"next_cursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor. Pass this value as the cursor query parameter for the next page."},"warnings":{"type":"array","description":"Structured response warnings. Omitted when there are no warnings.","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["STALE_SNAPSHOT","UNRESOLVED_INSTRUMENT"]},"message":{"type":"string"}}}}},"required":["next_cursor"]}},"required":["data","meta"]}}}},"400":{"content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}},"description":""},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}},"description":""}},"security":[{"X-API-Key":[]}],"summary":"HyperCore L2 Orderbook","tags":["Hyperliquid - HyperCore"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"instrument_name":{"example":"BTC-USD","type":"string","description":"Normalized instrument name."},"date":{"format":"date-time","type":"string","description":"Snapshot time in ISO 8601 format. If omitted, returns latest available snapshot."}},"required":["instrument_name"]}}}}}},"/api/v1/predictions/catalog":{"get":{"description":"Returns a list of available prediction market instruments. Supports filtering by exchange, category, event_slug, and keyword search.","operationId":"Predictions Catalog","parameters":[{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug (parent event grouping)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"keyword","required":false,"in":"query","description":"Keyword search to filter instruments by name (case-insensitive partial match)","schema":{"example":"bitcoin","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of instruments to return (1-1000)","schema":{"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor from a previous response","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"success":true,"data":[{"instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","exchange":"polymarket"},{"instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-NO","exchange":"polymarket"},{"instrument_name":"btc-above-79980-20260505-0600","exchange":"hyperliquid"}]}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Catalog","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Filter by exchange (polymarket or hyperliquid)"},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug (parent event grouping)"},"keyword":{"example":"bitcoin","type":"string","description":"Keyword search to filter instruments by name (case-insensitive partial match)"},"limit":{"default":100,"example":100,"type":"number","description":"Maximum number of instruments to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response"}}}}}}}},"/api/v1/predictions/categories":{"get":{"description":"Returns a list of all prediction market categories with instrument counts.","operationId":"Predictions Categories","parameters":[{"name":"exchange","required":false,"in":"query","description":"Filter by exchange (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}}],"responses":{"200":{"content":{"application/json":{"example":[{"category":"crypto","count":45},{"category":"politics","count":32},{"category":"sports","count":18}]}},"description":""},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Categories","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Filter by exchange (polymarket or hyperliquid)"}}}}}}}},"/api/v1/predictions/metadata":{"get":{"description":"Returns metadata for a specific prediction instrument including data availability, total record count, and pagination information.","operationId":"Predictions Metadata","parameters":[{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"limit","required":false,"in":"query","description":"Number of records per page for pagination calculation","schema":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number"}},{"name":"instrument_name","required":true,"in":"query","description":"Instrument name","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}}],"responses":{"200":{"description":"Metadata successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponseEntity"}}}},"400":{"description":"Bad Request - Invalid parameters or no data found","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Metadata","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"limit":{"minimum":1,"maximum":100,"default":100,"example":100,"type":"number","description":"Number of records per page for pagination calculation"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Instrument name"}},"required":["instrument_name"]}}}}}},"/api/v1/predictions/ohlcvt":{"get":{"description":"Retrieves Open, High, Low, Close, Volume, Trades data for prediction market instruments. Prices represent probabilities (0.0-1.0).\n\n**Key Features:**\n- Historical probability-based OHLC candlestick data\n- Buy/sell volume breakdown\n- Trade count statistics\n- Support for multiple resolutions (1m, 5m, 15m, 1h, 4h, 1d)","operationId":"Predictions OHLCVT Market Data","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug (parent event grouping)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"outcome","required":false,"in":"query","description":"Filter by outcome side","schema":{"type":"string","enum":["YES","NO"]}}],"responses":{"200":{"description":"OHLCVT data successfully retrieved","content":{"application/json":{"example":{"success":true,"data":[{"date":"2026-02-20 12:00:00","exchange":"polymarket","instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","condition_id":"0xabc...","token_id":"12345","category":"crypto","event_slug":"will-bitcoin-reach-250000-by-december-31-2026","open":0.35,"high":0.38,"low":0.33,"close":0.37,"vwap":0.355,"volume":1250.5,"buy_volume":750.3,"sell_volume":500.2,"trades_count":85,"buy_trades_count":50,"sell_trades_count":35,"last_probability":0.37}],"meta":{"next_cursor":null}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions OHLCVT Market Data","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)"},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug (parent event grouping)"},"outcome":{"type":"string","enum":["YES","NO"],"description":"Filter by outcome side"}}}}}}}},"/api/v1/predictions/ticker-history":{"get":{"description":"Returns historical ticker data for prediction instruments including probability OHLC, bid/ask spread, and liquidity metrics.","operationId":"Predictions Ticker History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug (parent event grouping)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"outcome","required":false,"in":"query","description":"Filter by outcome side","schema":{"type":"string","enum":["YES","NO"]}}],"responses":{"200":{"content":{"application/json":{"example":{"success":true,"data":[{"date":"2026-02-20 12:00:00","exchange":"polymarket","instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","probability":0.37,"probability_open":0.35,"probability_high":0.38,"probability_low":0.33,"complement_probability":0.63,"bid_price":0.36,"ask_price":0.38,"bid_ask_spread":0.02,"total_liquidity":5000}],"meta":{"next_cursor":null}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Ticker History","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)"},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug (parent event grouping)"},"outcome":{"type":"string","enum":["YES","NO"],"description":"Filter by outcome side"}}}}}}}},"/api/v1/predictions/trades":{"get":{"description":"Returns individual prediction market trades with price (probability), size, side, and outcome information. Supports cursor-based pagination.","operationId":"Predictions Trade History","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug (parent event grouping)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"outcome","required":false,"in":"query","description":"Filter by outcome side","schema":{"type":"string","enum":["YES","NO"]}}],"responses":{"200":{"content":{"application/json":{"example":{"success":true,"data":[{"timestamp":1771523261437,"date":"2026-02-20T12:34:21.437Z","exchange":"polymarket","instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","outcome":"YES","category":"crypto","price":0.37,"size":100,"side":"buy","fee_rate_bps":0,"trade_hash":"abc123def456"}],"meta":{"next_cursor":null}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Trade History","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)"},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug (parent event grouping)"},"outcome":{"type":"string","enum":["YES","NO"],"description":"Filter by outcome side"}}}}}}}},"/api/v1/predictions/orderbook-raw":{"get":{"description":"Returns raw L2 orderbook snapshots for prediction instruments with full bid/ask arrays.\n\n**Key Features:**\n- Full bid/ask price levels\n- Pre-computed liquidity at 3 depth levels (10, 20, 50)\n- Order book imbalance per depth\n- Microprice (liquidity-weighted mid-price)","operationId":"Predictions L2 Orderbook Raw","parameters":[{"name":"start","required":false,"in":"query","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows.","schema":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string"}},{"name":"end","required":false,"in":"query","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data).","schema":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return (1-1000)","schema":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.","schema":{"type":"string"}},{"name":"sort_dir","required":false,"in":"query","description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan.","schema":{"default":"ASC","type":"string","enum":["ASC","DESC"]}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"instrument_name","required":false,"in":"query","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug (parent event grouping)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"outcome","required":false,"in":"query","description":"Filter by outcome side","schema":{"type":"string","enum":["YES","NO"]}}],"responses":{"200":{"description":"Raw L2 orderbook snapshots successfully retrieved","content":{"application/json":{"example":{"success":true,"data":[{"timestamp":1771523261437,"date":"2026-02-20T12:34:21.437Z","exchange":"polymarket","instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","bids":[{"price":0.36,"size":500},{"price":0.35,"size":300}],"asks":[{"price":0.38,"size":400},{"price":0.39,"size":250}],"depth":20,"bid_liquidity_10":2500,"ask_liquidity_10":2000,"microprice":0.371}],"meta":{"next_cursor":null}}}}},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions L2 Orderbook Raw Snapshots","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"format":"date-time","example":"2026-09-28T10:00:00.000Z","type":"string","description":"Start date in ISO 8601 format (UTC). When omitted, options, spot, perpetual and futures routes use the 24 hours before end (or before now without end). Pass start explicitly for historical windows."},"end":{"format":"date-time","example":"2026-10-05T10:00:00.000Z","type":"string","description":"End date in ISO 8601 format (UTC). Omitted means no upper bound (through the latest data)."},"limit":{"minimum":1,"maximum":1000,"default":100,"example":100,"type":"number","description":"Maximum number of records to return (1-1000)"},"cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response."},"sort_dir":{"default":"ASC","type":"string","enum":["ASC","DESC"],"description":"Sort direction by time bucket. ASC = oldest first (default, suited for backfills/charts). DESC = newest first (suited for \"latest N\" queries). Cursor pagination works in both directions; keep sort_dir constant within a paginated scan."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for bucketing results. The 1m grain is a persisted aggregate of finer source events; higher resolutions roll up those 1m records."},"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)"},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug (parent event grouping)"},"outcome":{"type":"string","enum":["YES","NO"],"description":"Filter by outcome side"}}}}}}}},"/api/v1/predictions/snapshot":{"get":{"description":"Returns a snapshot of all prediction instruments for a given exchange at a single minute. If no date is provided, returns the latest available snapshot. Category and event_slug are optional filters.","operationId":"Predictions Snapshot","parameters":[{"name":"exchange","required":false,"in":"query","description":"Exchange name (polymarket or hyperliquid)","schema":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"]}},{"name":"date","required":false,"in":"query","description":"Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.","schema":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string"}},{"name":"resolution","required":false,"in":"query","description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records.","schema":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"category","required":false,"in":"query","description":"Filter by market category (e.g., crypto, politics, sports)","schema":{"example":"crypto","type":"string"}},{"name":"event_slug","required":false,"in":"query","description":"Filter by event slug","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string"}},{"name":"keyword","required":false,"in":"query","description":"Keyword search to filter instruments by name (case-insensitive partial match)","schema":{"example":"bitcoin","type":"string"}},{"name":"instrument_name","required":false,"in":"query","description":"Filter to a specific instrument name (case-insensitive exact match)","schema":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"success":true,"data":[{"date":"2026-02-20 12:00:00","exchange":"polymarket","instrument_name":"will-bitcoin-reach-250000-by-december-31-2026-YES","probability":0.37,"bid_price":0.36,"ask_price":0.38,"total_liquidity":5000}],"meta":{"date":"2026-02-20T12:00:00.000Z","next_date":"2026-02-20T12:01:00.000Z"}}}},"description":""},"400":{"description":"Bad Request - Invalid parameters","content":{"application/json":{"example":{"statusCode":400,"message":["exchange must be a string","instrument_name must be a string","resolution must be one of: 1m, 5m, 1h","start must be a valid ISO 8601 date string"],"error":"Bad Request"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"example":{"error":"unauthorized","message":"Missing or invalid API key"}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"statusCode":429,"message":"Rate limit exceeded. Please retry after 60 seconds","error":"Too Many Requests"}}}}},"security":[{"X-API-Key":[]}],"summary":"Predictions Snapshot","tags":["Predictions"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"default":"polymarket","example":"polymarket","type":"string","enum":["polymarket","hyperliquid"],"description":"Exchange name (polymarket or hyperliquid)"},"date":{"format":"date-time","example":"2026-01-20T10:00:00Z","type":"string","description":"Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot."},"resolution":{"default":"1m","example":"1m","type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time resolution for the snapshot. The 1m default is a persisted aggregate of finer source events, not a raw exchange-event feed. Higher resolutions roll up those 1m records."},"category":{"example":"crypto","type":"string","description":"Filter by market category (e.g., crypto, politics, sports)"},"event_slug":{"example":"will-bitcoin-reach-250000-by-december-31-2026","type":"string","description":"Filter by event slug"},"keyword":{"example":"bitcoin","type":"string","description":"Keyword search to filter instruments by name (case-insensitive partial match)"},"instrument_name":{"example":"will-bitcoin-reach-250000-by-december-31-2026-YES","type":"string","description":"Filter to a specific instrument name (case-insensitive exact match)"}}}}}}}},"/api/v1/mcp":{"post":{"description":"Model Context Protocol (MCP) Streamable HTTP transport. Accepts JSON-RPC 2.0 requests for methods: initialize, tools/list, tools/call. In Claude, use this URL with Sign in now and Register automatically, no custom headers or manual client credentials, then authorize with your Laevitas API key. See /mcp for setup and the McpOAuth section for registration and PKCE S256.","operationId":"MCP Streamable HTTP","parameters":[],"requestBody":{"required":true,"description":"JSON-RPC 2.0 request","content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","id","method"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"],"example":"2.0"},"id":{"type":"integer","example":1},"method":{"type":"string","enum":["initialize","tools/list","tools/call"],"example":"tools/list"},"params":{"type":"object","description":"Method-specific parameters. For tools/call: { name: \"<tool>\", arguments: { ... } }"}}}}}},"responses":{"200":{"description":"JSON-RPC 2.0 response or SSE stream"}},"summary":"MCP JSON-RPC endpoint","tags":["MCP"]},"get":{"description":"Server-Sent Events stream for MCP notifications.","operationId":"MCP SSE Stream","parameters":[],"responses":{"200":{"description":"SSE event stream"}},"summary":"MCP SSE stream endpoint","tags":["MCP"]},"delete":{"description":"Terminates an MCP session.","operationId":"MCP Session Delete","parameters":[],"responses":{"200":{"description":"Session terminated"}},"summary":"MCP session cleanup","tags":["MCP"]}},"/api/v1/changelog":{"get":{"description":"Returns the customer-facing release changelog without private deployment or infrastructure metadata.","operationId":"Full Changelog","parameters":[],"responses":{"200":{"description":"Returns the complete changelog content","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"Markdown content of changelog"},"lastUpdated":{"type":"string","format":"date-time"}}}}}}},"summary":"Get full changelog","tags":["Changelog"]}},"/api/v1/changelog/latest":{"get":{"description":"Returns the newest release entry including version string, release date, and headline notes for quick upgrade checks.","operationId":"Latest Version","parameters":[],"responses":{"200":{"description":"Returns the latest version details from changelog","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string","example":"0.8.0"},"date":{"type":"string","example":"2024-01-15"},"changes":{"type":"array","items":{"type":"string"}}}}}}}},"summary":"Get latest version information","tags":["Changelog"]}},"/api/v1/changelog/data-corrections":{"get":{"description":"Returns machine-readable correction records including affected endpoints, fields and windows, deployment identity, closed-window behavior, validation, and recommended re-collection scope.","operationId":"Historical Data Corrections","parameters":[],"responses":{"200":{"description":"Returns the historical data correction feed","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","example":3},"feedRevision":{"type":"number","example":4},"lastUpdated":{"type":"string","format":"date-time"},"semantics":{"type":"object"},"corrections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["deployed","backfill_in_progress","superseded"]},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"summary":{"type":"string"},"cause":{"type":"string"},"deployment":{"type":"object","properties":{"deployedAt":{"type":"string","format":"date-time"},"releaseId":{"type":"string"}},"required":["deployedAt","releaseId"]},"affected":{"type":"array","items":{"type":"object"}},"changesClosedWindowResponsesWithoutBackfill":{"type":"boolean"},"recommendedRecollection":{"type":"string"},"validation":{"type":"array","items":{"type":"string"}}}}}}}}}}},"summary":"Get historical data correction records","tags":["Changelog"]}},"/api/v1/changelog/data-status":{"get":{"description":"Returns stable machine-readable records for live data incidents, planned maintenance, intentional series termination, and coverage-universe changes.","operationId":"Data Status and Coverage","parameters":[],"responses":{"200":{"description":"Returns the data status and coverage feed","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","example":1},"lastUpdated":{"type":"string","format":"date-time"},"channels":{"type":"object"},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["incident","coverage_change","planned_maintenance"]},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","scheduled","completed","cancelled"]},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":"string","format":"date-time","nullable":true},"summary":{"type":"string"},"impact":{"type":"string"},"scope":{"type":"object"},"customerAction":{"type":"string"},"nextUpdate":{"type":"string"},"updates":{"type":"array","items":{"type":"object"}}}}}}}}}}},"summary":"Get data incidents and coverage changes","tags":["Changelog"]}},"/api/v1/changelog/data-definitions":{"get":{"description":"Static, versioned definitions of audited options products and retained-history counterparts, shared with Swagger and MCP. Distinguishes observations, candles, trades and current catalogs; declares coverage lookup, causality limits and transport differences. Does not query history, certify completeness or change retention.","operationId":"Data Product Definitions","parameters":[{"name":"id","required":false,"in":"query","schema":{"enum":["options.ohlcvt","options.ticker_history","options.volatility","options.open_interest","options.volume","options.level1","options.reference_price","options.snapshot","options.trades","options.catalog","options.instrument_history","spot.ohlcvt","spot.ticker","spot.level1","spot.volume","spot.snapshot","spot.trades","spot.l2_orderbook","spot.l2_orderbook_raw","spot.catalog","spot.metadata","perpetuals.ohlcvt","perpetuals.ticker_history","perpetuals.open_interest","perpetuals.volume","perpetuals.level1","perpetuals.reference_price","perpetuals.carry","perpetuals.orderbook","perpetuals.orderbook_raw","perpetuals.trades","perpetuals.trades_summary","perpetuals.flow","perpetuals.liquidations","perpetuals.snapshot","perpetuals.catalog","futures.ohlcvt","futures.ticker_history","futures.open_interest","futures.volume","futures.level1","futures.reference_price","futures.carry","futures.orderbook","futures.orderbook_raw","futures.trades","futures.trades_summary","futures.flow","futures.liquidations","futures.snapshot","futures.catalog","perpetuals.instrument_history","futures.instrument_history","derivatives.funding_history","market.snapshot_history","spot.retained_candles"],"type":"string"}}],"responses":{"200":{"description":"Definition catalogue; omit id to list the documented products.","content":{"application/json":{"schema":{"type":"object","properties":{"schema_version":{"type":"integer","example":1},"definition_revision":{"type":"string","example":"2026-10-01"},"guide":{"type":"string"},"scope":{"type":"string"},"semantics":{"type":"object","additionalProperties":{"type":"string"}},"definitions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"},"mcp_tool":{"type":"string"},"kind":{"type":"string","enum":["state","candle","chain","trades","events","aggregate","catalog","mixed_metrics"]},"description":{"type":"string"},"timestamp":{"type":"object","properties":{"field":{"type":"string"},"format":{"type":"string"},"meaning":{"type":"string"}}},"granularity":{"type":"string"},"units":{"type":"object","additionalProperties":{"type":"string"}},"coverage_endpoint_id":{"type":"string","nullable":true},"coverage_note":{"type":"string"},"request_semantics":{"type":"string"},"universe":{"type":"string"},"mcp_notes":{"type":"string"}}}}}}}}},"400":{"description":"Unknown dataset id."}},"summary":"Discover dataset meaning, units and timestamp conventions","tags":["Changelog"]}},"/api/v1/changelog/data-coverage":{"get":{"description":"Without endpoint_id, lists the stable endpoint identifiers that support coverage discovery. With endpoint_id, returns earliest/latest stored rows observed for the supplied optional exchange, currency, and instrument selector, plus any certified source-completeness watermark. Observed boundaries are not completeness or availability-lag guarantees.","operationId":"Observed Data Coverage","parameters":[{"name":"endpoint_id","required":false,"in":"query","schema":{"example":"options.vol_surface_by_expiry","type":"string"}},{"name":"exchange","required":false,"in":"query","schema":{"example":"deribit","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"example":"BTC","type":"string"}},{"name":"instrument_name","required":false,"in":"query","schema":{"example":"BTC-PERPETUAL","type":"string"}}],"responses":{"200":{"description":"Returns supported endpoint identifiers or scoped observed coverage and completeness metadata"}},"summary":"Discover selector-scoped observed data boundaries","tags":["Changelog"]}},"/api/v1/changelog/status":{"get":{"description":"Compares the public API release version with the latest customer-facing changelog entry.","operationId":"Version Status","parameters":[],"responses":{"200":{"description":"Returns version consistency status between app and changelog","content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"object","properties":{"version":{"type":"string"},"apiVersion":{"type":"string"},"releaseId":{"type":"string"}}},"changelog":{"type":"object","properties":{"version":{"type":"string"},"date":{"type":"string"},"changes":{"type":"number"}}},"status":{"type":"string","enum":["in_sync","app_ahead","changelog_ahead"]},"message":{"type":"string"}}}}}}},"summary":"Get version synchronization status","tags":["Changelog"]}},"/api/v1/changelog/versions":{"get":{"description":"Lists every version captured in the changelog along with release dates so clients can build release timelines.","operationId":"All Versions","parameters":[],"responses":{"200":{"description":"Returns list of all versions in the changelog","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string","example":"0.8.0"},"date":{"type":"string","example":"2024-01-15"},"current":{"type":"boolean","description":"Whether this is the current app version"}}}}}}}},"summary":"Get all versions from changelog","tags":["Changelog"]}},"/api/v1/changelog/history-migration":{"get":{"description":"Public rollout status only. Subscription eligibility and history rights are checked on each historical request. Existing v1 integrations remain available; no sunset date is announced.","operationId":"History Migration Availability","parameters":[],"responses":{"200":{"description":"Current rollout status, migration links and coexistence policy"}},"summary":"Check retained-history migration availability and download the migration kit","tags":["Changelog"]}},"/api/v1/options/backtests/strategies":{"get":{"operationId":"BacktestsController_strategies","parameters":[],"responses":{"200":{"description":"Scope, schedules, execution assumptions, limits, templates and request schema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestStrategies"}}}},"401":{"description":"Invalid or expired authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"402":{"description":"An active API key or supported payment authentication is required."},"403":{"description":"Account identity or subscription history entitlement is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"404":{"description":"Unknown, expired or inaccessible job, or backtesting is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"429":{"description":"Request-rate limit or capacity exceeded. One outstanding job per account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"503":{"description":"Temporarily unavailable. Retry uncertain submission with the same Idempotency-Key and body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}}},"security":[{"X-API-Key":[]}],"summary":"Backtester capabilities and built-in option leg templates","tags":["Options Backtests"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/options/backtests":{"post":{"description":"Queues an account-owned research simulation. Deribit BTC/ETH inverse and BTC, ETH, SOL, XRP, AVAX, TRX and HYPE USDC options; choose one product and collateral per job (see strategies discovery). Shared capital/margin; up to 365 days, 8 components and 24 legs. Start/end and entries are UTC whole hours; expiry_days targets 08:00 UTC on an offset calendar date. Optional expiry_selection=nearest_listed chooses the closest expiry observed at entry; default exact is unchanged. End must be at least one hour in the past. Minute simulation and hourly chart reporting are defaults. L1 prices and displayed size constrain all-or-none entries. Research margin is not historical exchange margin. Responses are unwrapped JSON, without data/meta. Download results promptly: retention is at most 24 hours and recent-result storage is bounded.","operationId":"BacktestsController_submit","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Stable client-generated request key, 8–128 URL-safe characters. Reuse on an uncertain submission.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestRequest"},"examples":{"weekly_short_daily_long":{"summary":"Shared capital, weekly short/daily long straddle. Fee rates are illustrative.","value":{"exchange":"deribit","currency":"BTC","start":"2026-09-04T08:00:00Z","end":"2026-09-05T09:00:00Z","initial_capital":2,"capital_model":"shared","margin_model":"research_stress_v1","resolution":"1m","equity_interval":"1h","execution_model":"bid_ask","fees":{"trade_rate":0.0003,"trade_premium_cap":0.125,"settlement_rate":0.00015,"settlement_premium_cap":0.125},"slippage_bps":0,"missing_entry_policy":"fail","components":[{"id":"weekly_short","first_entry_at":"2026-09-04T08:00:00Z","roll_every_days":7,"expiry_days":7,"legs":[{"id":"call","option_type":"C","side":"sell","quantity":0.1,"strike_rank":1,"selection":{"kind":"atm"}},{"id":"put","option_type":"P","side":"sell","quantity":0.1,"strike_rank":1,"selection":{"kind":"atm"}}]},{"id":"daily_long","first_entry_at":"2026-09-04T08:00:00Z","roll_every_days":1,"expiry_days":1,"legs":[{"id":"call","option_type":"C","side":"buy","quantity":0.1,"strike_rank":1,"selection":{"kind":"atm"}},{"id":"put","option_type":"P","side":"buy","quantity":0.1,"strike_rank":1,"selection":{"kind":"atm"}}]}]}}}}}},"responses":{"202":{"description":"Accepted job; poll status before retrieving the result. Idempotent retries return the existing state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestJob"},"example":{"job_id":"bt_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","status":"queued","progress":0,"engine_version":"shared-options-v1.9","build_sha":null,"submitted_at":"2026-09-16T08:00:00.000Z","expires_at":"2026-09-17T08:00:00.000Z"}}}},"400":{"description":"Invalid body, schedule, date range or idempotency key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"401":{"description":"Invalid or expired authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"402":{"description":"An active API key or supported payment authentication is required."},"403":{"description":"Account identity or subscription history entitlement is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"404":{"description":"Unknown, expired or inaccessible job, or backtesting is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"409":{"description":"Idempotency key already used with different settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"429":{"description":"Request-rate limit or capacity exceeded. One outstanding job per account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"503":{"description":"Temporarily unavailable. Retry uncertain submission with the same Idempotency-Key and body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}}},"security":[{"X-API-Key":[]}],"summary":"Queue a historical options portfolio backtest","tags":["Options Backtests"]}},"/api/v1/options/backtests/{id}":{"get":{"operationId":"BacktestsController_status","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","pattern":"^bt_[a-f0-9]{64}$"},"description":"Account-owned job_id returned by submission."}],"responses":{"200":{"description":"Current state; failed/cancelled jobs carry a structured error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestJob"}}}},"401":{"description":"Invalid or expired authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"402":{"description":"An active API key or supported payment authentication is required."},"403":{"description":"Account identity or subscription history entitlement is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"404":{"description":"Unknown, expired or inaccessible job, or backtesting is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"429":{"description":"Request-rate limit or capacity exceeded. One outstanding job per account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"503":{"description":"Temporarily unavailable. Retry uncertain submission with the same Idempotency-Key and body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}}},"security":[{"X-API-Key":[]}],"summary":"Backtest job state and progress","tags":["Options Backtests"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/options/backtests/{id}/result":{"get":{"operationId":"BacktestsController_result","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","pattern":"^bt_[a-f0-9]{64}$"}},{"name":"offsets","required":false,"in":"query","description":"URL-encoded JSON object of compact section offsets. Each section returns its own next_offset.","schema":{"example":"{\"executions\":20}","type":"string"}},{"name":"limit","required":false,"in":"query","description":"Compact section page size, 1–50 (default 20). The byte budget can reduce returned counts; follow next_offset.","schema":{"type":"number"}},{"name":"equity_interval","required":false,"in":"query","description":"Read-time downsampling only; does not rerun or synthesize points.","schema":{"enum":["1m","1h","4h","1d"],"type":"string"}},{"name":"format","required":false,"in":"query","description":"Default full. Compact paginates arrays; inspect result.view.","schema":{"enum":["full","compact"],"type":"string"}}],"responses":{"200":{"description":"Unwrapped job_id and result. Amounts are in collateral currency. Inspect termination, completed_through and data_quality.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestResultResponse"}}}},"401":{"description":"Invalid or expired authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"402":{"description":"An active API key or supported payment authentication is required."},"403":{"description":"Account identity or subscription history entitlement is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"404":{"description":"Unknown, expired or inaccessible job, or backtesting is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"409":{"description":"No successful result; inspect job status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"429":{"description":"Request-rate limit or capacity exceeded. One outstanding job per account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"503":{"description":"Temporarily unavailable. Retry uncertain submission with the same Idempotency-Key and body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}}},"security":[{"X-API-Key":[]}],"summary":"Combined performance, full equity curve and individual executions","tags":["Options Backtests"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"offsets":{"example":"{\"executions\":20}","type":"string","description":"URL-encoded JSON object of compact section offsets. Each section returns its own next_offset."},"limit":{"type":"number","description":"Compact section page size, 1–50 (default 20). The byte budget can reduce returned counts; follow next_offset."},"equity_interval":{"enum":["1m","1h","4h","1d"],"type":"string","description":"Read-time downsampling only; does not rerun or synthesize points."},"format":{"enum":["full","compact"],"type":"string","description":"Default full. Compact paginates arrays; inspect result.view."}}}}}}}},"/api/v1/options/backtests/{id}/cancel":{"post":{"operationId":"BacktestsController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","pattern":"^bt_[a-f0-9]{64}$"}}],"responses":{"202":{"description":"Cooperative cancellation requested. Poll until terminal; completed jobs remain completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestJob"}}}},"401":{"description":"Invalid or expired authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"402":{"description":"An active API key or supported payment authentication is required."},"403":{"description":"Account identity or subscription history entitlement is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"404":{"description":"Unknown, expired or inaccessible job, or backtesting is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"429":{"description":"Request-rate limit or capacity exceeded. One outstanding job per account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}},"503":{"description":"Temporarily unavailable. Retry uncertain submission with the same Idempotency-Key and body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestHttpError"}}}}},"security":[{"X-API-Key":[]}],"summary":"Request cancellation of an account-owned backtest","tags":["Options Backtests"]}},"/oauth/login":{"get":{"operationId":"OAuthLoginController_showLoginPage","parameters":[],"responses":{"200":{"description":""}},"tags":["OAuthLogin"]},"post":{"operationId":"OAuthLoginController_handleLogin","parameters":[],"responses":{"201":{"description":""}},"tags":["OAuthLogin"]}},"/oauth/revoke":{"post":{"operationId":"OAuthRevocationController_revoke","parameters":[],"responses":{"200":{"description":""}},"tags":["OAuthRevocation"]}},"/.well-known/oauth-protected-resource":{"get":{"operationId":"McpOAuthController_getProtectedResourceMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/.well-known/oauth-authorization-server":{"get":{"operationId":"McpOAuthController_getAuthorizationServerMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/oauth/register":{"post":{"operationId":"McpOAuthController_registerClient","parameters":[],"responses":{"201":{"description":"RFC 7591 registration metadata. Confidential clients receive a generated secret; public clients do not.","headers":{"Cache-Control":{"schema":{"type":"string","enum":["no-store"]}}},"content":{"application/json":{"schema":{"type":"object","required":["client_id","client_id_issued_at","redirect_uris","grant_types","response_types","token_endpoint_auth_method"],"properties":{"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Approved callbacks; exact matches required.","minItems":1},"grant_types":{"type":"array","items":{"type":"string"},"description":"Anonymous clients: authorization_code and/or refresh_token; both are the default."},"response_types":{"type":"array","items":{"type":"string"},"description":"Anonymous clients: code only (the default)."},"token_endpoint_auth_method":{"type":"string","enum":["none","client_secret_post","client_secret_basic"],"default":"none","description":"client_secret_basic requires authenticated registration. Omission defaults to none."},"scope":{"type":"string","description":"Optional space-separated mcp:tools and offline_access scopes."},"client_id":{"type":"string","description":"Generated automatically; no shared ID needs provisioning."},"client_id_issued_at":{"type":"integer","description":"Unix seconds."},"client_secret":{"type":"string","description":"Confidential clients only. Store securely; send at token exchange and refresh."},"client_secret_expires_at":{"type":"integer","enum":[0],"description":"Confidential clients only; 0 means no scheduled expiry."}}}}}},"400":{"description":"invalid_redirect_uri or invalid_client_metadata"},"401":{"description":"invalid_token: a supplied registration credential was invalid"},"429":{"description":"Registration limit reached; wait for Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Registration could not be persisted. No successful registration is returned."},"503":{"description":"Registration temporarily unavailable."}},"tags":["McpOAuth"],"security":[],"summary":"Register an MCP OAuth client","description":"Registration is separate from user authorization. No API key is required for none or client_secret_post clients. All redirect URIs must be approved: exact configured HTTPS callbacks or HTTP localhost/127.0.0.1 without userinfo. Anonymous grants are authorization_code/refresh_token and response type code. Optional supplied registration credentials must validate; authenticated clients may also use client_secret_basic. Every authorization requires PKCE S256 and the user signs in with their Laevitas API key. Claude users should select Sign in now and Register automatically, with no custom headers or manually entered credentials. Keep confidential registration responses private; do not log client_secret.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect_uris"],"properties":{"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Approved callbacks; exact matches required.","minItems":1},"grant_types":{"type":"array","items":{"type":"string"},"description":"Anonymous clients: authorization_code and/or refresh_token; both are the default."},"response_types":{"type":"array","items":{"type":"string"},"description":"Anonymous clients: code only (the default)."},"token_endpoint_auth_method":{"type":"string","enum":["none","client_secret_post","client_secret_basic"],"default":"none","description":"client_secret_basic requires authenticated registration. Omission defaults to none."},"scope":{"type":"string","description":"Optional space-separated mcp:tools and offline_access scopes."}}},"examples":{"claude":{"summary":"Hosted connector automatic registration (no API key)","value":{"client_name":"Claude","redirect_uris":["https://claude.ai/api/mcp/auth_callback"],"grant_types":["authorization_code","refresh_token"],"response_types":["code"],"token_endpoint_auth_method":"client_secret_post","scope":"mcp:tools offline_access"}},"public":{"summary":"Public client (no secret)","value":{"redirect_uris":["http://127.0.0.1:3000/callback"],"token_endpoint_auth_method":"none"}}}}}}}},"/oauth/authorize":{"get":{"operationId":"McpOAuthController_authorize","parameters":[{"name":"client_id","in":"query","required":true,"description":"Registered client ID.","schema":{"type":"string"}},{"name":"redirect_uri","in":"query","required":true,"description":"Exact registered callback URI.","schema":{"type":"string"}},{"name":"response_type","in":"query","required":true,"description":"code","schema":{"type":"string"}},{"name":"code_challenge","in":"query","required":true,"description":"Unpadded base64url SHA-256 of the verifier (43 characters).","schema":{"type":"string"}},{"name":"code_challenge_method","in":"query","required":true,"description":"S256","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"Space-separated registered scopes.","schema":{"type":"string"}},{"name":"state","in":"query","required":false,"description":"Client-generated value used to correlate the callback; strongly recommended.","schema":{"type":"string"}},{"name":"resource","in":"query","required":false,"description":"https://apiv2.laevitas.ch/api/v1/mcp","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["McpOAuth"],"description":"Start user authorization. Every client (public or confidential) must use PKCE S256. The callback must exactly match one registered for the client."}},"/oauth/callback":{"get":{"operationId":"McpOAuthController_handleProviderCallback","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/oauth/token":{"post":{"operationId":"McpOAuthController_exchangeToken","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"],"description":"Exchange an authorization code or refresh a token using form encoding. client_secret_post clients include their generated client_secret for both grants. The original PKCE verifier is required for authorization-code exchange.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["grant_type"],"properties":{"grant_type":{"type":"string","enum":["authorization_code","refresh_token"]},"client_id":{"type":"string","description":"Required in the form for none/client_secret_post; supplied in HTTP Basic credentials for client_secret_basic."},"client_secret":{"type":"string","description":"Required for client_secret_post; omit for public clients."},"code":{"type":"string","description":"Required for authorization_code."},"code_verifier":{"type":"string","description":"Original PKCE verifier; required for authorization_code."},"redirect_uri":{"type":"string","description":"Original callback for authorization_code."},"refresh_token":{"type":"string","description":"Required for refresh_token."}}}}}}}},"/api/v1/playground/top-pairs":{"get":{"description":"Powers the WebSocket playground pair picker. Returns the N most active instruments per exchange for the chosen market, computed from `v2_{market}_ohlcvt` over the last 24h. Requires an API key like any other endpoint — protected by the global `ApiKeyGuard` + rate limiter so the playground page can't be scraped anonymously. Server-side cached 1h (rankings barely shift hour-to-hour).","operationId":"PlaygroundController_getTopPairs","parameters":[{"name":"market","required":true,"in":"query","schema":{"enum":["futures","perpetuals","options","spot","predictions"],"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"market":{"type":"string","enum":["futures","perpetuals","options","spot","predictions"]},"limit":{"type":"integer"},"exchanges":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"instrument_name":{"type":"string"},"volume_24h":{"type":"number"},"last_price":{"type":"number"}}}}}}}}}}},"summary":"Top instruments by 24h volume per exchange","tags":["Playground"]}},"/api/v1/market/summary-history":{"get":{"description":"Two legacy summary variants sharing one retained calculation. Samples observations rather than aggregating requested intervals. OI-weighted prices/funding/yield, source 24h volume, rolling 24h liquidations and hourly market-cap enrichment. Derivatives summary also adds aggregate spot realized volatility and truncates only the OI/volume ratio. Retained duplicates, revisions and missing observations are not completeness or original point-in-time certified. Eligible subscribers share the same history rights and limits across REST and MCP; x402 is not enabled.","operationId":"SummaryHistoryController_read","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["derivatives_summary","futures_alt_summary"],"description":"Both series summarize perpetual contracts. derivatives_summary adds aggregate spot realized volatility and the legacy truncated OI/volume ratio."}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_-]{0,31}$","description":"Normalized legacy underlying currency, e.g. BTC. Monetary totals are USD; this is not a reporting-currency selector."}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 timestamp with timezone, truncated to seconds."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 timestamp, not an exclusive bound."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"native","description":"UTC sample grid, not interval aggregation. Volume is the source 24h value; liquidations use a rolling 24h window.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"description":"Rows per page; retained market-cap duplicates may produce more than one row per timestamp.","type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["market.derivative_summary_observations"]},"series":{"type":"string","enum":["derivatives_summary","futures_alt_summary"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["market.derivative_summary_observations"]},"exchange_supported":{"type":"string","nullable":true,"enum":[null]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["market.derivative_summary_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false},"count_basis":{"type":"string","enum":["rows"]}},"required":["total","items","page","total_pages","limit","availability","count_basis"],"additionalProperties":false},"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation timestamp, Unix milliseconds UTC."},"price":{"nullable":true,"description":"OI-weighted source price; legacy sum-of-prices fallback when total OI is non-positive. Source price convention is retained, not a new spot-index calculation.","type":"number"},"yield":{"nullable":true,"description":"OI-weighted source yield/APR, preserving the legacy source units.","type":"number"},"next_fr":{"nullable":true,"description":"OI-weighted announced next funding rate, preserving source units and null handling.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of retained perpetual open interest, USD notional.","type":"number"},"volume":{"nullable":true,"description":"Sum of source rolling-24h perpetual volume, USD. Not turnover within the requested sample period.","type":"number"},"funding":{"nullable":true,"description":"OI-weighted current funding field; not a funding payment or a newly annualized rate.","type":"number"},"liquidations_long":{"nullable":true,"description":"Rolling 24h USD long liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"liquidations_short":{"nullable":true,"description":"Rolling 24h USD short liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"oi_volume24h":{"nullable":true,"description":"Dimensionless open-interest / rolling-24h-volume ratio. Derivatives summary truncates this ratio to three decimals; alt summary returns the legacy untruncated ratio, or zero for non-positive volume.","type":"number"},"market_cap":{"nullable":true,"description":"Hourly source market capitalization, USD; source join behavior is retained.","type":"number"},"rv":{"type":"object","properties":{"3":{"nullable":true,"type":"number"},"7":{"nullable":true,"type":"number"},"30":{"nullable":true,"type":"number"},"60":{"nullable":true,"type":"number"},"90":{"nullable":true,"type":"number"},"180":{"nullable":true,"type":"number"},"270":{"nullable":true,"type":"number"},"365":{"nullable":true,"type":"number"}},"additionalProperties":false,"description":"Aggregate spot realized volatility in percentage points, keyed by lookback days. Empty object if the page-bounded source has no matching UTC hour; unavailable properties are omitted."}},"required":["date","price","yield","next_fr","open_interest","volume","funding","liquidations_long","liquidations_short","oi_volume24h","market_cap","rv"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation timestamp, Unix milliseconds UTC."},"price":{"nullable":true,"description":"OI-weighted source price; legacy sum-of-prices fallback when total OI is non-positive. Source price convention is retained, not a new spot-index calculation.","type":"number"},"yield":{"nullable":true,"description":"OI-weighted source yield/APR, preserving the legacy source units.","type":"number"},"next_fr":{"nullable":true,"description":"OI-weighted announced next funding rate, preserving source units and null handling.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of retained perpetual open interest, USD notional.","type":"number"},"volume":{"nullable":true,"description":"Sum of source rolling-24h perpetual volume, USD. Not turnover within the requested sample period.","type":"number"},"funding":{"nullable":true,"description":"OI-weighted current funding field; not a funding payment or a newly annualized rate.","type":"number"},"liquidations_long":{"nullable":true,"description":"Rolling 24h USD long liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"liquidations_short":{"nullable":true,"description":"Rolling 24h USD short liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"oi_volume24h":{"nullable":true,"description":"Dimensionless open-interest / rolling-24h-volume ratio. Derivatives summary truncates this ratio to three decimals; alt summary returns the legacy untruncated ratio, or zero for non-positive volume.","type":"number"},"market_cap":{"nullable":true,"description":"Hourly source market capitalization, USD; source join behavior is retained.","type":"number"}},"required":["date","price","yield","next_fr","open_interest","volume","funding","liquidations_long","liquidations_short","oi_volume24h","market_cap"],"additionalProperties":false}]}}},"required":["dataset_id","series","meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained aggregate perpetual summary history","tags":["Market Summary History"]}},"/api/v1/historical/derivs/summary/{currency}":{"get":{"operationId":"LegacySummaryHistoryController_derivatives","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes that whole UTC day; omitted end includes tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not candle aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"One-based query page; omitted metadata retains the legacy route-specific default.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Rows per page, default 10; maximum 1440.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":0,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation timestamp, Unix milliseconds UTC."},"price":{"nullable":true,"description":"OI-weighted source price; legacy sum-of-prices fallback when total OI is non-positive. Source price convention is retained, not a new spot-index calculation.","type":"number"},"yield":{"nullable":true,"description":"OI-weighted source yield/APR, preserving the legacy source units.","type":"number"},"next_fr":{"nullable":true,"description":"OI-weighted announced next funding rate, preserving source units and null handling.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of retained perpetual open interest, USD notional.","type":"number"},"volume":{"nullable":true,"description":"Sum of source rolling-24h perpetual volume, USD. Not turnover within the requested sample period.","type":"number"},"funding":{"nullable":true,"description":"OI-weighted current funding field; not a funding payment or a newly annualized rate.","type":"number"},"liquidations_long":{"nullable":true,"description":"Rolling 24h USD long liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"liquidations_short":{"nullable":true,"description":"Rolling 24h USD short liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"oi_volume24h":{"nullable":true,"description":"Dimensionless open-interest / rolling-24h-volume ratio. Derivatives summary truncates this ratio to three decimals; alt summary returns the legacy untruncated ratio, or zero for non-positive volume.","type":"number"},"market_cap":{"nullable":true,"description":"Hourly source market capitalization, USD; source join behavior is retained.","type":"number"},"rv":{"type":"object","properties":{"3":{"nullable":true,"type":"number"},"7":{"nullable":true,"type":"number"},"30":{"nullable":true,"type":"number"},"60":{"nullable":true,"type":"number"},"90":{"nullable":true,"type":"number"},"180":{"nullable":true,"type":"number"},"270":{"nullable":true,"type":"number"},"365":{"nullable":true,"type":"number"}},"additionalProperties":false,"description":"Aggregate spot realized volatility in percentage points, keyed by lookback days. Empty object if the page-bounded source has no matching UTC hour; unavailable properties are omitted."}},"required":["date","price","yield","next_fr","open_interest","volume","funding","liquidations_long","liquidations_short","oi_volume24h","market_cap","rv"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible derivatives summary with realized volatility","tags":["Legacy Market Summary History"]}},"/api/v1/historical/futures/alt_summary/{currency}":{"get":{"operationId":"LegacySummaryHistoryController_alt","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes that whole UTC day; omitted end includes tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not candle aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"One-based query page; omitted metadata retains the legacy route-specific default.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Rows per page, default 10; maximum 1440.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":0,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation timestamp, Unix milliseconds UTC."},"price":{"nullable":true,"description":"OI-weighted source price; legacy sum-of-prices fallback when total OI is non-positive. Source price convention is retained, not a new spot-index calculation.","type":"number"},"yield":{"nullable":true,"description":"OI-weighted source yield/APR, preserving the legacy source units.","type":"number"},"next_fr":{"nullable":true,"description":"OI-weighted announced next funding rate, preserving source units and null handling.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of retained perpetual open interest, USD notional.","type":"number"},"volume":{"nullable":true,"description":"Sum of source rolling-24h perpetual volume, USD. Not turnover within the requested sample period.","type":"number"},"funding":{"nullable":true,"description":"OI-weighted current funding field; not a funding payment or a newly annualized rate.","type":"number"},"liquidations_long":{"nullable":true,"description":"Rolling 24h USD long liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"liquidations_short":{"nullable":true,"description":"Rolling 24h USD short liquidations, rounded to whole dollars from retained minute aggregate states.","type":"number"},"oi_volume24h":{"nullable":true,"description":"Dimensionless open-interest / rolling-24h-volume ratio. Derivatives summary truncates this ratio to three decimals; alt summary returns the legacy untruncated ratio, or zero for non-positive volume.","type":"number"},"market_cap":{"nullable":true,"description":"Hourly source market capitalization, USD; source join behavior is retained.","type":"number"}},"required":["date","price","yield","next_fr","open_interest","volume","funding","liquidations_long","liquidations_short","oi_volume24h","market_cap"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures alt summary","tags":["Legacy Market Summary History"]}},"/api/v1/options/trade-history":{"get":{"description":"V1-compatible trade observations with row pagination and source-native quantities, premiums, nulls and opaque IDs. Ordinary venues use retained trade history; Paradex uses its explicit exchange-native trade source. Not strategy-grouped trades, candle aggregation or order-book replay. Ordinary rows have date-only ordering with no same-second tie guarantee; Paradex uses source timestamp then trade ID. Current corrected view, not certified originally-published or complete trade coverage. API key/OAuth share subscriber history rights and account quotas. x402 inactive.","operationId":"OptionTradeHistoryController_read","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["deribit","okx","binance","bybit","paradex"],"description":"Retained options venue; does not certify that a trade exists for the requested day."}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$","description":"Exact source currency/product selector, uppercase. No inverse/linear product folding."}},{"name":"date","required":true,"in":"query","schema":{"type":"string","format":"date","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])))$","description":"UTC calendar day, YYYY-MM-DD. Individual retained trades, not candles or strategy-grouped trades."}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"description":"Number of trade rows per page, at most 1440. Default 10.","type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["options.trade_history"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991},"count_basis":{"type":"string","enum":["trade_rows"]},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["options.trade_history"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["options.trade_history"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","page","limit","items","total_pages","count_basis","availability"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$","description":"Retained source trade time, UTC YYYY-MM-DD HH:mm:ss. Not ingestion/publication time. Paradex subsecond ordering is retained but the legacy date renders whole seconds."},"market":{"type":"string","description":"Lowercase legacy venue name. Native Paradex exchange is mapped explicitly, not through its unrelated numeric enricher market ID."},"currency":{"type":"string","description":"Source currency/product selector; preserved without product merging."},"maturity":{"type":"string","description":"Source expiry label DMMMYY, uppercase; not a time-to-expiry bucket."},"strike":{"type":"number","description":"Source contract strike in the venue pricing convention."},"option_type":{"type":"string","description":"Source option type, normally C (call) or P (put)."},"direction":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Legacy aggressor side: 0 buy, 1 sell. Paradex native buy/sell is explicitly mapped to this convention."},"amount":{"type":"number","description":"Retained trade quantity in the source venue/product units. No new contract multiplier or USD conversion is applied."},"price":{"type":"number","description":"Executed option premium per source unit: inverse coin premium and linear USD/stablecoin premium remain venue-specific. Not underlying notional."},"index_price":{"type":"number","description":"Stored underlying/index reference attached to the trade. No reconstruction or substitution."},"mark_price":{"nullable":true,"description":"Stored option mark premium in the same source price convention; null means unavailable, not zero.","type":"number"},"implied_vol":{"nullable":true,"description":"Trade implied volatility in percentage points as stored by the source; null remains unavailable.","type":"number"},"block_trade_id":{"nullable":true,"description":"Opaque source block identifier. Empty string and null are distinct and are preserved.","type":"string"},"trade_id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string","nullable":true,"enum":[null]}],"description":"Opaque source trade identifier. Preserve string/numeric/null representation; do not interpret Paradex IDs as numbers."},"tick_direction":{"nullable":true,"description":"Source tick-direction code; venue-specific. Null is retained.","type":"number"},"liquidation":{"nullable":true,"description":"Source liquidation indication, not a standardized boolean. Native Paradex does not supply this legacy field, so it is null.","type":"string"},"trade_seq":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}],"description":"Source sequence if retained. Paradex is null. Not a public revision sequence or ingestion-order guarantee."}},"required":["date","market","currency","maturity","strike","option_type","direction","amount","price","index_price","mark_price","implied_vol","block_trade_id","trade_id","tick_direction","liquidation","trade_seq"],"additionalProperties":false}}},"required":["dataset_id","meta","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained individual option trades for one UTC day","tags":["Option Trade History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","enum":["deribit","okx","binance","bybit","paradex"],"description":"Retained options venue; does not certify that a trade exists for the requested day."},"currency":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$","description":"Exact source currency/product selector, uppercase. No inverse/linear product folding."},"date":{"type":"string","format":"date","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])))$","description":"UTC calendar day, YYYY-MM-DD. Individual retained trades, not candles or strategy-grouped trades."},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"description":"Number of trade rows per page, at most 1440. Default 10.","type":"integer","minimum":1,"maximum":1440}},"required":["exchange","currency","date"]}}}}}},"/api/v1/historical/options/trades/{market}/{currency}":{"get":{"description":"Preserves the date selector, source string timestamps, source units and {meta:{total,page,items},items} envelope. No total_pages field on this compatibility route.","operationId":"LegacyOptionTradeHistoryController_read","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Trade rows per page, default 10."},{"name":"page","required":false,"in":"query","description":"Trade-row page, default 1.","schema":{"type":"number"}},{"name":"date","required":true,"in":"query","description":"Legacy date-only, ISO instant or 10/13-digit epoch. Its UTC calendar day is selected.","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Case-insensitive source currency/product selector.","schema":{"type":"string"}},{"name":"market","required":true,"in":"path","description":"Case-insensitive retained venue: DERIBIT, BINANCE, OKX, BYBIT or PARADEX.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","page","items"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$","description":"Retained source trade time, UTC YYYY-MM-DD HH:mm:ss. Not ingestion/publication time. Paradex subsecond ordering is retained but the legacy date renders whole seconds."},"market":{"type":"string","description":"Lowercase legacy venue name. Native Paradex exchange is mapped explicitly, not through its unrelated numeric enricher market ID."},"currency":{"type":"string","description":"Source currency/product selector; preserved without product merging."},"maturity":{"type":"string","description":"Source expiry label DMMMYY, uppercase; not a time-to-expiry bucket."},"strike":{"type":"number","description":"Source contract strike in the venue pricing convention."},"option_type":{"type":"string","description":"Source option type, normally C (call) or P (put)."},"direction":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Legacy aggressor side: 0 buy, 1 sell. Paradex native buy/sell is explicitly mapped to this convention."},"amount":{"type":"number","description":"Retained trade quantity in the source venue/product units. No new contract multiplier or USD conversion is applied."},"price":{"type":"number","description":"Executed option premium per source unit: inverse coin premium and linear USD/stablecoin premium remain venue-specific. Not underlying notional."},"index_price":{"type":"number","description":"Stored underlying/index reference attached to the trade. No reconstruction or substitution."},"mark_price":{"nullable":true,"description":"Stored option mark premium in the same source price convention; null means unavailable, not zero.","type":"number"},"implied_vol":{"nullable":true,"description":"Trade implied volatility in percentage points as stored by the source; null remains unavailable.","type":"number"},"block_trade_id":{"nullable":true,"description":"Opaque source block identifier. Empty string and null are distinct and are preserved.","type":"string"},"trade_id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string","nullable":true,"enum":[null]}],"description":"Opaque source trade identifier. Preserve string/numeric/null representation; do not interpret Paradex IDs as numbers."},"tick_direction":{"nullable":true,"description":"Source tick-direction code; venue-specific. Null is retained.","type":"number"},"liquidation":{"nullable":true,"description":"Source liquidation indication, not a standardized boolean. Native Paradex does not supply this legacy field, so it is null.","type":"string"},"trade_seq":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}],"description":"Source sequence if retained. Paradex is null. Not a public revision sequence or ingestion-order guarantee."}},"required":["date","market","currency","maturity","strike","option_type","direction","amount","price","index_price","mark_price","implied_vol","block_trade_id","trade_id","tick_direction","liquidation","trade_seq"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible individual option trade history","tags":["Legacy Option Trade History"]}},"/api/v1/options/current-analytics":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_native","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["atm_term_structure","gamma_by_strike","oi_by_expiry","oi_by_strike","oi_by_type","instrument_oi_change","volume_buy_sell","iv_by_strike","iv_table","snapshot","market_breakdown","currency_breakdown","skew_by_strike"]}},{"name":"exchange","required":false,"in":"query","schema":{"description":"Legacy source venue, or aggregate where supported by the family. Omit for market/currency breakdowns.","type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9][A-Za-z0-9_]*$"}},{"name":"currency","required":false,"in":"query","schema":{"description":"Underlying selector; BTC_USDC and BTC are distinct retained source products. Required except for breakdowns.","type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9][A-Za-z0-9_]*$"}},{"name":"maturity","required":false,"in":"query","schema":{"description":"Listed expiry. Omit to select all for gamma; use one expiry or all for strike IV/OI and buy/sell volume. Not a fixed-tenor day count.","type":"string","maxLength":450}},{"name":"option_type","required":false,"in":"query","schema":{"description":"Required only for iv_by_strike. Call/put, not trade direction.","type":"string","enum":["C","P"]}},{"name":"hours","required":false,"in":"query","schema":{"description":"Required only for instrument_oi_change. Legacy 720 uses one calendar month, not exactly 720 clock hours.","type":"string","enum":["1","2","4","8","12","18","24","48","168","336","504","720"]}},{"name":"metric","required":false,"in":"query","schema":{"description":"Required only for market_breakdown/currency_breakdown; outstanding quantity or source rolling volume.","type":"string","enum":["open_interest","volume"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string","enum":["options.current_analytics"]},"series":{"type":"string","enum":["atm_term_structure","gamma_by_strike","oi_by_expiry","oi_by_strike","oi_by_type","instrument_oi_change","volume_buy_sell","iv_by_strike","iv_table","snapshot","market_breakdown","currency_breakdown","skew_by_strike"]},"generated_at":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."}},"required":["dataset","series","generated_at"],"additionalProperties":false},"data":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"}},"required":["maturity","iv"],"additionalProperties":false}}},{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"option_type":{"type":"string","enum":["C","P"]},"gex":{"nullable":true,"description":"Signed sum of source gamma × OI: calls positive, puts negative. Not USD GEX per 1% move; no spot-price-squared conversion.","type":"number"}},"required":["strike","option_type","gex"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"c":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional_c":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"notional_p":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium_c":{"nullable":true,"description":"USD call premium value, not underlying notional.","type":"number"},"premium_p":{"nullable":true,"description":"USD put premium value, not underlying notional.","type":"number"}},"required":["maturity","c","p","notional_c","notional_p","premium_c","premium_p"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional_c":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"notional_p":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium_c":{"nullable":true,"description":"USD call premium value, not underlying notional.","type":"number"},"premium_p":{"nullable":true,"description":"USD put premium value, not underlying notional.","type":"number"},"intrinsic":{"description":"Aggregate exercise payout at this candidate strike; only the single-expiry branch.","nullable":true,"type":"number"}},"required":["strike","c","p","notional_c","notional_p","premium_c","premium_p"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"optionType":{"type":"string","enum":["C","P"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["optionType","open_interest","notional","premium"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"instrument":{"type":"string"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"open_interest":{"nullable":true,"description":"Change in source option quantity versus the selected earlier snapshot, not current OI.","type":"number"},"oi_change_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["currency","instrument","volume","notional","open_interest","oi_change_notional"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["strike","c_buy","c_buy_notional","c_buy_premium","c_sell","c_sell_notional","c_sell_premium","p_buy","p_buy_notional","p_buy_premium","p_sell","p_sell_notional","p_sell_premium"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"delta":{"nullable":true,"description":"Legacy instrument delta after the source’s two rounding/transform steps; not absolute put delta.","type":"number"}},"required":["strike","mark_iv","bid_iv","ask_iv","delta"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"mark_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"10D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"}},"required":["maturity","mark_ATM","ask_ATM","bid_ATM","spread_ATM","mark_10DC","ask_10DC","bid_10DC","spread_10DC","mark_10DP","ask_10DP","bid_10DP","spread_10DP","mark_15DC","ask_15DC","bid_15DC","spread_15DC","mark_15DP","ask_15DP","bid_15DP","spread_15DP","mark_25DC","ask_25DC","bid_25DC","spread_25DC","mark_25DP","ask_25DP","bid_25DP","spread_25DP","mark_35DC","ask_35DC","bid_35DC","spread_35DC","mark_35DP","ask_35DP","bid_35DP","spread_35DP","10D_Mark_RR","10D_Bid_RR","10D_Ask_RR","10D_Spread_RR","10D_Mark_BF","10D_Bid_BF","10D_Ask_BF","10D_Spread_BF","15D_Mark_RR","15D_Bid_RR","15D_Ask_RR","15D_Spread_RR","15D_Mark_BF","15D_Bid_BF","15D_Ask_BF","15D_Spread_BF","25D_Mark_RR","25D_Bid_RR","25D_Ask_RR","25D_Spread_RR","25D_Mark_BF","25D_Bid_BF","25D_Ask_BF","25D_Spread_BF","35D_Mark_RR","35D_Bid_RR","35D_Ask_RR","35D_Spread_RR","35D_Mark_BF","35D_Bid_BF","35D_Ask_BF","35D_Spread_BF"],"additionalProperties":false}},{"anyOf":[{"type":"object","additionalProperties":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"expiration_date":{"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":"Legacy expiry date at 08:00 UTC; not an exchange-native expiry-time certificate."},"claim_type":{"type":"string","enum":["call","put"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"underlyer":{"type":"string"},"underlyer_spot":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"forward_price":{"nullable":true,"description":"Stored underlying/forward reference; not necessarily spot.","type":"number"},"mark_price":{"nullable":true,"type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"best_bid_price":{"nullable":true,"type":"number"},"best_bid_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"best_ask_price":{"nullable":true,"type":"number"},"best_ask_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"exercise":{"type":"string","enum":["European"]},"settlement":{"type":"string","enum":["cash"]}},"required":["strike","expiration_date","claim_type","open_interest","volume","underlyer","underlyer_spot","forward_price","mark_price","mark_iv","bid_iv","best_bid_price","best_bid_amount","best_ask_price","best_ask_amount","ask_iv","exercise","settlement"],"additionalProperties":false}},{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"expiration_date":{"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":"Legacy expiry date at 08:00 UTC; not an exchange-native expiry-time certificate."},"claim_type":{"type":"string","enum":["call","put"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"underlyer":{"type":"string"},"underlyer_spot":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"forward_price":{"nullable":true,"description":"Stored underlying/forward reference; not necessarily spot.","type":"number"},"mark_price":{"nullable":true,"type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"best_bid_price":{"nullable":true,"type":"number"},"best_bid_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"best_ask_price":{"nullable":true,"type":"number"},"best_ask_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"exercise":{"type":"string","enum":["European"]},"settlement":{"type":"string","enum":["cash"]}},"required":["strike","expiration_date","claim_type","open_interest","volume","underlyer","underlyer_spot","forward_price","mark_price","mark_iv","bid_iv","best_bid_price","best_bid_amount","best_ask_price","best_ask_amount","ask_iv","exercise","settlement"],"additionalProperties":false}}},{"type":"object","properties":{"error":{"type":"string","enum":["No data found"]}},"required":["error"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false},{"type":"object","properties":{},"additionalProperties":false}]},{"type":"array","items":{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false}},{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"currency":{"type":"string"},"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"delta":{"nullable":true,"description":"Legacy call coordinate 1 − delta; not a normalized risk reversal.","type":"number"},"iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"}},"required":["market","currency","strike","delta","iv"],"additionalProperties":false}}}]}},"required":["meta","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Current options analytics","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"type":"string","enum":["atm_term_structure","gamma_by_strike","oi_by_expiry","oi_by_strike","oi_by_type","instrument_oi_change","volume_buy_sell","iv_by_strike","iv_table","snapshot","market_breakdown","currency_breakdown","skew_by_strike"]},"exchange":{"description":"Legacy source venue, or aggregate where supported by the family. Omit for market/currency breakdowns.","type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9][A-Za-z0-9_]*$"},"currency":{"description":"Underlying selector; BTC_USDC and BTC are distinct retained source products. Required except for breakdowns.","type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9][A-Za-z0-9_]*$"},"maturity":{"description":"Listed expiry. Omit to select all for gamma; use one expiry or all for strike IV/OI and buy/sell volume. Not a fixed-tenor day count.","type":"string","maxLength":450},"option_type":{"description":"Required only for iv_by_strike. Call/put, not trade direction.","type":"string","enum":["C","P"]},"hours":{"description":"Required only for instrument_oi_change. Legacy 720 uses one calendar month, not exactly 720 clock hours.","type":"string","enum":["1","2","4","8","12","18","24","48","168","336","504","720"]},"metric":{"description":"Required only for market_breakdown/currency_breakdown; outstanding quantity or source rolling volume.","type":"string","enum":["open_interest","volume"]}},"required":["series"]}}}}}},"/api/v1/analytics/options/atm_iv_ts/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_atm","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"}},"required":["maturity","iv"],"additionalProperties":false}}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible atm_term_structure","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/gex_date_all/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_gammaAll","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"option_type":{"type":"string","enum":["C","P"]},"gex":{"nullable":true,"description":"Signed sum of source gamma × OI: calls positive, puts negative. Not USD GEX per 1% move; no spot-price-squared conversion.","type":"number"}},"required":["strike","option_type","gex"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible gamma_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/gex_date/{market}/{currency}/{maturity}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_gamma","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"option_type":{"type":"string","enum":["C","P"]},"gex":{"nullable":true,"description":"Signed sum of source gamma × OI: calls positive, puts negative. Not USD GEX per 1% move; no spot-price-squared conversion.","type":"number"}},"required":["strike","option_type","gex"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible gamma_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/iv_all/{market}/{currency}/{maturity}/{type}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_ivStrike","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","schema":{"type":"string"}},{"name":"type","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"delta":{"nullable":true,"description":"Legacy instrument delta after the source’s two rounding/transform steps; not absolute put delta.","type":"number"}},"required":["strike","mark_iv","bid_iv","ask_iv","delta"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible iv_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/iv_table/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_ivTable","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"mark_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_ATM":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_10DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_10DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_15DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_15DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_25DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_25DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_35DC":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"mark_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"ask_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"spread_35DP":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"10D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"10D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"15D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"25D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Mark_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Bid_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Ask_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Spread_RR":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Mark_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Bid_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Ask_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"},"35D_Spread_BF":{"nullable":true,"description":"Legacy risk reversal (call minus put) or butterfly (wing mean minus ATM), in volatility percentage points.","type":"number"}},"required":["maturity","mark_ATM","ask_ATM","bid_ATM","spread_ATM","mark_10DC","ask_10DC","bid_10DC","spread_10DC","mark_10DP","ask_10DP","bid_10DP","spread_10DP","mark_15DC","ask_15DC","bid_15DC","spread_15DC","mark_15DP","ask_15DP","bid_15DP","spread_15DP","mark_25DC","ask_25DC","bid_25DC","spread_25DC","mark_25DP","ask_25DP","bid_25DP","spread_25DP","mark_35DC","ask_35DC","bid_35DC","spread_35DC","mark_35DP","ask_35DP","bid_35DP","spread_35DP","10D_Mark_RR","10D_Bid_RR","10D_Ask_RR","10D_Spread_RR","10D_Mark_BF","10D_Bid_BF","10D_Ask_BF","10D_Spread_BF","15D_Mark_RR","15D_Bid_RR","15D_Ask_RR","15D_Spread_RR","15D_Mark_BF","15D_Bid_BF","15D_Ask_BF","15D_Spread_BF","25D_Mark_RR","25D_Bid_RR","25D_Ask_RR","25D_Spread_RR","25D_Mark_BF","25D_Bid_BF","25D_Ask_BF","25D_Spread_BF","35D_Mark_RR","35D_Bid_RR","35D_Ask_RR","35D_Spread_RR","35D_Mark_BF","35D_Bid_BF","35D_Ask_BF","35D_Spread_BF"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible iv_table","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_expiry/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_oiExpiry","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"maturity":{"type":"string"},"c":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional_c":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"notional_p":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium_c":{"nullable":true,"description":"USD call premium value, not underlying notional.","type":"number"},"premium_p":{"nullable":true,"description":"USD put premium value, not underlying notional.","type":"number"}},"required":["maturity","c","p","notional_c","notional_p","premium_c","premium_p"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible oi_by_expiry","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_strike_all/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_oiStrikeAll","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional_c":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"notional_p":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium_c":{"nullable":true,"description":"USD call premium value, not underlying notional.","type":"number"},"premium_p":{"nullable":true,"description":"USD put premium value, not underlying notional.","type":"number"},"intrinsic":{"description":"Aggregate exercise payout at this candidate strike; only the single-expiry branch.","nullable":true,"type":"number"}},"required":["strike","c","p","notional_c","notional_p","premium_c","premium_p"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible oi_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_strike/{market}/{currency}/{maturity}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_oiStrike","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional_c":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"notional_p":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium_c":{"nullable":true,"description":"USD call premium value, not underlying notional.","type":"number"},"premium_p":{"nullable":true,"description":"USD put premium value, not underlying notional.","type":"number"},"intrinsic":{"description":"Aggregate exercise payout at this candidate strike; only the single-expiry branch.","nullable":true,"type":"number"}},"required":["strike","c","p","notional_c","notional_p","premium_c","premium_p"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible oi_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_type/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_oiType","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"optionType":{"type":"string","enum":["C","P"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["optionType","open_interest","notional","premium"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible oi_by_type","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/skew/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_skew","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"currency":{"type":"string"},"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"delta":{"nullable":true,"description":"Legacy call coordinate 1 − delta; not a normalized risk reversal.","type":"number"},"iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"}},"required":["market","currency","strike","delta","iv"],"additionalProperties":false}}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible skew_by_strike","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/snapshot/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_snapshot","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"anyOf":[{"type":"object","additionalProperties":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"expiration_date":{"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":"Legacy expiry date at 08:00 UTC; not an exchange-native expiry-time certificate."},"claim_type":{"type":"string","enum":["call","put"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"underlyer":{"type":"string"},"underlyer_spot":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"forward_price":{"nullable":true,"description":"Stored underlying/forward reference; not necessarily spot.","type":"number"},"mark_price":{"nullable":true,"type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"best_bid_price":{"nullable":true,"type":"number"},"best_bid_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"best_ask_price":{"nullable":true,"type":"number"},"best_ask_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"exercise":{"type":"string","enum":["European"]},"settlement":{"type":"string","enum":["cash"]}},"required":["strike","expiration_date","claim_type","open_interest","volume","underlyer","underlyer_spot","forward_price","mark_price","mark_iv","bid_iv","best_bid_price","best_bid_amount","best_ask_price","best_ask_amount","ask_iv","exercise","settlement"],"additionalProperties":false}},{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"expiration_date":{"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":"Legacy expiry date at 08:00 UTC; not an exchange-native expiry-time certificate."},"claim_type":{"type":"string","enum":["call","put"]},"open_interest":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"underlyer":{"type":"string"},"underlyer_spot":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"forward_price":{"nullable":true,"description":"Stored underlying/forward reference; not necessarily spot.","type":"number"},"mark_price":{"nullable":true,"type":"number"},"mark_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"bid_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"best_bid_price":{"nullable":true,"type":"number"},"best_bid_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"best_ask_price":{"nullable":true,"type":"number"},"best_ask_amount":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"ask_iv":{"nullable":true,"description":"Implied volatility in percentage points (50 means 50%), not a fraction.","type":"number"},"exercise":{"type":"string","enum":["European"]},"settlement":{"type":"string","enum":["cash"]}},"required":["strike","expiration_date","claim_type","open_interest","volume","underlyer","underlyer_spot","forward_price","mark_price","mark_iv","bid_iv","best_bid_price","best_bid_amount","best_ask_price","best_ask_amount","ask_iv","exercise","settlement"],"additionalProperties":false}}},{"type":"object","properties":{"error":{"type":"string","enum":["No data found"]}},"required":["error"],"additionalProperties":false}]}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible snapshot","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/top_instrument_oi_change/{market}/{currency}/{hours}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_oiChange","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"hours","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"instrument":{"type":"string"},"volume":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"open_interest":{"nullable":true,"description":"Change in source option quantity versus the selected earlier snapshot, not current OI.","type":"number"},"oi_change_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["currency","instrument","volume","notional","open_interest","oi_change_notional"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible instrument_oi_change","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/volume_buy_sell_all/{market}/{currency}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_buySellAll","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["strike","c_buy","c_buy_notional","c_buy_premium","c_sell","c_sell_notional","c_sell_premium","p_buy","p_buy_notional","p_buy_premium","p_sell","p_sell_notional","p_sell_premium"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible volume_buy_sell","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/volume_buy_sell/{market}/{currency}/{maturity}":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_buySell","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Exercise price in the underlying quote convention.","type":"number"},"c_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"c_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"c_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_buy_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_buy_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell":{"nullable":true,"description":"Retained source option quantity, not USD; no extra contract multiplier.","type":"number"},"p_sell_notional":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"},"p_sell_premium":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"required":["strike","c_buy","c_buy_notional","c_buy_premium","c_sell","c_sell_notional","c_sell_premium","p_buy","p_buy_notional","p_buy_premium","p_sell","p_sell_notional","p_sell_premium"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible volume_buy_sell","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_breakdown":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_marketOi","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"anyOf":[{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false},{"type":"object","properties":{},"additionalProperties":false}]}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible market_breakdown","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/oi_breakdown_by_currency":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_currencyOi","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible currency_breakdown","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/volume_breakdown":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_marketVolume","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"anyOf":[{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false},{"type":"object","properties":{},"additionalProperties":false}]}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible market_breakdown","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/volume_breakdown_by_currency":{"get":{"description":"Current legacy options analytics, not retained time-series history or the modern fitted surface. Preserves family-specific source snapshot selection, rounding, source quantities, USD premium/notional conventions and missing values. Generation date is UTC Unix seconds, not first-publication time. No start/end, resolution or pagination. OI changes compare exact source snapshots; ATM term structure includes selected earlier snapshots. Buy/sell volume covers the previous 24 hours. Subscriber rights and shared quota apply. x402 is not enabled.","operationId":"OptionsAnalyticsController_currencyVolume","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds rounded to the response-generation minute, not the first-publication time of every observation."},"data":{"type":"array","items":{"type":"object","properties":{"notional":{"type":"object","additionalProperties":{"nullable":true,"description":"USD value under this family’s retained reference-price convention.","type":"number"}},"open_value":{"type":"object","additionalProperties":{"nullable":true,"description":"USD premium value. Missing constituent valuation can make the total null.","type":"number"}}},"required":["notional","open_value"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible currency_breakdown","tags":["Current Options Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/market/legacy-discovery":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_native","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["option_maturities","option_instruments","derivative_instruments","option_settlements","spot_pairs","expired_futures"]}},{"name":"exchange","required":false,"in":"query","schema":{"description":"Required except for derivative_instruments. option_settlements supports Deribit and Bybit.","type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_.-]+$"}},{"name":"currency","required":false,"in":"query","schema":{"description":"Underlying selector. BTC and BTC_USDC remain distinct on Deribit options.","type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_.-]+$"}},{"name":"maturity","required":false,"in":"query","schema":{"description":"Exact expiry DMMMYY, or all; only option_instruments/option_settlements.","type":"string"}},{"name":"option_type","required":false,"in":"query","schema":{"description":"Call or put, only option_instruments.","type":"string","enum":["C","P"]}},{"name":"start","required":false,"in":"query","schema":{"description":"Required for expired_futures. Inclusive source observation bound, not expiry date.","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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"end","required":false,"in":"query","schema":{"description":"Required for expired_futures. Inclusive source observation bound.","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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440}},{"name":"fields","required":false,"in":"query","schema":{"description":"Optional expired_futures projection. Source observation date is always present.","minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["symbol","price","index","volume","open_interest"]}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"series":{"type":"string","enum":["option_maturities","option_instruments","derivative_instruments","option_settlements","spot_pairs","expired_futures"]},"items":{"type":"array","items":{"anyOf":[{"type":"string","description":"Source listed expiry label; current snapshot only, not all retained expiries."},{"type":"object","properties":{"market":{"type":"string"},"currency":{"type":"string"},"maturity":{"type":"string"},"strike":{"nullable":true,"type":"number"},"option_type":{"type":"string","enum":["C","P"]},"instrument":{"type":"string"}},"required":["market","currency","maturity","strike","option_type","instrument"],"additionalProperties":false},{"type":"object","properties":{"market":{"type":"string"},"type":{"type":"string","enum":["future","perpetual","option"]},"currency":{"type":"string"},"instrument":{"type":"string"},"expiry":{"nullable":true,"type":"string"}},"required":["market","type","currency","instrument","expiry"],"additionalProperties":false},{"type":"object","properties":{"Date":{"type":"string","description":"Listed expiry date, DMMMYY; not collection time."},"Strike":{"nullable":true,"description":"Exercise price in the option underlying quote convention.","type":"number"},"OptionType":{"type":"string","description":"Source call/put label, preserved without recoding."},"mark_price":{"nullable":true,"description":"Source expiry option price per underlying unit, in the instrument settlement currency.","type":"number"},"mark_price_usd":{"nullable":true,"description":"Source USD value of that option price.","type":"number"},"position":{"nullable":true,"description":"Source retained position quantity; not trade count or USD notional. Null when unavailable, including delivery-price reconstructions.","type":"number"},"index_price":{"nullable":true,"description":"Source expiry index reference; quote units per underlying unit.","type":"number"},"provenance":{"oneOf":[{"type":"object","properties":{"source":{"type":"string","enum":["exchange_delivery_event"]},"instrument_name":{"type":"string","maxLength":160,"pattern":"^[A-Z0-9]+(?:_USDC)?-\\d{1,2}[A-Z]{3}\\d{2}-\\d+(?:d\\d+)?-[CP]$"},"position_status":{"type":"string","enum":["observed","unavailable"]},"event_timestamp_ms":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"Exchange delivery-event timestamp in Unix milliseconds UTC; not the API cache publication time."}},"required":["source","instrument_name","position_status","event_timestamp_ms"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["delivery_price_reconstruction"]},"instrument_name":{"type":"string","maxLength":160,"pattern":"^[A-Z0-9]+(?:_USDC)?-\\d{1,2}[A-Z]{3}\\d{2}-\\d+(?:d\\d+)?-[CP]$"},"position_status":{"type":"string","enum":["unavailable"]},"delivery_index":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+_(usd|usdc)$"},"delivery_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"price_basis":{"type":"string","enum":["contractual_intrinsic_per_base_unit"]}},"required":["source","instrument_name","position_status","delivery_index","delivery_date","price_basis"],"additionalProperties":false}],"description":"Available on refreshed Deribit rows. Exchange-reported delivery versus contractual payout reconstructed from the official delivery index. Reconstruction does not recover position quantity. Missing provenance means older retained data, not certified exchange-event provenance."}},"required":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"additionalProperties":false},{"type":"string","description":"Exact pair key from the current source document; casing and punctuation are preserved."},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix milliseconds of the latest retained observation in the requested source window. Not the contract expiry or publication time."},"symbol":{"type":"string"},"price":{"nullable":true,"type":"number"},"index":{"nullable":true,"type":"number"},"volume":{"nullable":true,"type":"number"},"open_interest":{"nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}]}},"meta":{"type":"object","properties":{"generated_at":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"date_basis":{"type":"string","enum":["response_generation","source_last_update"]},"historical_catalogue":{"type":"boolean","description":"Only expired_futures reads the requested retained source window. Other series do not certify complete historical instrument coverage."},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991},"settlement_catalogue":{"description":"Optional source-check metadata for refreshed Deribit settlements. Absent on older catalogue documents; absence does not certify completeness.","type":"object","properties":{"version":{"type":"number","enum":[2]},"source_checked_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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Time the source catalogue refresh checked its inputs. Distinct from latest_expiry; not a guarantee of completeness."},"inventory_scope":{"type":"string","enum":["retained_deribit_option_metadata"],"description":"Recovery inventory is retained Deribit option metadata, not a complete exchange-history inventory."},"latest_expiry":{"nullable":true,"description":"Latest expiry date with a retained settlement row for the selected currency, before any maturity filter. Not the cache publication date or a completeness boundary.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["source_checked","missing_delivery_prices"],"description":"Known official delivery-price availability in this selected currency inventory. source_checked does not certify complete exchange coverage."},"missing_delivery_price_count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Known inventory instruments in the selected currency lacking an official delivery price; no synthetic zero row is created for them."},"completeness_certified":{"type":"boolean","enum":[false]},"returned_rows_by_source":{"type":"object","properties":{"exchange_delivery_event":{"type":"integer","minimum":0,"maximum":9007199254740991},"delivery_price_reconstruction":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclassified_retained":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["exchange_delivery_event","delivery_price_reconstruction","unclassified_retained"],"additionalProperties":false,"description":"Counts for returned rows after the optional maturity filter, not global catalogue counts."}},"required":["version","source_checked_at","inventory_scope","latest_expiry","status","missing_delivery_price_count","completeness_certified","returned_rows_by_source"],"additionalProperties":false}},"required":["generated_at","date_basis","historical_catalogue","total"],"additionalProperties":false}},"required":["series","items","meta"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Legacy market discovery","tags":["Legacy Market Discovery"]}},"/api/v1/analytics/options/maturities/{market}/{currency}":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_maturities","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"data":{"type":"array","items":{"type":"string","description":"Source listed expiry label; current snapshot only, not all retained expiries."}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible option_maturities","tags":["Legacy Market Discovery"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/Instruments":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_options","parameters":[{"name":"market","required":true,"in":"query","schema":{"type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"type":"string"}},{"name":"maturity","required":false,"in":"query","schema":{"type":"string"}},{"name":"option_type","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"currency":{"type":"string"},"maturity":{"type":"string"},"strike":{"nullable":true,"type":"number"},"option_type":{"type":"string","enum":["C","P"]},"instrument":{"type":"string"}},"required":["market","currency","maturity","strike","option_type","instrument"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible option_instruments","tags":["Legacy Market Discovery"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"market":{"type":"string"},"currency":{"type":"string"},"maturity":{"type":"string"},"option_type":{"type":"string"}},"required":["market"]}}}}}},"/api/v1/analytics/futures/instruments":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_derivatives","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"type":{"type":"string","enum":["future","perpetual","option"]},"currency":{"type":"string"},"instrument":{"type":"string"},"expiry":{"nullable":true,"type":"string"}},"required":["market","type","currency","instrument","expiry"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible derivative_instruments","tags":["Legacy Market Discovery"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/options/expired_expiries/{market}/{currency}":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_settlements","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":false,"in":"query","description":"Exact expiry filter. Omit for all retained settlement rows.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"data":{"type":"array","items":{"type":"object","properties":{"Date":{"type":"string","description":"Listed expiry date, DMMMYY; not collection time."},"Strike":{"nullable":true,"description":"Exercise price in the option underlying quote convention.","type":"number"},"OptionType":{"type":"string","description":"Source call/put label, preserved without recoding."},"mark_price":{"nullable":true,"description":"Source expiry option price per underlying unit, in the instrument settlement currency.","type":"number"},"mark_price_usd":{"nullable":true,"description":"Source USD value of that option price.","type":"number"},"position":{"nullable":true,"description":"Source retained position quantity; not trade count or USD notional. Null when unavailable, including delivery-price reconstructions.","type":"number"},"index_price":{"nullable":true,"description":"Source expiry index reference; quote units per underlying unit.","type":"number"}},"required":["Date","Strike","OptionType","mark_price","mark_price_usd","position","index_price"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible option_settlements","tags":["Legacy Market Discovery"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maturity":{"type":"string","description":"Exact expiry filter. Omit for all retained settlement rows."}}}}}}}},"/api/v1/analytics/spot/spot_pairs/{market}":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_spots","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix seconds. Source last update for live series; response-generation minute for current discovery."},"data":{"type":"array","items":{"type":"string","description":"Exact pair key from the current source document; casing and punctuation are preserved."}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible spot_pairs","tags":["Legacy Market Discovery"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/V2/historical/futures/expired_expiries/{market}/{currency}":{"get":{"description":"V1-compatible market discovery. Current option maturities/instruments and derivative listings use their original snapshot selection, not an all-history catalogue. Option settlements and spot pairs use source document update times, not response time. Refreshed Deribit settlement rows distinguish exchange delivery events from contractual payout reconstructed using the official delivery index; reconstructed position quantity is unavailable (null). Native settlement metadata separates publication/check time from latest retained expiry and reports known unavailable delivery prices without certifying exchange-wide completeness. Older rows/documents may lack provenance/metadata. Legacy aliases retain exactly the seven original settlement fields. Expired futures returns each symbol’s latest retained observation within the requested window, for expiries before today UTC. It is not a settlement-price certificate. Parameters, units and missing values retain the legacy source contract. Existing subscriber rights/quota apply; x402 is not enabled. Scope option settlements by maturity to avoid a large all-expiry response.","operationId":"MarketDiscoveryController_expiredFutures","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"select","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"UTC Unix milliseconds of the latest retained observation in the requested source window. Not the contract expiry or publication time."},"symbol":{"type":"string"},"price":{"nullable":true,"type":"number"},"index":{"nullable":true,"type":"number"},"volume":{"nullable":true,"type":"number"},"open_interest":{"nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false}},"required":["items","meta"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible expired_futures","tags":["Legacy Market Discovery"]}},"/api/v1/derivatives/current-analytics":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_native","parameters":[{"name":"series","required":true,"in":"query","schema":{"enum":["perpetual_markets","futures_markets","currency_summary","perpetual_funding","futures_yield","market_oi_changes"],"type":"string"}},{"name":"exchange","required":false,"in":"query","description":"Required for perpetual_markets and futures_markets. Recent source venue identifier.","schema":{"type":"string"}},{"name":"currency","required":false,"in":"query","description":"Base asset. Required for perpetual_funding, futures_yield and market_oi_changes; optional for the other series.","schema":{"type":"string"}},{"name":"maturity","required":false,"in":"query","description":"futures_markets only: exact listed expiry DMMMYY, e.g. 25SEP26.","schema":{"type":"string"}},{"name":"venue_type","required":false,"in":"query","description":"Funding/OI changes only: centralized or decentralized legacy venue group.","schema":{"enum":["c","d"],"type":"string"}},{"name":"instrument_type","required":false,"in":"query","description":"Required for market_oi_changes only.","schema":{"enum":["all","future","perpetual"],"type":"string"}},{"name":"hours","required":false,"in":"query","description":"Required for market_oi_changes only; lookback hours, not days.","schema":{"enum":["1","2","4","8","12","18","24","48","168","336","504","720"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string","enum":["derivatives.current_analytics"]},"series":{"type":"string","enum":["perpetual_markets","futures_markets","currency_summary","perpetual_funding","futures_yield","market_oi_changes"]},"generated_at":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."}},"required":["dataset","series","generated_at"],"additionalProperties":false},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_funding":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"long_short_ratio":{"nullable":true,"description":"Stored venue long/short ratio; not a cross-venue standardized metric. Null means unavailable; zero remains zero.","type":"number"},"avg_apr":{"nullable":true,"description":"Stored average annualized funding yield by lookback days, in percent.","type":"object","additionalProperties":{"nullable":true,"type":"number"}},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD; omitted when no key exists. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"description":"Current source realised-volatility map keyed by lookback days; omitted when unavailable.","nullable":true,"type":"object","additionalProperties":{"nullable":true,"type":"number"}}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations","funding","next_funding","long_short_ratio","avg_apr"],"additionalProperties":false},{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations"],"additionalProperties":false},{"type":"object","properties":{"currency":{"type":"string"},"price":{"nullable":true,"description":"Open-interest-weighted price across latest perpetual contract observations. Null means unavailable; zero remains zero.","type":"number"},"change":{"nullable":true,"description":"Absolute difference between current and approximately 24-hour-old weighted prices; not percent. Null means unavailable; zero remains zero.","type":"number"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"},"ls_ratio":{"nullable":true,"description":"Open-interest-weighted stored long/short ratio; venue definitions can differ. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of latest perpetual USD open-interest observations. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional":{"nullable":true,"description":"Sum of latest perpetual open interest in base-asset units, despite the legacy notional name. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd":{"nullable":true,"description":"Absolute USD OI change versus the approximately 24-hour-old comparison. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd_percentage":{"nullable":true,"description":"Relative USD OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional":{"nullable":true,"description":"Absolute OI change in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional_percentage":{"nullable":true,"description":"Relative base-unit OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"volume":{"nullable":true,"description":"Sum of latest rolling 24-hour USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_notional":{"nullable":true,"description":"Sum of latest rolling 24-hour volume in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd":{"nullable":true,"description":"Difference between current and approximately 24-hour-old rolling USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd_percentage":{"nullable":true,"description":"Relative change between those rolling USD-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional":{"nullable":true,"description":"Difference between current and older rolling volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional_percentage":{"nullable":true,"description":"Relative change between those rolling base-unit-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"oi_volume_24h":{"nullable":true,"description":"Current USD OI divided by current rolling 24-hour USD volume; dimensionless. Null means unavailable; zero remains zero.","type":"number"},"markets":{"type":"array","items":{"type":"string"},"description":"Distinct contributing venue keys; not a completeness certificate."},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD, not a value measured at every contract timestamp. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Current realised-volatility enrichment; keys are lookback days, values are the source percentage convention."},"sectors":{"type":"array","items":{"type":"string"},"description":"Current sector labels from the existing constituent feed."},"total_long_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.long. Null means unavailable; zero remains zero.","type":"number"},"total_short_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.short. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["currency","price","change","funding","next_fr","yield","ls_ratio","open_interest","open_interest_notional","open_interest_change_usd","open_interest_change_usd_percentage","open_interest_change_notional","open_interest_change_notional_percentage","volume","volume_notional","volume_change_usd","volume_change_usd_percentage","volume_change_notional","volume_change_notional_percentage","oi_volume_24h","markets","market_cap","realized_vol","sectors","total_long_usd","total_short_usd","liquidations"],"additionalProperties":false},{"type":"object","properties":{"market":{"type":"string"},"symbol":{"type":"string"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","symbol","funding","next_fr","yield"],"additionalProperties":false},{"type":"object","properties":{"market":{"type":"string"},"maturity":{"type":"string","description":"Listed expiry in DMMMYY format."},"value":{"nullable":true,"description":"Maximum stored annualized carry yield in percent among the selected market/expiry contracts, not their average. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","maturity","value"],"additionalProperties":false},{"type":"object","properties":{"market":{"type":"string"},"open_interest_change":{"nullable":true,"description":"Latest minus earliest venue-total USD open interest across matching contracts, after resolving retained replacements. Uses the two matching global boundary timestamps in the lookback, including its two-minute buffer. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_perc":{"nullable":true,"description":"Relative change of venue-total USD OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change":{"nullable":true,"description":"Latest minus earliest venue-total OI in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change_perc":{"nullable":true,"description":"Relative change of venue-total base-unit OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","open_interest_change","open_interest_change_perc","open_interest_notional_change","open_interest_notional_change_perc"],"additionalProperties":false}]}}},"required":["meta","data"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Current derivatives analytics","tags":["Current Derivatives Analytics"]}},"/api/v1/analytics/derivs/perpetuals/{market}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_perpetuals","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_funding":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"long_short_ratio":{"nullable":true,"description":"Stored venue long/short ratio; not a cross-venue standardized metric. Null means unavailable; zero remains zero.","type":"number"},"avg_apr":{"nullable":true,"description":"Stored average annualized funding yield by lookback days, in percent.","type":"object","additionalProperties":{"nullable":true,"type":"number"}},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD; omitted when no key exists. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"description":"Current source realised-volatility map keyed by lookback days; omitted when unavailable.","nullable":true,"type":"object","additionalProperties":{"nullable":true,"type":"number"}}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations","funding","next_funding","long_short_ratio","avg_apr"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual_markets","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/derivs/perpetuals/{market}/{currency}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_perpetualsCurrency","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_funding":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"long_short_ratio":{"nullable":true,"description":"Stored venue long/short ratio; not a cross-venue standardized metric. Null means unavailable; zero remains zero.","type":"number"},"avg_apr":{"nullable":true,"description":"Stored average annualized funding yield by lookback days, in percent.","type":"object","additionalProperties":{"nullable":true,"type":"number"}},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD; omitted when no key exists. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"description":"Current source realised-volatility map keyed by lookback days; omitted when unavailable.","nullable":true,"type":"object","additionalProperties":{"nullable":true,"type":"number"}}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations","funding","next_funding","long_short_ratio","avg_apr"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual_markets","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/derivs/futures/{market}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_futures","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures_markets","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/derivs/futures/{market}/{currency}/{maturity}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_futuresMaturity","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Exact exchange instrument identifier."},"base_currency":{"type":"string","description":"Legacy normalized base asset code."},"margin":{"type":"string","description":"Legacy margin category: coin or usd; not option call/put."},"index_price":{"nullable":true,"description":"Stored index reference, quote/USD units per underlying base unit according to source contract. Null means unavailable; zero remains zero.","type":"number"},"price":{"nullable":true,"description":"Legacy normalized derivative price; not an option premium or a historical candle. Null means unavailable; zero remains zero.","type":"number"},"basis":{"nullable":true,"description":"Stored futures/perpetual basis in the legacy source convention; not funding. Null means unavailable; zero remains zero.","type":"number"},"apy":{"nullable":true,"description":"Stored annualized yield in percent. For perpetuals this is funding yield; for futures it is annualized carry. Not compounded APY despite the legacy name. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Open interest in USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_coin":{"nullable":true,"description":"Open interest in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"oi_volume24h":{"nullable":true,"description":"USD open interest divided by rolling 24-hour USD volume; dimensionless, not percent. Null means unavailable; zero remains zero.","type":"number"},"volume24h":{"nullable":true,"description":"Stored rolling 24-hour USD volume. Not volume since midnight. Null means unavailable; zero remains zero.","type":"number"},"volume24h_coin":{"nullable":true,"description":"Stored rolling 24-hour volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"bid":{"nullable":true,"description":"Best bid price at the selected snapshot, not a 24-hour high. Null means unavailable; zero remains zero.","type":"number"},"ask":{"nullable":true,"description":"Best ask price at the selected snapshot, not a 24-hour low. Null means unavailable; zero remains zero.","type":"number"},"bid_amount":{"nullable":true,"description":"Displayed best-bid size in the legacy source quantity convention; not 24-hour bid volume. Null means unavailable; zero remains zero.","type":"number"},"ask_amount":{"nullable":true,"description":"Displayed best-ask size in the legacy source quantity convention; not 24-hour ask volume. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["symbol","base_currency","margin","index_price","price","basis","apy","open_interest","open_interest_coin","oi_volume24h","volume24h","volume24h_coin","bid","ask","bid_amount","ask_amount","liquidations"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures_markets","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/derivs/summary":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_summary","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"price":{"nullable":true,"description":"Open-interest-weighted price across latest perpetual contract observations. Null means unavailable; zero remains zero.","type":"number"},"change":{"nullable":true,"description":"Absolute difference between current and approximately 24-hour-old weighted prices; not percent. Null means unavailable; zero remains zero.","type":"number"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"},"ls_ratio":{"nullable":true,"description":"Open-interest-weighted stored long/short ratio; venue definitions can differ. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of latest perpetual USD open-interest observations. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional":{"nullable":true,"description":"Sum of latest perpetual open interest in base-asset units, despite the legacy notional name. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd":{"nullable":true,"description":"Absolute USD OI change versus the approximately 24-hour-old comparison. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd_percentage":{"nullable":true,"description":"Relative USD OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional":{"nullable":true,"description":"Absolute OI change in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional_percentage":{"nullable":true,"description":"Relative base-unit OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"volume":{"nullable":true,"description":"Sum of latest rolling 24-hour USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_notional":{"nullable":true,"description":"Sum of latest rolling 24-hour volume in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd":{"nullable":true,"description":"Difference between current and approximately 24-hour-old rolling USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd_percentage":{"nullable":true,"description":"Relative change between those rolling USD-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional":{"nullable":true,"description":"Difference between current and older rolling volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional_percentage":{"nullable":true,"description":"Relative change between those rolling base-unit-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"oi_volume_24h":{"nullable":true,"description":"Current USD OI divided by current rolling 24-hour USD volume; dimensionless. Null means unavailable; zero remains zero.","type":"number"},"markets":{"type":"array","items":{"type":"string"},"description":"Distinct contributing venue keys; not a completeness certificate."},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD, not a value measured at every contract timestamp. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Current realised-volatility enrichment; keys are lookback days, values are the source percentage convention."},"sectors":{"type":"array","items":{"type":"string"},"description":"Current sector labels from the existing constituent feed."},"total_long_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.long. Null means unavailable; zero remains zero.","type":"number"},"total_short_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.short. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["currency","price","change","funding","next_fr","yield","ls_ratio","open_interest","open_interest_notional","open_interest_change_usd","open_interest_change_usd_percentage","open_interest_change_notional","open_interest_change_notional_percentage","volume","volume_notional","volume_change_usd","volume_change_usd_percentage","volume_change_notional","volume_change_notional_percentage","oi_volume_24h","markets","market_cap","realized_vol","sectors","total_long_usd","total_short_usd","liquidations"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible currency_summary","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/derivs/summary/{currency}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_summaryCurrency","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"price":{"nullable":true,"description":"Open-interest-weighted price across latest perpetual contract observations. Null means unavailable; zero remains zero.","type":"number"},"change":{"nullable":true,"description":"Absolute difference between current and approximately 24-hour-old weighted prices; not percent. Null means unavailable; zero remains zero.","type":"number"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"},"ls_ratio":{"nullable":true,"description":"Open-interest-weighted stored long/short ratio; venue definitions can differ. Null means unavailable; zero remains zero.","type":"number"},"open_interest":{"nullable":true,"description":"Sum of latest perpetual USD open-interest observations. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional":{"nullable":true,"description":"Sum of latest perpetual open interest in base-asset units, despite the legacy notional name. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd":{"nullable":true,"description":"Absolute USD OI change versus the approximately 24-hour-old comparison. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_usd_percentage":{"nullable":true,"description":"Relative USD OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional":{"nullable":true,"description":"Absolute OI change in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_notional_percentage":{"nullable":true,"description":"Relative base-unit OI change in percent. Null means unavailable; zero remains zero.","type":"number"},"volume":{"nullable":true,"description":"Sum of latest rolling 24-hour USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_notional":{"nullable":true,"description":"Sum of latest rolling 24-hour volume in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd":{"nullable":true,"description":"Difference between current and approximately 24-hour-old rolling USD-volume observations. Null means unavailable; zero remains zero.","type":"number"},"volume_change_usd_percentage":{"nullable":true,"description":"Relative change between those rolling USD-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional":{"nullable":true,"description":"Difference between current and older rolling volume in base-asset units. Null means unavailable; zero remains zero.","type":"number"},"volume_change_notional_percentage":{"nullable":true,"description":"Relative change between those rolling base-unit-volume observations, in percent. Null means unavailable; zero remains zero.","type":"number"},"oi_volume_24h":{"nullable":true,"description":"Current USD OI divided by current rolling 24-hour USD volume; dimensionless. Null means unavailable; zero remains zero.","type":"number"},"markets":{"type":"array","items":{"type":"string"},"description":"Distinct contributing venue keys; not a completeness certificate."},"market_cap":{"nullable":true,"description":"Current market-cap enrichment in USD, not a value measured at every contract timestamp. Null means unavailable; zero remains zero.","type":"number"},"realized_vol":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Current realised-volatility enrichment; keys are lookback days, values are the source percentage convention."},"sectors":{"type":"array","items":{"type":"string"},"description":"Current sector labels from the existing constituent feed."},"total_long_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.long. Null means unavailable; zero remains zero.","type":"number"},"total_short_usd":{"nullable":true,"description":"Legacy duplicate of liquidations.short. Null means unavailable; zero remains zero.","type":"number"},"liquidations":{"type":"object","properties":{"long":{"nullable":true,"description":"Rolling 24-hour USD amount of long positions liquidated, not buy volume. Null means unavailable; zero remains zero.","type":"number"},"short":{"nullable":true,"description":"Rolling 24-hour USD amount of short positions liquidated, not sell volume. Null means unavailable; zero remains zero.","type":"number"}},"required":["long","short"],"additionalProperties":false}},"required":["currency","price","change","funding","next_fr","yield","ls_ratio","open_interest","open_interest_notional","open_interest_change_usd","open_interest_change_usd_percentage","open_interest_change_notional","open_interest_change_notional_percentage","volume","volume_notional","volume_change_usd","volume_change_usd_percentage","volume_change_notional","volume_change_notional_percentage","oi_volume_24h","markets","market_cap","realized_vol","sectors","total_long_usd","total_short_usd","liquidations"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible currency_summary","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/futures/perpetual_funding/{currency}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_funding","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"symbol":{"type":"string"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","symbol","funding","next_fr","yield"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual_funding","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/futures/perpetual_funding/{currency}/{type}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_fundingVenues","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"type","required":true,"in":"path","description":"Centralized or decentralized legacy venue group, not collateral.","schema":{"enum":["c","d"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"symbol":{"type":"string"},"funding":{"nullable":true,"description":"Stored funding rate in percent for the source funding interval; not an annualized rate or universally eight-hour. Null means unavailable; zero remains zero.","type":"number"},"next_fr":{"nullable":true,"description":"Next announced funding rate in percent for the source interval. Null means unavailable; zero remains zero.","type":"number"},"yield":{"nullable":true,"description":"Stored annualized funding yield in percent; not compounded APY. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","symbol","funding","next_fr","yield"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual_funding","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/futures/futures_yield/{currency}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_yield","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"maturity":{"type":"string","description":"Listed expiry in DMMMYY format."},"value":{"nullable":true,"description":"Maximum stored annualized carry yield in percent among the selected market/expiry contracts, not their average. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","maturity","value"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures_yield","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/futures/markets_oi_gainers_and_losers/{currency}/{option}/{param}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_oiChanges","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"option","required":true,"in":"path","description":"Derivative instrument family, not an option call/put.","schema":{"enum":["all","future","perpetual"],"type":"string"}},{"name":"param","required":true,"in":"path","description":"Lookback hours.","schema":{"enum":["1","2","4","8","12","18","24","48","168","336","504","720"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"open_interest_change":{"nullable":true,"description":"Latest minus earliest venue-total USD open interest across matching contracts, after resolving retained replacements. Uses the two matching global boundary timestamps in the lookback, including its two-minute buffer. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_perc":{"nullable":true,"description":"Relative change of venue-total USD OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change":{"nullable":true,"description":"Latest minus earliest venue-total OI in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change_perc":{"nullable":true,"description":"Relative change of venue-total base-unit OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","open_interest_change","open_interest_change_perc","open_interest_notional_change","open_interest_notional_change_perc"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible market_oi_changes","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/analytics/futures/markets_oi_gainers_and_losers/{currency}/{option}/{param}/{type}":{"get":{"description":"Current legacy derivatives analytics, not a historical candle series. Perpetual snapshots use each contract's latest observation in five minutes; summaries compare those with approximately 24 hours earlier. Funding/yield use the latest matching snapshot in 62 minutes. OI changes compare corrected v1 venue totals across matching contracts, resolving retained replacements. USD versus base-asset units, percentages and lookback semantics are documented per field. Response generation time is not an as-of publication certificate. Results can be cached for 45 seconds. Existing subscriber rights and shared quota apply; x402 is not enabled.","operationId":"DerivativesAnalyticsController_oiChangesVenues","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"option","required":true,"in":"path","description":"Derivative instrument family, not an option call/put.","schema":{"enum":["all","future","perpetual"],"type":"string"}},{"name":"param","required":true,"in":"path","description":"Lookback hours.","schema":{"enum":["1","2","4","8","12","18","24","48","168","336","504","720"],"type":"string"}},{"name":"type","required":true,"in":"path","description":"Centralized or decentralized legacy venue group, not collateral.","schema":{"enum":["c","d"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Response generation time, Unix seconds UTC. Not a source publication timestamp; components can have different observation times."},"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string"},"open_interest_change":{"nullable":true,"description":"Latest minus earliest venue-total USD open interest across matching contracts, after resolving retained replacements. Uses the two matching global boundary timestamps in the lookback, including its two-minute buffer. Null means unavailable; zero remains zero.","type":"number"},"open_interest_change_perc":{"nullable":true,"description":"Relative change of venue-total USD OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change":{"nullable":true,"description":"Latest minus earliest venue-total OI in base-asset units, not USD. Null means unavailable; zero remains zero.","type":"number"},"open_interest_notional_change_perc":{"nullable":true,"description":"Relative change of venue-total base-unit OI, in percent; null when the earlier total is unavailable or zero. Null means unavailable; zero remains zero.","type":"number"}},"required":["market","open_interest_change","open_interest_change_perc","open_interest_notional_change","open_interest_notional_change_perc"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible market_oi_changes","tags":["Current Derivatives Analytics"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"}}},"/api/v1/spot/candle-history":{"get":{"description":"Retained v1 spot candles (open, high, low, close, volume_base, volume_quote) served natively on v2. A separate retained source from modern /spot/ohlcvt: no VWAP, trade counts or buy/sell split. Before 2024-01-01 stored candles of the requested period are returned. From 2024-01-01 candles are built from stored minute rows (first open, highest high, lowest low, last close, summed volumes); for 1h and 1d a bucket without minute rows falls back to stored same-period rows, while 5m, 15m and 30m use minute rows only. Missing candles are not synthesized.\n\nFrom 2024-01-01: UTC candle start, which can precede the requested start for a clipped edge bucket. Before 2024-01-01: the stored candle timestamp as retained; its candle-start labeling is not separately verified.\n\nExplicit timezone-qualified start/end, inclusive after truncation to seconds. Bounds filter source rows BEFORE bucketing, so edge candles can be partial and moving a bound can change their values or the 1h/1d fallback choice. page/limit (default 10, maximum 1440) and total count candles. instrument_name is lowercased; separators are not rewritten. Compatibility aliases keep v1 date-only whole-day bounds, the omitted-end default and legacy pagination accounting; use the route mapping for equivalent requests.\n\nQuote currency per one base unit; not mark or index price.\n\nTraded base-asset quantity summed over the selected source rows; not USD or rolling 24-hour volume.\n\nTraded quote-asset quantity; BTC-USDT quote volume is USDT, not certified USD.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: spot.retained_candles. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nAvailable to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"MarketHistoryController_spot","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9]+(?:[-_][a-z0-9]+)*$","description":"Lowercase exchange selector. Liquidations also accept aggregated, meaning all retained markets."}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Spot edge candles use only source observations inside the requested bounds."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Not an exclusive boundary or an implicit full UTC day."}},{"name":"page","required":false,"in":"query","schema":{"default":1,"description":"One-based output-row page. A liquidation page can split the long and short rows at one timestamp.","type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"description":"Output rows per page, not timestamps. Default 10; maximum 1440.","type":"integer","minimum":1,"maximum":1440}},{"name":"instrument_name","required":true,"in":"query","schema":{"type":"string","minLength":1,"maxLength":256,"description":"Retained spot pair identifier, e.g. BTC-USDT on coinbase. Compared case-insensitively, but separators are not rewritten. Not an option or derivative instrument."}},{"name":"resolution","required":true,"in":"query","schema":{"type":"string","enum":["1m","5m","15m","30m","1h","1d"],"description":"UTC candle period. OHLC and volume aggregate selected source observations; incomplete edge buckets are not full-period candles."}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["spot.retained_candles"]},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Unix epoch milliseconds, UTC. Spot: candle start (possibly before requested start for a clipped edge). Liquidations: original stored observation timestamp, not publication time."},"open":{"nullable":true,"description":"Quote-currency units per one base unit; earliest selected source open. Not necessarily the full candle open when start clips the bucket.","type":"number"},"high":{"nullable":true,"description":"Maximum selected source high, in quote currency per base unit.","type":"number"},"low":{"nullable":true,"description":"Minimum selected source low, in quote currency per base unit.","type":"number"},"close":{"nullable":true,"description":"Latest selected source close, in quote currency per base unit. Not mark/index price.","type":"number"},"volume_base":{"nullable":true,"description":"Sum of traded base-asset quantity from selected source candles; not USD notional or rolling 24-hour volume. Old-generation candles retain their stored volume.","type":"number"},"volume_quote":{"nullable":true,"description":"Sum of traded quote-asset quantity from selected source candles. For BTC-USDT this is USDT, not certified USD. Old-generation candles retain their stored volume.","type":"number"}},"required":["date","open","high","low","close","volume_base","volume_quote"],"additionalProperties":false}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["spot.retained_candles"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["spot.retained_candles"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false},"count_basis":{"type":"string","enum":["candles"],"description":"What total, limit and pagination count; liquidation long/short rows may occupy separate pages."}},"required":["total","items","page","total_pages","limit","availability","count_basis"],"additionalProperties":false}},"required":["dataset_id","items","meta"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained spot candles","tags":["Retained Spot and Liquidation History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","maxLength":64,"pattern":"^[a-z0-9]+(?:[-_][a-z0-9]+)*$","description":"Lowercase exchange selector. Liquidations also accept aggregated, meaning all retained markets."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Spot edge candles use only source observations inside the requested bounds."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Not an exclusive boundary or an implicit full UTC day."},"page":{"default":1,"description":"One-based output-row page. A liquidation page can split the long and short rows at one timestamp.","type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"description":"Output rows per page, not timestamps. Default 10; maximum 1440.","type":"integer","minimum":1,"maximum":1440},"instrument_name":{"type":"string","minLength":1,"maxLength":256,"description":"Retained spot pair identifier, e.g. BTC-USDT on coinbase. Compared case-insensitively, but separators are not rewritten. Not an option or derivative instrument."},"resolution":{"type":"string","enum":["1m","5m","15m","30m","1h","1d"],"description":"UTC candle period. OHLC and volume aggregate selected source observations; incomplete edge buckets are not full-period candles."}},"required":["exchange","start","end","instrument_name","resolution"]}}}}}},"/api/v1/derivatives/liquidation-history":{"get":{"description":"Retained USD liquidation amounts, one row per source timestamp and liquidated position side. Long means long positions liquidated, not buys. Resolution samples the UTC observation grid; 1d is the midnight observation, NOT a daily sum. Sums retained contract contributions at each selected source timestamp after replacement. aggregated includes all retained markets, not only active venues. Missing sides stay absent, not zero. Closed timestamps may still receive revisions; no finite finalization delay is certified.","operationId":"MarketHistoryController_liquidations","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["aggregated","binance","bitfinex","bitmex","bybit","deribit","ftx","huobi","hyperliquid","kraken","lighter","nado","okx"],"description":"Retained exchange selector, or aggregated for all retained markets. Selector acceptance does not certify that a venue has data in this window."}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Spot edge candles use only source observations inside the requested bounds."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive ISO-8601 instant with timezone, truncated to seconds. Not an exclusive boundary or an implicit full UTC day."}},{"name":"page","required":false,"in":"query","schema":{"default":1,"description":"One-based output-row page. A liquidation page can split the long and short rows at one timestamp.","type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"description":"Output rows per page, not timestamps. Default 10; maximum 1440.","type":"integer","minimum":1,"maximum":1440}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","maxLength":32,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]*$","description":"Exact case-sensitive retained base-currency selector, normally BTC or ETH. This is not the settlement or reporting currency; usd_amount is USD."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"native","description":"Sample grid, NOT an aggregation period. 1h selects minute-zero observations; 1d selects midnight UTC. Native retains every stored timestamp.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["derivatives.retained_liquidations"]},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Unix epoch milliseconds, UTC. Spot: candle start (possibly before requested start for a clipped edge). Liquidations: original stored observation timestamp, not publication time."},"usd_amount":{"type":"number","description":"USD amount summed across retained contract contributions at exactly this source timestamp and liquidated-position side, after replacement. NOT the sum over the requested resolution interval. This is amount, not event count; negative finite source amounts are not silently clipped."},"side":{"nullable":true,"description":"Side of the position liquidated: long or short. Not aggressor buy/sell direction. Null preserves an unclassified legacy side; an absent side is not a zero row.","type":"string","enum":["long","short"]}},"required":["date","usd_amount","side"],"additionalProperties":false}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["derivatives.retained_liquidations"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["derivatives.retained_liquidations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false},"count_basis":{"type":"string","enum":["timestamp_side_rows"],"description":"What total, limit and pagination count; liquidation long/short rows may occupy separate pages."}},"required":["total","items","page","total_pages","limit","availability","count_basis"],"additionalProperties":false}},"required":["dataset_id","items","meta"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained liquidations by currency","tags":["Retained Spot and Liquidation History"]}},"/api/v1/historical/spot/{market}/{symbol}/{period}":{"get":{"description":"Retained spot OHLC candles. Prices are quote currency per base unit; volumes are base and quote units, not universally USD. UTC candle-start timestamps. Before 2024-01-01 stored requested-period candles are used; thereafter minute candles take precedence over same-period hourly/daily fallback. Request bounds clip contributing observations, so edge candles may be partial and their start can precede start. No synthetic missing candles. This is not the modern OHLCVT dataset.","operationId":"MarketHistoryController_legacySpot","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"symbol","required":true,"in":"path","description":"Spot pair identifier; separators unchanged, case normalized.","schema":{"type":"string"}},{"name":"period","required":true,"in":"path","schema":{"enum":["1m","5m","15m","30m","1h","1d"],"type":"string"}},{"name":"start","required":true,"in":"query","description":"Inclusive legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the whole UTC day; omitted end includes tomorrow UTC.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Default query page 1. Omitted meta.page preserved for single-generation requests.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows. Omitted total_pages divisor is 1, except cross-generation spot paging uses its actual limit."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Unix epoch milliseconds, UTC. Spot: candle start (possibly before requested start for a clipped edge). Liquidations: original stored observation timestamp, not publication time."},"open":{"nullable":true,"description":"Quote-currency units per one base unit; earliest selected source open. Not necessarily the full candle open when start clips the bucket.","type":"number"},"high":{"nullable":true,"description":"Maximum selected source high, in quote currency per base unit.","type":"number"},"low":{"nullable":true,"description":"Minimum selected source low, in quote currency per base unit.","type":"number"},"close":{"nullable":true,"description":"Latest selected source close, in quote currency per base unit. Not mark/index price.","type":"number"},"volume_base":{"nullable":true,"description":"Sum of traded base-asset quantity from selected source candles; not USD notional or rolling 24-hour volume. Old-generation candles retain their stored volume.","type":"number"},"volume_quote":{"nullable":true,"description":"Sum of traded quote-asset quantity from selected source candles. For BTC-USDT this is USDT, not certified USD. Old-generation candles retain their stored volume.","type":"number"}},"required":["date","open","high","low","close","volume_base","volume_quote"],"additionalProperties":false}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false}},"required":["items","meta"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible spot candles","tags":["Retained Spot and Liquidation History"]}},"/api/v1/historical/derivs/liquidation_by_currency/{market}/{currency}":{"get":{"description":"Retained USD liquidation amounts, one row per source timestamp and liquidated position side. Long means long positions liquidated, not buys. Resolution samples the UTC observation grid; 1d is the midnight observation, NOT a daily sum. Sums retained contract contributions at each selected source timestamp after replacement. aggregated includes all retained markets, not only active venues. Missing sides stay absent, not zero. Closed timestamps may still receive revisions; no finite finalization delay is certified.","operationId":"MarketHistoryController_legacyLiquidations","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Exact case-sensitive base currency.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Sample grid, not bucket aggregation. -- or omitted means native.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Inclusive legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the whole UTC day; omitted end includes tomorrow UTC.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Default query page 1. Omitted meta.page preserved for single-generation requests.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows. Omitted total_pages divisor is 1, except cross-generation spot paging uses its actual limit."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Unix epoch milliseconds, UTC. Spot: candle start (possibly before requested start for a clipped edge). Liquidations: original stored observation timestamp, not publication time."},"usd_amount":{"type":"number","description":"USD amount summed across retained contract contributions at exactly this source timestamp and liquidated-position side, after replacement. NOT the sum over the requested resolution interval. This is amount, not event count; negative finite source amounts are not silently clipped."},"side":{"nullable":true,"description":"Side of the position liquidated: long or short. Not aggressor buy/sell direction. Null preserves an unclassified legacy side; an absent side is not a zero row.","type":"string","enum":["long","short"]}},"required":["date","usd_amount","side"],"additionalProperties":false}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false}},"required":["items","meta"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible liquidations by currency","tags":["Retained Spot and Liquidation History"]}},"/api/v1/market/positioning-history":{"get":{"description":"15 pinned legacy series. Strike distributions sum a UTC hour and are not paged; all other series use sampled observations, not interval aggregates. Market-wide options OI requires exchange and no currency filter, with notional n and option premium valuation ov; reduce page size if a broad page reaches shared source-capacity limits. options_volume_total requires exchange (aggregate spans every venue) and returns retained volume state, notional and premium valuation, not unique trades in the interval. options_oi_by_currency and options_volume_by_currency span every venue, take currency only (BTC_USDC and ETH_USDC select Deribit USDC-settled products) and return n notional and ov premium valuation rounded to two decimals; broad pages may reach source-capacity limits, so retry with a smaller limit. Max pain pages maturity rows. Missing venue keys remain absent, not zero. Futures exchange totals preserve the pinned c/d taxonomy and optional market-filter behavior. Source revisions/omissions are not completeness or point-in-time certified. Available to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"PositioningHistoryController_read","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["options_oi_strike","options_volume_strike","options_oi_pc_ratio","options_volume_pc_ratio","futures_oi_by_margin","options_max_pain","futures_oi_by_exchange","options_oi_total","options_volume_total","futures_oi_total","futures_volume_by_exchange","futures_volume_total","options_oi_by_market","options_oi_by_currency","options_volume_by_currency"]}},{"name":"exchange","required":false,"in":"query","schema":{"description":"Required for options except the by-currency totals, which span every venue and forbid it; use aggregate for all-venue volume_total. Optional market filter only on futures exchange-total series; retained source selectors, not active venue certification.","type":"string","maxLength":64,"pattern":"^[a-z0-9]+(?:[-_][a-z0-9]+)*$"}},{"name":"currency","required":false,"in":"query","schema":{"description":"Required except for options_oi_by_market, which includes every retained currency and forbids this filter. Other series retain their legacy base/prefix rules; BTC_USDC and ETH_USDC select Deribit USDC-settled products.","type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$"}},{"name":"maturity","required":false,"in":"query","schema":{"description":"Required only for strike distributions; exact expiry, including expired contracts.","type":"string","pattern":"^\\d{1,2}(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\\d{2}$"}},{"name":"option","required":false,"in":"query","schema":{"description":"Required only for futures exchange totals: pinned CEX/DEX classification.","type":"string","enum":["c","d"]}},{"name":"at","required":false,"in":"query","schema":{"description":"Strike distributions only: sum the containing UTC hour, not a latest snapshot.","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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"start","required":false,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"end","required":false,"in":"query","schema":{"description":"Time series only. Inclusive after truncation to seconds.","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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"resolution","required":false,"in":"query","schema":{"description":"Time series only. UTC sample grid, not interval aggregation; omitted means native.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"description":"Time series only, default 10. Max pain counts maturity rows, not timestamps.","type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["market.positioning_observations"]},"series":{"type":"string","enum":["options_oi_strike","options_volume_strike","options_oi_pc_ratio","options_volume_pc_ratio","futures_oi_by_margin","options_max_pain","futures_oi_by_exchange","options_oi_total","options_volume_total","futures_oi_total","futures_volume_by_exchange","futures_volume_total","options_oi_by_market","options_oi_by_currency","options_volume_by_currency"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["market.positioning_observations"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["market.positioning_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false},"count_basis":{"type":"string","enum":["rows","strikes"]}},"required":["total","items","page","total_pages","limit","availability","count_basis"],"additionalProperties":false},"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"strike":{"nullable":true,"description":"Option strike price in the underlying reference quote currency.","type":"number"},"c":{"nullable":true,"description":"Call quantity: sum of retained open interest or volume observations over the selected hour. Repeated observations are included; this is not a single-instant OI snapshot or unique traded volume.","type":"number"},"p":{"nullable":true,"description":"Put quantity: same hour-summed observation rule as c, in retained source quantity units.","type":"number"},"notional_c":{"nullable":true,"description":"Call quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"},"notional_p":{"nullable":true,"description":"Put quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"}},"required":["strike","c","p","notional_c","notional_p"],"additionalProperties":false},{"type":"object","properties":{"strike":{"nullable":true,"description":"Option strike price in the underlying reference quote currency.","type":"number"},"c":{"nullable":true,"description":"Call quantity: sum of retained open interest or volume observations over the selected hour. Repeated observations are included; this is not a single-instant OI snapshot or unique traded volume.","type":"number"},"p":{"nullable":true,"description":"Put quantity: same hour-summed observation rule as c, in retained source quantity units.","type":"number"},"notional_c":{"nullable":true,"description":"Call quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"},"notional_p":{"nullable":true,"description":"Put quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"}},"required":["strike","c","p","notional_c","notional_p"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"p":{"nullable":true,"description":"Total put open-interest quantity (OI series) or retained volume quantity (volume series), rounded to four decimals. Not USD.","type":"number"},"c":{"nullable":true,"description":"Corresponding total call quantity, rounded to four decimals. Not USD.","type":"number"},"pc":{"nullable":true,"description":"Put/call quantity ratio p / c, dimensionless, rounded to three decimals. A nonfinite ratio is null, not zero.","type":"number"},"p_p":{"nullable":true,"description":"USD-equivalent premium valuation of put quantity, rounded to four decimals. Second p means premium, not probability. Volume valuation is not realized traded premium.","type":"number"},"c_p":{"nullable":true,"description":"USD-equivalent premium valuation of call quantity, rounded to four decimals. Null when required valuation inputs are unavailable.","type":"number"},"pc_p":{"nullable":true,"description":"Put/call premium-valuation ratio p_p / c_p, dimensionless, rounded to two decimals; not the quantity ratio pc.","type":"number"},"p_notional":{"nullable":true,"description":"Put quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"},"c_notional":{"nullable":true,"description":"Call quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"}},"required":["date","p","c","pc","p_p","c_p","pc_p","p_notional","c_notional"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"p":{"nullable":true,"description":"Total put open-interest quantity (OI series) or retained volume quantity (volume series), rounded to four decimals. Not USD.","type":"number"},"c":{"nullable":true,"description":"Corresponding total call quantity, rounded to four decimals. Not USD.","type":"number"},"pc":{"nullable":true,"description":"Put/call quantity ratio p / c, dimensionless, rounded to three decimals. A nonfinite ratio is null, not zero.","type":"number"},"p_p":{"nullable":true,"description":"USD-equivalent premium valuation of put quantity, rounded to four decimals. Second p means premium, not probability. Volume valuation is not realized traded premium.","type":"number"},"c_p":{"nullable":true,"description":"USD-equivalent premium valuation of call quantity, rounded to four decimals. Null when required valuation inputs are unavailable.","type":"number"},"pc_p":{"nullable":true,"description":"Put/call premium-valuation ratio p_p / c_p, dimensionless, rounded to two decimals; not the quantity ratio pc.","type":"number"},"p_notional":{"nullable":true,"description":"Put quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"},"c_notional":{"nullable":true,"description":"Call quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"}},"required":["date","p","c","pc","p_p","c_p","pc_p","p_notional","c_notional"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"maturity":{"type":"string","description":"Option maturity identifier, not time remaining."},"max_pain":{"nullable":true,"description":"Retained maximum-pain strike level in the underlying quote currency, not a probability or predicted settlement.","type":"number"},"index_price":{"nullable":true,"description":"Retained spot-index reference price in its quote currency.","type":"number"}},"required":["date","maturity","max_pain","index_price"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"oi":{"nullable":true,"description":"Sum of retained outstanding option quantities, not USD notional.","type":"number"},"notional":{"nullable":true,"description":"Sum of quantity times underlying reference price in USD-equivalent units.","type":"number"},"premium":{"nullable":true,"description":"USD-equivalent premium valuation of outstanding options; null if a required valuation input is unavailable. Not notional exposure.","type":"number"}},"required":["date","oi","notional","premium"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"volume":{"nullable":true,"description":"Sum of retained option volume state at this observation timestamp, in source quantity units; not USD. It is the volume value stored on each retained snapshot row, not unique trades during the resolution interval, so successive timestamps must not be summed into turnover.","type":"number"},"notional":{"nullable":true,"description":"Retained volume quantity times underlying reference price, summed over the selected scope at this timestamp, in USD-equivalent units. Not option premium turnover.","type":"number"},"premium":{"nullable":true,"description":"USD-equivalent valuation of the retained volume quantity at the observation quotes; not realized traded premium. Null if a required valuation input is unavailable for any contributing row.","type":"number"}},"required":["date","volume","notional","premium"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: sum of open-interest quantity times underlying reference price in USD-equivalent units; not a count.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of outstanding options; not trading volume.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: retained open-interest quantity times underlying reference price, summed over every venue for the requested currency at this timestamp, in USD-equivalent units, rounded to two decimals; not a count.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of outstanding options over every venue for the requested currency, rounded to two decimals; not trading volume. Null if any contributing valuation input is unavailable.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: retained volume quantity times underlying reference price, summed over every venue for the requested currency at this timestamp, in USD-equivalent units, rounded to two decimals. Retained volume state, not unique trades in the interval.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of the retained volume quantity over every venue for the requested currency, rounded to two decimals; not realized traded premium. Null if any contributing valuation input is unavailable.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"f_u":{"nullable":true,"description":"Dated futures, USD-margined: open interest in USD-equivalent units.","type":"number"},"f_u_n":{"nullable":true,"description":"Dated futures, USD-margined: open interest in base-asset units. Legacy _n is NOT USD notional.","type":"number"},"f_c":{"nullable":true,"description":"Dated futures, coin-margined: open interest in USD-equivalent units.","type":"number"},"f_c_n":{"nullable":true,"description":"Dated futures, coin-margined: open interest in base-asset units.","type":"number"},"p_u":{"nullable":true,"description":"Perpetuals, USD-margined: open interest in USD-equivalent units. p means perpetual, not put.","type":"number"},"p_u_n":{"nullable":true,"description":"Perpetuals, USD-margined: open interest in base-asset units.","type":"number"},"p_c":{"nullable":true,"description":"Perpetuals, coin-margined: open interest in USD-equivalent units. c means coin margin, not call.","type":"number"},"p_c_n":{"nullable":true,"description":"Perpetuals, coin-margined: open interest in base-asset units.","type":"number"}},"required":["date","f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false}]}}},"required":["dataset_id","series","meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained open interest, volume, put/call, margin and max-pain history","tags":["Market Positioning History"]}},"/api/v1/historical/options/oi_strike/{market}/{currency}/{maturity}":{"get":{"operationId":"LegacyPositioningHistoryController_options_oi_strike","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","description":"Exact DMONYY or DDMONYY expiry; ALL is not supported by the retained query.","schema":{"type":"string"}},{"name":"date_h","required":true,"in":"query","description":"YYYY-MM-DDTHH in UTC. Sums all observations of this hour; returns a bare strike-sorted array, no paging.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Option strike price in the underlying reference quote currency.","type":"number"},"c":{"nullable":true,"description":"Call quantity: sum of retained open interest or volume observations over the selected hour. Repeated observations are included; this is not a single-instant OI snapshot or unique traded volume.","type":"number"},"p":{"nullable":true,"description":"Put quantity: same hour-summed observation rule as c, in retained source quantity units.","type":"number"},"notional_c":{"nullable":true,"description":"Call quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"},"notional_p":{"nullable":true,"description":"Put quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"}},"required":["strike","c","p","notional_c","notional_p"],"additionalProperties":false}}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible options open interest by strike","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/volume_strike/{market}/{currency}/{maturity}":{"get":{"operationId":"LegacyPositioningHistoryController_options_volume_strike","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"maturity","required":true,"in":"path","description":"Exact DMONYY or DDMONYY expiry; ALL is not supported by the retained query.","schema":{"type":"string"}},{"name":"date_h","required":true,"in":"query","description":"YYYY-MM-DDTHH in UTC. Sums all observations of this hour; returns a bare strike-sorted array, no paging.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"strike":{"nullable":true,"description":"Option strike price in the underlying reference quote currency.","type":"number"},"c":{"nullable":true,"description":"Call quantity: sum of retained open interest or volume observations over the selected hour. Repeated observations are included; this is not a single-instant OI snapshot or unique traded volume.","type":"number"},"p":{"nullable":true,"description":"Put quantity: same hour-summed observation rule as c, in retained source quantity units.","type":"number"},"notional_c":{"nullable":true,"description":"Call quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"},"notional_p":{"nullable":true,"description":"Put quantity times underlying reference price, summed over the selected hour, in USD-equivalent units. Not option premium value.","type":"number"}},"required":["strike","c","p","notional_c","notional_p"],"additionalProperties":false}}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible options volume by strike","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/oi_pc_ratio/{market}/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_oi_pc_ratio","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"p":{"nullable":true,"description":"Total put open-interest quantity (OI series) or retained volume quantity (volume series), rounded to four decimals. Not USD.","type":"number"},"c":{"nullable":true,"description":"Corresponding total call quantity, rounded to four decimals. Not USD.","type":"number"},"pc":{"nullable":true,"description":"Put/call quantity ratio p / c, dimensionless, rounded to three decimals. A nonfinite ratio is null, not zero.","type":"number"},"p_p":{"nullable":true,"description":"USD-equivalent premium valuation of put quantity, rounded to four decimals. Second p means premium, not probability. Volume valuation is not realized traded premium.","type":"number"},"c_p":{"nullable":true,"description":"USD-equivalent premium valuation of call quantity, rounded to four decimals. Null when required valuation inputs are unavailable.","type":"number"},"pc_p":{"nullable":true,"description":"Put/call premium-valuation ratio p_p / c_p, dimensionless, rounded to two decimals; not the quantity ratio pc.","type":"number"},"p_notional":{"nullable":true,"description":"Put quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"},"c_notional":{"nullable":true,"description":"Call quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"}},"required":["date","p","c","pc","p_p","c_p","pc_p","p_notional","c_notional"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible options put/call open-interest ratios","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/volume_pc_ratio/{market}/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_volume_pc_ratio","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"p":{"nullable":true,"description":"Total put open-interest quantity (OI series) or retained volume quantity (volume series), rounded to four decimals. Not USD.","type":"number"},"c":{"nullable":true,"description":"Corresponding total call quantity, rounded to four decimals. Not USD.","type":"number"},"pc":{"nullable":true,"description":"Put/call quantity ratio p / c, dimensionless, rounded to three decimals. A nonfinite ratio is null, not zero.","type":"number"},"p_p":{"nullable":true,"description":"USD-equivalent premium valuation of put quantity, rounded to four decimals. Second p means premium, not probability. Volume valuation is not realized traded premium.","type":"number"},"c_p":{"nullable":true,"description":"USD-equivalent premium valuation of call quantity, rounded to four decimals. Null when required valuation inputs are unavailable.","type":"number"},"pc_p":{"nullable":true,"description":"Put/call premium-valuation ratio p_p / c_p, dimensionless, rounded to two decimals; not the quantity ratio pc.","type":"number"},"p_notional":{"nullable":true,"description":"Put quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"},"c_notional":{"nullable":true,"description":"Call quantity times underlying reference price, summed at this timestamp in USD-equivalent units. Not premium valuation.","type":"number"}},"required":["date","p","c","pc","p_p","c_p","pc_p","p_notional","c_notional"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible options put/call volume ratios","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/max_pain/{market}/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_max_pain","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"maturity":{"type":"string","description":"Option maturity identifier, not time remaining."},"max_pain":{"nullable":true,"description":"Retained maximum-pain strike level in the underlying quote currency, not a probability or predicted settlement.","type":"number"},"index_price":{"nullable":true,"description":"Retained spot-index reference price in its quote currency.","type":"number"}},"required":["date","maturity","max_pain","index_price"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible retained max pain by maturity","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/oi_total/{market}/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_oi_total","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"oi":{"nullable":true,"description":"Sum of retained outstanding option quantities, not USD notional.","type":"number"},"notional":{"nullable":true,"description":"Sum of quantity times underlying reference price in USD-equivalent units.","type":"number"},"premium":{"nullable":true,"description":"USD-equivalent premium valuation of outstanding options; null if a required valuation input is unavailable. Not notional exposure.","type":"number"}},"required":["date","oi","notional","premium"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible options total open interest","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/volume_total/{market}/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_volume_total","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"volume":{"nullable":true,"description":"Sum of retained option volume state at this observation timestamp, in source quantity units; not USD. It is the volume value stored on each retained snapshot row, not unique trades during the resolution interval, so successive timestamps must not be summed into turnover.","type":"number"},"notional":{"nullable":true,"description":"Retained volume quantity times underlying reference price, summed over the selected scope at this timestamp, in USD-equivalent units. Not option premium turnover.","type":"number"},"premium":{"nullable":true,"description":"USD-equivalent valuation of the retained volume quantity at the observation quotes; not realized traded premium. Null if a required valuation input is unavailable for any contributing row.","type":"number"}},"required":["date","volume","notional","premium"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible retained options volume state, notional and premium valuation; market aggregate spans venues","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/total/oi_by_market/{market}":{"get":{"operationId":"LegacyPositioningHistoryController_options_oi_by_market","parameters":[{"name":"market","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: sum of open-interest quantity times underlying reference price in USD-equivalent units; not a count.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of outstanding options; not trading volume.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible market-wide options OI notional and premium valuation across retained currencies","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/total/oi_by_currency/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_oi_by_currency","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: retained open-interest quantity times underlying reference price, summed over every venue for the requested currency at this timestamp, in USD-equivalent units, rounded to two decimals; not a count.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of outstanding options over every venue for the requested currency, rounded to two decimals; not trading volume. Null if any contributing valuation input is unavailable.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible all-venue options OI notional and premium valuation for one currency","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/options/total/volume_by_currency/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_options_volume_by_currency","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC. Resolution samples timestamps, not interval totals."},"n":{"nullable":true,"description":"Notional: retained volume quantity times underlying reference price, summed over every venue for the requested currency at this timestamp, in USD-equivalent units, rounded to two decimals. Retained volume state, not unique trades in the interval.","type":"number"},"ov":{"nullable":true,"description":"Option value: USD-equivalent premium valuation of the retained volume quantity over every venue for the requested currency, rounded to two decimals; not realized traded premium. Null if any contributing valuation input is unavailable.","type":"number"}},"required":["date","n","ov"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible all-venue retained options volume notional and premium valuation for one currency","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/futures/total_oi_by_margin/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_futures_oi_by_margin","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"f_u":{"nullable":true,"description":"Dated futures, USD-margined: open interest in USD-equivalent units.","type":"number"},"f_u_n":{"nullable":true,"description":"Dated futures, USD-margined: open interest in base-asset units. Legacy _n is NOT USD notional.","type":"number"},"f_c":{"nullable":true,"description":"Dated futures, coin-margined: open interest in USD-equivalent units.","type":"number"},"f_c_n":{"nullable":true,"description":"Dated futures, coin-margined: open interest in base-asset units.","type":"number"},"p_u":{"nullable":true,"description":"Perpetuals, USD-margined: open interest in USD-equivalent units. p means perpetual, not put.","type":"number"},"p_u_n":{"nullable":true,"description":"Perpetuals, USD-margined: open interest in base-asset units.","type":"number"},"p_c":{"nullable":true,"description":"Perpetuals, coin-margined: open interest in USD-equivalent units. c means coin margin, not call.","type":"number"},"p_c_n":{"nullable":true,"description":"Perpetuals, coin-margined: open interest in base-asset units.","type":"number"}},"required":["date","f_u","f_u_n","f_c","f_c_n","p_u","p_u_n","p_c","p_c_n"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures open interest by margin","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/futures/total_oi_by_exchange/{currency}/{option}":{"get":{"operationId":"LegacyPositioningHistoryController_futures_oi_by_exchange","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"option","required":true,"in":"path","description":"Pinned gateway CEX/DEX classification; case-insensitive.","schema":{"enum":["c","d"],"type":"string"}},{"name":"market","required":false,"in":"query","description":"Legacy optional market filter; incompatible c/d and market retain the v1 no-filter behavior.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures open interest by exchange","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/futures/total_volume_by_exchange/{currency}/{option}":{"get":{"operationId":"LegacyPositioningHistoryController_futures_volume_by_exchange","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"option","required":true,"in":"path","description":"Pinned gateway CEX/DEX classification; case-insensitive.","schema":{"enum":["c","d"],"type":"string"}},{"name":"market","required":false,"in":"query","description":"Legacy optional market filter; incompatible c/d and market retain the v1 no-filter behavior.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures volume by exchange","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/futures/total_oi/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_futures_oi_total","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures total open interest","tags":["Legacy Market Positioning History"]}},"/api/v1/historical/futures/total_volume/{currency}":{"get":{"operationId":"LegacyPositioningHistoryController_futures_volume_total","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"UTC sample grid, not interval aggregation; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Default query page 1; omitted meta.page matches v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Default query 10 rows; omitted meta.total_pages uses divisor 1 as in v1. Max pain counts maturity rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; coarse resolution samples observations rather than summing the interval."},"perpetual":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Perpetual contracts. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."},"future":{"type":"object","additionalProperties":{"nullable":true,"type":"number"},"description":"Dated futures. Uppercase venue keys: e.g. DERIBIT is USD-equivalent exposure/volume; DERIBIT_notional is base-asset quantity despite the legacy name. OI is outstanding exposure; volume is the retained rolling volume observation, not interval volume. Missing venue keys are not certified zero OI."}},"required":["date","perpetual","future"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible futures total volume","tags":["Legacy Market Positioning History"]}},"/api/v1/market/snapshot-history":{"get":{"description":"Retained v1 chain snapshots served on v2, including older archive generations, for four series: options, options_dynamic_volume (option chains with trade-derived rolling volume), futures and perpetuals. Select series=options for option chains. Options from 2025-08-20 and all dynamic-volume rows come from stored minute observations; earlier options and all futures/perpetuals come from archived snapshots in two generations (futures/perpetuals split at 2024-11-01, options at 2025-02-24). Not interchangeable with modern /options/snapshot, OHLC data or order-book replay. Older underlyer_spot/forward_price mappings differ by source generation; consult the field guide before combining them.\n\nStored-minute option rows: date is the observation minute. Archive-backed rows: date is the requested grid slot (request start truncated to the minute plus k x resolution, not aligned to UTC hours/days) and the stored observation time, where present, is the datetime text, which can lack a timezone suffix. Neither is original availability time.\n\nExplicit timezone-qualified start/end, inclusive; archive bounds truncate to minutes and a future end is clamped to now. limit counts timestamp slots, not instruments: 1 for option series, at most 144 for futures/perpetuals. count_basis states whether totals count requested slots or observed timestamps; native paging places each slot in exactly one generation. Compatibility archive aliases read objects only when both page and limit are sent, omit total_pages and repeat the generation boundary slot (2024-11-01 for futures/perpetuals, 2025-02-24 for options) in both generations.\n\nLegacy fields and source-generation conventions; see history-field-guide.md, Market snapshots.\n\nOlder archive generations and post-2024-11-01 futures/perpetual rows coerce a stored null or empty value to 0 and return an absent field as null; post-2025-02-24 option archive rows keep numeric strings and omitted fields. A zero is therefore not proof of a zero observation.\n\nFutures/perpetual mark_price 0 is returned as null, except in post-2024-11-01 perpetual archive rows, where 0 is kept.\n\nDerivative snapshot volume is base-asset quantity and volume_usd is USD-equivalent, unlike instrument-history volume.\n\nArchived source conventions. Percentage-point funding and USD-equivalent open interest are instrument-history conventions and are not verified for archived snapshots.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: market.snapshot_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nFour legacy snapshot series share subscriber authorization, history entitlement and bounded source admission. Archived generations and retained option-table observations keep their source field mappings and timestamp semantics. Options dynamic-volume snapshots use the retained trade-derived rolling volume. This is not modern OHLC data or full order-book replay. Page limits count snapshot timestamps, not returned instruments; empty archived slots remain part of the requested grid. Source generations have different field availability and pagination semantics. No originally-published or complete-history certification. Available to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"SnapshotHistoryController_read","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["options","futures","perpetuals","options_dynamic_volume"]}},{"name":"exchange","required":true,"in":"query","schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9]+(?:[-_][a-z0-9]+)*$","description":"Lowercase retained venue, not a guarantee of archive availability."}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$"}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive. Archive bounds truncate to minutes and clamp future end to now."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"1m","description":"Archive grids advance from the request start; option-table samples use UTC grids. Not OHLC aggregation.","type":"string","enum":["1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":1,"description":"Timestamp slots, not instrument rows. Options: at most 1; futures/perpetuals: at most 144.","type":"integer","minimum":1,"maximum":144}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["market.snapshot_observations"]},"series":{"type":"string","enum":["options","futures","perpetuals","options_dynamic_volume"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991},"count_basis":{"type":"string","enum":["requested_timestamp_slots","observed_timestamps","archive_slots_then_observed_timestamps"]},"selected_snapshots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of timestamp slots selected for this page; not the number of instrument rows."},"returned_snapshots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of distinct returned snapshot timestamps; not the number of instruments."},"missing_object_timestamps":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":"UTC Unix-millisecond archive slots whose snapshot object was unavailable. Not evidence of zero market activity."},"empty_snapshot_timestamps":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":"UTC Unix-millisecond archive slots read successfully but yielding no matching instrument rows."},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["market.snapshot_observations"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["market.snapshot_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","items","page","limit","total_pages","count_basis","selected_snapshots","returned_snapshots","missing_object_timestamps","empty_snapshot_timestamps","availability"],"additionalProperties":false},"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"},"claim_type":{"type":"string","description":"Option right: call or put; not long/short position side."},"exercise":{"description":"Legacy exercise-style label: European.","nullable":true,"type":"string"},"settlement":{"description":"Legacy settlement-method label: cash. Does not identify the cash/crypto settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"strike":{"description":"Option strike price in the underlying reference quote currency, not an option premium. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlyer_spot":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use spot index; the intermediate archive generation uses stored underlying reference instead. Do not assume identical semantics over all history; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"forward_price":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use underlying pricing reference; the intermediate archive generation uses stored index reference instead. Not universally an expiry forward; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_amount":{"description":"Retained best-bid displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_amount":{"description":"Retained best-ask displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]}},"required":["date","instrument_name","claim_type"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"},"claim_type":{"type":"string","description":"Option right: call or put; not long/short position side."},"exercise":{"description":"Legacy exercise-style label: European.","nullable":true,"type":"string"},"settlement":{"description":"Legacy settlement-method label: cash. Does not identify the cash/crypto settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"strike":{"description":"Option strike price in the underlying reference quote currency, not an option premium. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlyer_spot":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use spot index; the intermediate archive generation uses stored underlying reference instead. Do not assume identical semantics over all history; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"forward_price":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use underlying pricing reference; the intermediate archive generation uses stored index reference instead. Not universally an expiry forward; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"volume":{"description":"Trade-derived rolling quantity for the requested resolution, rounded to three decimals. Unlike ordinary options snapshots, this is not the venue-reported rolling volume field.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_amount":{"description":"Retained best-bid displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_amount":{"description":"Retained best-ask displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlying_index":{"type":"string","description":"Reference future symbol if available, otherwise a SYN. label. A synthetic label is not proof of a tradable underlying contract."}},"required":["date","instrument_name","claim_type","underlying_index"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"mark_price":{"nullable":true,"description":"Retained derivative reference/mark price in the source price convention; not an option premium or OHLC candle. A stored 0 is returned as null, except in post-2024-11-01 perpetual archive rows, where 0 is kept.","type":"number"},"bid":{"nullable":true,"description":"Retained best bid price in the contract quotation convention; not bid size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"bid_amount":{"nullable":true,"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask":{"nullable":true,"description":"Retained best ask price in the contract quotation convention; not ask size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask_amount":{"nullable":true,"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume":{"nullable":true,"description":"Retained rolling volume in base-asset quantity units. Unlike derivative instrument-history volume, this snapshot field is NOT USD volume. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume_usd":{"nullable":true,"description":"Retained rolling volume in USD-equivalent units. Not volume traded during the requested resolution. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"open_interest":{"nullable":true,"description":"Retained open interest under the archived source convention. Derivative instrument history documents USD-equivalent open interest; that unit is not verified for archived snapshots, so check before combining them. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"underlyer_spot":{"nullable":true,"description":"Retained derivative spot/index reference price, in its reference quote currency. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"basis":{"nullable":true,"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"}},"required":["date","instrument_name","mark_price","bid","bid_amount","ask","ask_amount","volume","volume_usd","open_interest","underlyer_spot","basis"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"mark_price":{"nullable":true,"description":"Retained derivative reference/mark price in the source price convention; not an option premium or OHLC candle. A stored 0 is returned as null, except in post-2024-11-01 perpetual archive rows, where 0 is kept.","type":"number"},"bid":{"nullable":true,"description":"Retained best bid price in the contract quotation convention; not bid size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"bid_amount":{"nullable":true,"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask":{"nullable":true,"description":"Retained best ask price in the contract quotation convention; not ask size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask_amount":{"nullable":true,"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume":{"nullable":true,"description":"Retained rolling volume in base-asset quantity units. Unlike derivative instrument-history volume, this snapshot field is NOT USD volume. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume_usd":{"nullable":true,"description":"Retained rolling volume in USD-equivalent units. Not volume traded during the requested resolution. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"open_interest":{"nullable":true,"description":"Retained open interest under the archived source convention. Derivative instrument history documents USD-equivalent open interest; that unit is not verified for archived snapshots, so check before combining them. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"underlyer_spot":{"nullable":true,"description":"Retained derivative spot/index reference price, in its reference quote currency. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"basis":{"nullable":true,"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"next_fr":{"nullable":true,"description":"Retained next funding-rate estimate under the archived source convention (documented elsewhere as percentage points, not verified for archives). Not the next settlement timestamp or a guaranteed payment. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"fr":{"nullable":true,"description":"Retained funding-rate observation under the archived source convention. The retained-history guide documents percentage points (0.01 means 0.01%); that convention is not verified for archived snapshots. Not a funding payment. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"}},"required":["date","instrument_name","mark_price","bid","bid_amount","ask","ask_amount","volume","volume_usd","open_interest","underlyer_spot","basis","next_fr","fr"],"additionalProperties":false}]}}},"required":["dataset_id","series","meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained options, futures and perpetual snapshot observations","tags":["Market Snapshot History"]}},"/api/v1/historical/options/snapshot/{market}/{currency}":{"get":{"operationId":"LegacySnapshotHistoryController_options","parameters":[{"name":"market","required":true,"in":"path","description":"Retained venue selector, case-insensitive.","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Retained currency/product selector, case-insensitive.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the full UTC day. Archive end is clamped to now.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Default 1m. Sampling, not OHLC aggregation; archive grids start at the requested minute.","schema":{"enum":["1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"],"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Timestamp-slot page, not an instrument-row page."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1},"description":"Maximum selected snapshot timestamps, not instrument rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"},"claim_type":{"type":"string","description":"Option right: call or put; not long/short position side."},"exercise":{"description":"Legacy exercise-style label: European.","nullable":true,"type":"string"},"settlement":{"description":"Legacy settlement-method label: cash. Does not identify the cash/crypto settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"strike":{"description":"Option strike price in the underlying reference quote currency, not an option premium. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlyer_spot":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use spot index; the intermediate archive generation uses stored underlying reference instead. Do not assume identical semantics over all history; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"forward_price":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use underlying pricing reference; the intermediate archive generation uses stored index reference instead. Not universally an expiry forward; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_amount":{"description":"Retained best-bid displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_amount":{"description":"Retained best-ask displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]}},"required":["date","instrument_name","claim_type"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible historical option-chain snapshots","tags":["Legacy Market Snapshot History"]}},"/api/v1/historical/futures/snapshot/{market}/{currency}":{"get":{"operationId":"LegacySnapshotHistoryController_futures","parameters":[{"name":"market","required":true,"in":"path","description":"Retained venue selector, case-insensitive.","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Retained currency/product selector, case-insensitive.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the full UTC day. Archive end is clamped to now.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Default 1m. Sampling, not OHLC aggregation; archive grids start at the requested minute.","schema":{"enum":["1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"],"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Timestamp-slot page, not an instrument-row page."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":144},"description":"Maximum selected snapshot timestamps, not instrument rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"mark_price":{"nullable":true,"description":"Retained derivative reference/mark price in the source price convention; not an option premium or OHLC candle. A stored 0 is returned as null, except in post-2024-11-01 perpetual archive rows, where 0 is kept.","type":"number"},"bid":{"nullable":true,"description":"Retained best bid price in the contract quotation convention; not bid size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"bid_amount":{"nullable":true,"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask":{"nullable":true,"description":"Retained best ask price in the contract quotation convention; not ask size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask_amount":{"nullable":true,"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume":{"nullable":true,"description":"Retained rolling volume in base-asset quantity units. Unlike derivative instrument-history volume, this snapshot field is NOT USD volume. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume_usd":{"nullable":true,"description":"Retained rolling volume in USD-equivalent units. Not volume traded during the requested resolution. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"open_interest":{"nullable":true,"description":"Retained open interest under the archived source convention. Derivative instrument history documents USD-equivalent open interest; that unit is not verified for archived snapshots, so check before combining them. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"underlyer_spot":{"nullable":true,"description":"Retained derivative spot/index reference price, in its reference quote currency. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"basis":{"nullable":true,"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"}},"required":["date","instrument_name","mark_price","bid","bid_amount","ask","ask_amount","volume","volume_usd","open_interest","underlyer_spot","basis"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible historical dated-futures snapshots","tags":["Legacy Market Snapshot History"]}},"/api/v1/historical/derivs/snapshot/{market}/{currency}":{"get":{"operationId":"LegacySnapshotHistoryController_perpetuals","parameters":[{"name":"market","required":true,"in":"path","description":"Retained venue selector, case-insensitive.","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Retained currency/product selector, case-insensitive.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the full UTC day. Archive end is clamped to now.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Default 1m. Sampling, not OHLC aggregation; archive grids start at the requested minute.","schema":{"enum":["1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"],"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Timestamp-slot page, not an instrument-row page."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":144},"description":"Maximum selected snapshot timestamps, not instrument rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"mark_price":{"nullable":true,"description":"Retained derivative reference/mark price in the source price convention; not an option premium or OHLC candle. A stored 0 is returned as null, except in post-2024-11-01 perpetual archive rows, where 0 is kept.","type":"number"},"bid":{"nullable":true,"description":"Retained best bid price in the contract quotation convention; not bid size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"bid_amount":{"nullable":true,"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask":{"nullable":true,"description":"Retained best ask price in the contract quotation convention; not ask size. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"ask_amount":{"nullable":true,"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume":{"nullable":true,"description":"Retained rolling volume in base-asset quantity units. Unlike derivative instrument-history volume, this snapshot field is NOT USD volume. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"volume_usd":{"nullable":true,"description":"Retained rolling volume in USD-equivalent units. Not volume traded during the requested resolution. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"open_interest":{"nullable":true,"description":"Retained open interest under the archived source convention. Derivative instrument history documents USD-equivalent open interest; that unit is not verified for archived snapshots, so check before combining them. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"underlyer_spot":{"nullable":true,"description":"Retained derivative spot/index reference price, in its reference quote currency. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"basis":{"nullable":true,"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"next_fr":{"nullable":true,"description":"Retained next funding-rate estimate under the archived source convention (documented elsewhere as percentage points, not verified for archives). Not the next settlement timestamp or a guaranteed payment. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"},"fr":{"nullable":true,"description":"Retained funding-rate observation under the archived source convention. The retained-history guide documents percentage points (0.01 means 0.01%); that convention is not verified for archived snapshots. Not a funding payment. Archived snapshots return a stored null or empty value as 0 and an absent value as null; a zero is not proof of a zero observation.","type":"number"}},"required":["date","instrument_name","mark_price","bid","bid_amount","ask","ask_amount","volume","volume_usd","open_interest","underlyer_spot","basis","next_fr","fr"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible historical perpetual-futures snapshots","tags":["Legacy Market Snapshot History"]}},"/api/v1/historical/options/dynamic_volume_snapshot/{market}/{currency}":{"get":{"operationId":"LegacySnapshotHistoryController_optionsDynamicVolume","parameters":[{"name":"market","required":true,"in":"path","description":"Retained venue selector, case-insensitive.","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","description":"Retained currency/product selector, case-insensitive.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Inclusive. Date-only includes the full UTC day. Archive end is clamped to now.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Default 1m. Sampling, not OHLC aggregation; archive grids start at the requested minute.","schema":{"enum":["1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"],"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Timestamp-slot page, not an instrument-row page."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1},"description":"Maximum selected snapshot timestamps, not instrument rows."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Snapshot timestamp in Unix milliseconds, UTC. Multiple instruments share a timestamp; archive slots are not necessarily the original publication time."},"instrument_name":{"type":"string","description":"Retained venue-specific instrument identifier; preserve spelling and separators."},"underlyer":{"description":"Legacy underlying label, typically BTC_USD; not a guarantee of the option premium or settlement currency.","nullable":true,"type":"string"},"expiration_date":{"description":"Legacy expiry timestamp formatted at 08:00 UTC. This compatibility field is not an exchange-native expiry-hour certificate across all venues.","nullable":true,"type":"string"},"claim_type":{"type":"string","description":"Option right: call or put; not long/short position side."},"exercise":{"description":"Legacy exercise-style label: European.","nullable":true,"type":"string"},"settlement":{"description":"Legacy settlement-method label: cash. Does not identify the cash/crypto settlement currency.","nullable":true,"type":"string"},"datetime":{"description":"Optional legacy timestamp text from the archive; date is the pagination timestamp in Unix milliseconds. Text may omit a timezone suffix.","nullable":true,"type":"string"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"strike":{"description":"Option strike price in the underlying reference quote currency, not an option premium. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlyer_spot":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use spot index; the intermediate archive generation uses stored underlying reference instead. Do not assume identical semantics over all history; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"forward_price":{"description":"Reference-price field with legacy generation-dependent mapping. Recent observations use underlying pricing reference; the intermediate archive generation uses stored index reference instead. Not universally an expiry forward; see field guide. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"volume":{"description":"Trade-derived rolling quantity for the requested resolution, rounded to three decimals. Unlike ordinary options snapshots, this is not the venue-reported rolling volume field.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_bid_amount":{"description":"Retained best-bid displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"best_ask_amount":{"description":"Retained best-ask displayed quantity in source units. Not full depth or guaranteed executable size; historical unit conventions are preserved. Archived generations may retain numeric strings or omit the field; null, zero and absence are distinct.","anyOf":[{"type":"number"},{"type":"string"},{"type":"string","nullable":true,"enum":[null]}]},"underlying_index":{"type":"string","description":"Reference future symbol if available, otherwise a SYN. label. A synthetic label is not proof of a tradable underlying contract."}},"required":["date","instrument_name","claim_type","underlying_index"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible option snapshots with trade-derived rolling volume","tags":["Legacy Market Snapshot History"]}},"/api/v1/derivatives/funding-history":{"get":{"description":"Eight retained v1 series selected by series: perpetual_funding and perpetual_yield (per-symbol arrays for one exchange); perpetual_funding_exchange (yield, funding and next_fr by market and symbol, option C/D selecting the legacy centralized/decentralized venue group); oi_weighted_funding (USD open-interest weighted) and oi_weighted_volume_funding (USD rolling-volume weighted), each with all/coin-margined/USD-margined variants; oi_weighted_basis (seven target tenors); futures_annualized_basis (per-market map for one days tenor); realized_volatility (aggregate spot). Weighted values combine the instruments stored at one timestamp; they are not averages over time. Not settlement cashflows or modern v2 carry.\n\nStored observation timestamp shared by every value in the row (whole seconds), ascending. Not a funding settlement time or ingestion/publication time.\n\nExplicit timezone-qualified start/end, inclusive after truncation to seconds. exchange is required only for perpetual_funding/perpetual_yield, option only for perpetual_funding_exchange and days (7, 30, 60, 90, 180, 270, 365) only for futures_annualized_basis. Funding/carry use the full uppercase currency; realized_volatility uses the base before an underscore. page/limit (default 10, maximum 1440) and total count timestamps, not nested symbols or markets. Compatibility aliases keep v1 date-only whole-day bounds, the omitted-end default and legacy pagination accounting; use the route mapping for equivalent requests.\n\nPercentage points per the retained field guide (0.01 means 0.01%), normally 8-hour-equivalent as stored. Modern perpetual funding is a decimal (0.0001 means 0.01%), so the same rate is 100 times larger here. Not a payment amount or settlement timestamp. Sampling at 1h does not make it an hourly rate.\n\nAnnualized percentage points (10.95 means 10.95% per year), not a compounded APY; do not re-annualize.\n\nWeighted normalized reference price in the source quotation currency.\n\noi_weighted_basis and futures_annualized_basis: annualized dated-futures basis in percentage points, weighted by open_interest / (0.001 + |days_to_go - target|) within the tenor band (5 days for 7, otherwise half the target). Keys are target days or venue names.\n\nAnnualized aggregate-spot realized volatility in percentage points, rounded to two decimals; keys 3 to 365 are lookback days, not option expiries.\n\nWeighted funding and basis return 0 when the weight denominator is not positive, and a missing RV tenor keeps a 0 default. Such zeroes are not certified zero activity or zero volatility.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: derivatives.funding_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nPerpetual funding/yield preserve symbol arrays, including duplicate symbols. Available to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"FundingHistoryController_read","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["perpetual_funding","perpetual_yield","perpetual_funding_exchange","oi_weighted_funding","oi_weighted_volume_funding","oi_weighted_basis","futures_annualized_basis","realized_volatility"]}},{"name":"exchange","required":false,"in":"query","schema":{"description":"Required only for perpetual_funding and perpetual_yield. Lowercase retained venue selector, including hyphenated names. Venue availability is source-dependent; no fixed current-exchange whitelist is implied.","type":"string","maxLength":64,"pattern":"^[a-z0-9]+(?:[-_][a-z0-9]+)*$"}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$","description":"Uppercase currency. Funding/carry preserve the full currency; realized_volatility selects the base before an underscore."}},{"name":"option","required":false,"in":"query","schema":{"description":"Required only for perpetual_funding_exchange: C or D uses the pinned gateway DEX list.","type":"string","enum":["C","D"]}},{"name":"days","required":false,"in":"query","schema":{"description":"Required only for futures_annualized_basis: one target tenor in days.","anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[30]},{"type":"number","enum":[60]},{"type":"number","enum":[90]},{"type":"number","enum":[180]},{"type":"number","enum":[270]},{"type":"number","enum":[365]}]}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive after truncation to seconds."}},{"name":"resolution","required":false,"in":"query","schema":{"description":"UTC grid samples, not interval aggregates. Default native, except realized_volatility defaults to 1h and permits only 1h, 2h, 4h, 6h, 12h or 1d.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["derivatives.funding_observations"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["derivatives.funding_observations"]},"exchange_supported":{"nullable":true,"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["derivatives.funding_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","items","page","total_pages","limit","availability"],"additionalProperties":false},"series":{"type":"string","enum":["perpetual_funding","perpetual_yield","perpetual_funding_exchange","oi_weighted_funding","oi_weighted_volume_funding","oi_weighted_basis","futures_annualized_basis","realized_volatility"]},"option":{"type":"string","enum":["C","D"]},"days":{"anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[30]},{"type":"number","enum":[60]},{"type":"number","enum":[90]},{"type":"number","enum":[180]},{"type":"number","enum":[270]},{"type":"number","enum":[365]}]},"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"funding":{"nullable":true,"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["funding","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"yield":{"nullable":true,"description":"Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["yield","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"yield":{"nullable":true,"description":"Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"market":{"type":"string","description":"Retained exchange name; not a margin type."},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["yield","funding","next_fr","market","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"price":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Normalized reference price; not an option premium.","type":"number"},"apr":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only; c is not call. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only; u is not put. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"}},"required":["date","price","apr","apr_c","apr_u","funding","funding_c","funding_u","next_fr","next_fr_c","next_fr_u"],"additionalProperties":false},{"type":"object","properties":{"price":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Normalized reference price; not an option premium.","type":"number"},"apr":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only; c is not call. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only; u is not put. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["price","apr","apr_c","apr_u","funding","funding_c","funding_u","next_fr","next_fr_c","next_fr_u","date"],"additionalProperties":false},{"type":"object","properties":{"7":{"nullable":true,"description":"7-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"30":{"nullable":true,"description":"30-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"60":{"nullable":true,"description":"60-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"90":{"nullable":true,"description":"90-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"180":{"nullable":true,"description":"180-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"270":{"nullable":true,"description":"270-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"365":{"nullable":true,"description":"365-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["7","30","60","90","180","270","365","date"],"additionalProperties":false},{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Annualized dated-futures basis in percentage points for this exchange and selected tenor; not a perpetual funding settlement.","type":"number"}},{"type":"object","properties":{"3":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"7":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"30":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"60":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"90":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"180":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"270":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"365":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["3","7","30","60","90","180","270","365","date"],"additionalProperties":false}]}}},"required":["dataset_id","meta","series","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained funding, carry and aggregate spot realized-volatility observations","tags":["Derivatives Funding History"]}},"/api/v1/historical/futures/perpetual_funding/{currency}/{market}":{"get":{"operationId":"LegacyFundingHistoryController_perpetual_funding","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"market","required":true,"in":"path","description":"Retained venue name, case-insensitive. Availability depends on the retained source.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"funding":{"nullable":true,"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["funding","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual funding observations by symbol","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/perpetual_yield/{currency}/{market}":{"get":{"operationId":"LegacyFundingHistoryController_perpetual_yield","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"market","required":true,"in":"path","description":"Retained venue name, case-insensitive. Availability depends on the retained source.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"yield":{"nullable":true,"description":"Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["yield","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible perpetual yield observations by symbol","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/perpetual_funding_exchange/{currency}/{option}":{"get":{"operationId":"LegacyFundingHistoryController_perpetual_funding_exchange","parameters":[{"name":"option","required":true,"in":"path","description":"Pinned gateway CEX/DEX taxonomy, case-insensitive.","schema":{"enum":["C","D"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"data":{"type":"array","items":{"type":"object","properties":{"yield":{"nullable":true,"description":"Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"market":{"type":"string","description":"Retained exchange name; not a margin type."},"symbol":{"type":"string","description":"Retained exchange contract identifier; multiple symbols may exist for one currency and timestamp."}},"required":["yield","funding","next_fr","market","symbol"],"additionalProperties":false}}},"required":["date","data"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible yield, funding and announced rate by market and symbol","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/oi_weighted_funding/{currency}":{"get":{"operationId":"LegacyFundingHistoryController_oi_weighted_funding","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples this grid, not funding settlement times."},"price":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Normalized reference price; not an option premium.","type":"number"},"apr":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only; c is not call. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only; u is not put. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_c":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. Coin-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_u":{"nullable":true,"description":"Weighted by USD open interest at the observation timestamp. USD-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"}},"required":["date","price","apr","apr_c","apr_u","funding","funding_c","funding_u","next_fr","next_fr_c","next_fr_u"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible USD-open-interest-weighted funding observations","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/oi_weighted_volume_funding/{currency}":{"get":{"operationId":"LegacyFundingHistoryController_oi_weighted_volume_funding","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"price":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Normalized reference price; not an option premium.","type":"number"},"apr":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only; c is not call. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"apr_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only; u is not put. Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","type":"number"},"funding":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"funding_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only. Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","type":"number"},"next_fr":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_c":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. Coin-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"next_fr_u":{"nullable":true,"description":"Weighted by USD rolling volume at the observation timestamp. USD-margined contracts only. Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","type":"number"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["price","apr","apr_c","apr_u","funding","funding_c","funding_u","next_fr","next_fr_c","next_fr_u","date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible USD-volume-weighted funding observations","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/oi_weighted_basis/{currency}":{"get":{"operationId":"LegacyFundingHistoryController_oi_weighted_basis","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"7":{"nullable":true,"description":"7-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"30":{"nullable":true,"description":"30-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"60":{"nullable":true,"description":"60-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"90":{"nullable":true,"description":"90-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"180":{"nullable":true,"description":"180-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"270":{"nullable":true,"description":"270-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"365":{"nullable":true,"description":"365-day target: annualized dated-futures basis in percentage points, weighted by open interest and distance to this tenor. Not a perpetual funding payment; zero may be the legacy no-weight default.","type":"number"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["7","30","60","90","180","270","365","date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible distance-weighted futures basis at seven tenors","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/futures_annualized_basis/{currency}/{days}":{"get":{"operationId":"LegacyFundingHistoryController_futures_annualized_basis","parameters":[{"name":"days","required":true,"in":"path","schema":{"enum":[7,30,60,90,180,270,365],"type":"number"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid, not aggregation. Omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Annualized dated-futures basis in percentage points for this exchange and selected tenor; not a perpetual funding settlement.","type":"number"}}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible fixed-tenor futures basis by market","tags":["Legacy Derivatives Funding History"]}},"/api/v1/historical/futures/realized_volatility/{currency}":{"get":{"description":"Corrected retained spot/mark AGGREGATE points, not a futures estimator or option IV/RV join. Returns 3/7/30/60/90/180/270/365, rounded to two decimals; missing pivots preserve source zero defaults. Default 1h; hourly/day grids only.","operationId":"LegacyFundingHistoryController_realized_volatility","parameters":[{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Default 1h; only 1h, 2h, 4h, 6h, 12h and 1d UTC samples are supported.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 timestamps but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"3":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"7":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"30":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"60":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"90":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"180":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"270":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"365":{"type":"number","minimum":0,"maximum":10000,"description":"Annualized realized volatility in percentage points. The field key is the lookback in days, not an option tenor. Uses aggregate spot returns, not a futures price series. A zero may be a preserved missing-pivot default, not measured zero volatility."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation Unix milliseconds, UTC; resolution samples observations rather than calculating interval totals."}},"required":["3","7","30","60","90","180","270","365","date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible aggregate spot realized-volatility tenors","tags":["Legacy Derivatives Funding History"]}},"/api/v1/options/volatility-history":{"get":{"description":"Latest corrected legacy history. UTC grid samples, not averages, OHLC or originally-published vintages. Dynamic tenor keys and explicit withdrawals preserved. IV/RV combines venue model IV with spot RV. Actual-volatility series require days and return atm,c,p,d. Native actual RR/butterfly joins timestamp populations BEFORE paging; unlike their compatibility aliases, meta.total counts joined rows. Missing tenor fields stay omitted. Bid/ask IV calculates eight tenor maps {b,a,m} from retained chain observations, separately interpolating total variance with exact-tenor and single-neighbour fallback; mark is not a midpoint. Deribit BTC/ETH settlement prefixes stay distinct for this series. GEX preserves retained chain exposure formulas and product prefixes. Gamma bands default to 5m, return newest first and limit daily ranges to 31 inclusive UTC dates. VIX is the legacy chain estimator with 15/30/90/180-day keys, not DVOL. Available to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"VolatilityHistoryController_read","parameters":[{"name":"series","required":true,"in":"query","schema":{"type":"string","enum":["atm_iv","atm_iv_model","risk_reversal","risk_reversal_model","butterfly","butterfly_model","skew","skew_model","dvol","iv_rv","actual_skew_model","actual_risk_reversal_model","actual_butterfly_model","iv_bid_ask","gex_index","gamma_bands","vix"]}},{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["deribit","binance","bybit","okx","coincall"]}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$","description":"Uppercase legacy currency. Point series and gamma bands select the base currency. Bid/ask IV, GEX and VIX preserve settlement prefixes: BTC and BTC_USDC are distinct."}},{"name":"type","required":false,"in":"query","schema":{"description":"Required for typed series. Bid/ask IV: P_ATM, P_25, P_10, P_5, C_ATM, C_25, C_10, C_5. Gamma bands: 1D, 7D, 30D. Other series use model or delta-bucket selectors; omit for market ATM, DVOL, IV/RV, GEX and VIX.","type":"string","maxLength":8}},{"name":"days","required":false,"in":"query","schema":{"description":"Required only for actual-volatility series: one selected tenor in days.","anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[30]},{"type":"number","enum":[60]},{"type":"number","enum":[90]},{"type":"number","enum":[180]},{"type":"number","enum":[365]}]}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive after truncation to seconds."}},{"name":"resolution","required":false,"in":"query","schema":{"description":"UTC grid samples, not aggregates. Default native, except IV/RV defaults to 1h and gamma bands to 5m. IV/RV permits hourly/day grids only. Daily gamma bands allow at most 31 inclusive UTC calendar dates, regardless of page size.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["options.volatility_observations"],"description":"Stable retained-dataset identifier; not the modern fitted-surface dataset."},"series":{"type":"string","enum":["atm_iv","atm_iv_model","risk_reversal","risk_reversal_model","butterfly","butterfly_model","skew","skew_model","dvol","iv_rv","actual_skew_model","actual_risk_reversal_model","actual_butterfly_model","iv_bid_ask","gex_index","gamma_bands","vix"],"description":"Determines field semantics: market versus model IV, normalized skew versus volatility-point RR/butterfly, volatility indices, or price bands."},"days":{"description":"Selected target tenor in days for actual-volatility series, not a lookback or pagination window.","type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["options.volatility_observations"]},"exchange_supported":{"type":"boolean","enum":[true]},"instrument_eligible":{"type":"string","nullable":true,"enum":[null]},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["options.volatility_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name","currency"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false},"pagination_basis":{"type":"string","enum":["joined_observation_timestamps"]}},"required":["total","items","page","total_pages","limit","availability"],"additionalProperties":false},"items":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}},{"type":"array","items":{"type":"object","properties":{"1":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"1-day constant-maturity IV quotes, not an expiry date or lookback window."},"7":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"7-day constant-maturity IV quotes, not an expiry date or lookback window."},"14":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"14-day constant-maturity IV quotes, not an expiry date or lookback window."},"30":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"30-day constant-maturity IV quotes, not an expiry date or lookback window."},"60":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"60-day constant-maturity IV quotes, not an expiry date or lookback window."},"90":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"90-day constant-maturity IV quotes, not an expiry date or lookback window."},"180":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"180-day constant-maturity IV quotes, not an expiry date or lookback window."},"365":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"365-day constant-maturity IV quotes, not an expiry date or lookback window."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source minute observation time in Unix milliseconds, UTC; not publication receipt time."}},"required":["1","7","14","30","60","90","180","365","date"],"additionalProperties":false},"description":"Minute timestamp in Unix milliseconds and all eight tenor keys, each containing independently calculated b, a, m IV rounded to two decimals. Mark is not the midpoint and can lie outside bid/ask."}]}},"required":["dataset_id","series","meta","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained market/model volatility observations","tags":["Options Volatility History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"type":"string","enum":["atm_iv","atm_iv_model","risk_reversal","risk_reversal_model","butterfly","butterfly_model","skew","skew_model","dvol","iv_rv","actual_skew_model","actual_risk_reversal_model","actual_butterfly_model","iv_bid_ask","gex_index","gamma_bands","vix"]},"exchange":{"type":"string","enum":["deribit","binance","bybit","okx","coincall"]},"currency":{"type":"string","maxLength":32,"pattern":"^[A-Z0-9]+(?:_[A-Z0-9]+)?$","description":"Uppercase legacy currency. Point series and gamma bands select the base currency. Bid/ask IV, GEX and VIX preserve settlement prefixes: BTC and BTC_USDC are distinct."},"type":{"description":"Required for typed series. Bid/ask IV: P_ATM, P_25, P_10, P_5, C_ATM, C_25, C_10, C_5. Gamma bands: 1D, 7D, 30D. Other series use model or delta-bucket selectors; omit for market ATM, DVOL, IV/RV, GEX and VIX.","type":"string","maxLength":8},"days":{"description":"Required only for actual-volatility series: one selected tenor in days.","anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[30]},{"type":"number","enum":[60]},{"type":"number","enum":[90]},{"type":"number","enum":[180]},{"type":"number","enum":[365]}]},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive after truncation to seconds."},"resolution":{"description":"UTC grid samples, not aggregates. Default native, except IV/RV defaults to 1h and gamma bands to 5m. IV/RV permits hourly/day grids only. Daily gamma bands allow at most 31 inclusive UTC calendar dates, regardless of page size.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"type":"integer","minimum":1,"maximum":1440}},"required":["series","exchange","currency","start","end"]}}}}}},"/api/v1/historical/options/gex_index/{market}/{currency}":{"get":{"description":"Retained chain calculations, not modern exposure surfaces. Returns gex, vex, gex_plus and index_price at exact source timestamps, oldest first. Full Deribit settlement prefix is retained. UTC grids sample, not average, observations.","operationId":"LegacyVolatilityHistoryController_gex_index","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible GEX and VEX observations","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/gamma_bands/{market}/{currency}/{type}":{"get":{"description":"Newest first, unlike the other volatility histories. Default 5m UTC samples; explicit native is unsampled. Uses the preceding six-hour spot anchor. Missing inputs and invalid band geometry are unpublished, not zero. Daily requests span at most 31 inclusive UTC calendar dates, independent of page size; larger ranges return 400 GAMMA_DAILY_RANGE_TOO_LARGE before reading the source.","operationId":"LegacyVolatilityHistoryController_gamma_bands","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["1D","7D","30D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}},"400":{"description":"Invalid selectors or GAMMA_DAILY_RANGE_TOO_LARGE (31 inclusive UTC dates for daily requests)."}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible gamma band history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/vix/{market}/{currency}":{"get":{"description":"Returns 15, 30, 90 and 180-day values plus index, oldest first. Not DVOL: source-chain expiry selection, arithmetic and unavailable nulls preserve the legacy contract. No 60-day value is published.","operationId":"LegacyVolatilityHistoryController_vix","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible chain-derived VIX estimates","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/iv_bid_ask/{market}/{currency}/{type}":{"get":{"description":"Pinned to HIST-2026-09-22-V1-IV-BID-ASK-TENORS. Eight target-day keys each hold {b,a,m}; source minutes are sampled on the requested UTC grid, not averaged. Bid/ask/mark use independent total-variance interpolation, whole-day maturity buckets and nearest signed delta within 0.1. Exact-tenor and single-neighbour fallback preserved. Legacy currency prefix case and pagination defaults retained. No source rewrite or original-publication certification.","operationId":"LegacyVolatilityHistoryController_iv_bid_ask","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["P_ATM","P_25","P_10","P_5","C_ATM","C_25","C_10","C_5"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"1":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"1-day constant-maturity IV quotes, not an expiry date or lookback window."},"7":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"7-day constant-maturity IV quotes, not an expiry date or lookback window."},"14":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"14-day constant-maturity IV quotes, not an expiry date or lookback window."},"30":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"30-day constant-maturity IV quotes, not an expiry date or lookback window."},"60":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"60-day constant-maturity IV quotes, not an expiry date or lookback window."},"90":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"90-day constant-maturity IV quotes, not an expiry date or lookback window."},"180":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"180-day constant-maturity IV quotes, not an expiry date or lookback window."},"365":{"type":"object","properties":{"b":{"type":"number","minimum":0,"maximum":10000,"description":"Bid implied volatility, percentage points (50 = 50%), rounded to two decimals. Not bid premium."},"a":{"type":"number","minimum":0,"maximum":10000,"description":"Ask implied volatility, percentage points, rounded to two decimals. Not ask premium."},"m":{"type":"number","minimum":0,"maximum":10000,"description":"Independently calculated mark implied volatility, percentage points. Not the bid/ask midpoint and may lie outside that interval."}},"required":["b","a","m"],"additionalProperties":false,"description":"365-day constant-maturity IV quotes, not an expiry date or lookback window."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source minute observation time in Unix milliseconds, UTC; not publication receipt time."}},"required":["1","7","14","30","60","90","180","365","date"],"additionalProperties":false},"description":"Minute timestamp in Unix milliseconds and all eight tenor keys, each containing independently calculated b, a, m IV rounded to two decimals. Mark is not the midpoint and can lie outside bid/ask."}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible corrected bid/ask/mark IV by tenor","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/actual_vol/skew_model/{market}/{currency}/{type}/{days}":{"get":{"description":"Filter the joined operand population before paging. d = round((p-c)/atm*100,2) from four-decimal served operands; no original-publication certification.","operationId":"LegacyVolatilityHistoryController_actual_skew_model","parameters":[{"name":"days","required":true,"in":"path","schema":{"enum":[7,30,60,90,180,365],"type":"number"}},{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible actual skew operands","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/actual_vol/risk_reversal_model/{market}/{currency}/{type}/{days}":{"get":{"description":"Legacy compatibility: four inputs are paged separately then joined by timestamp. meta.total/total_pages describe the model input, not the joined result. Short or empty intermediate pages can occur. Native/MCP use joined-row pagination instead.","operationId":"LegacyVolatilityHistoryController_actual_risk_reversal_model","parameters":[{"name":"days","required":true,"in":"path","schema":{"enum":[7,30,60,90,180,365],"type":"number"}},{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible actual risk-reversal operands","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/actual_vol/butterfly_model/{market}/{currency}/{type}/{days}":{"get":{"description":"Legacy compatibility: four inputs are paged separately then joined by timestamp. meta.total/total_pages describe the model input, not the joined result. Short or empty intermediate pages can occur. Native/MCP use joined-row pagination instead.","operationId":"LegacyVolatilityHistoryController_actual_butterfly_model","parameters":[{"name":"days","required":true,"in":"path","schema":{"enum":[7,30,60,90,180,365],"type":"number"}},{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible actual butterfly operands","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/atm_iv/{market}/{currency}":{"get":{"operationId":"LegacyVolatilityHistoryController_atm_iv","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible atm_iv history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/atm_iv_model/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_atm_iv_model","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["ATM","YIELD","SLOPE","10P","10C","15P","15C","25P","25C","35P","35C"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible atm_iv_model history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/risk_reversal/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_risk_reversal","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","25D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible risk_reversal history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/risk_reversal_model/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_risk_reversal_model","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible risk_reversal_model history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/butterfly/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_butterfly","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","25D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible butterfly history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/butterfly_model/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_butterfly_model","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible butterfly_model history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/skew/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_skew","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","25D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible skew history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/type/skew_model/{market}/{currency}/{type}":{"get":{"operationId":"LegacyVolatilityHistoryController_skew_model","parameters":[{"name":"type","required":true,"in":"path","schema":{"enum":["10D","15D","25D","35D"],"type":"string"}},{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible skew_model history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/dvol/{market}/{currency}":{"get":{"operationId":"LegacyVolatilityHistoryController_dvol","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible dvol history","tags":["Legacy Options Volatility History"]}},"/api/v1/historical/options/iv_rv/{market}/{currency}":{"get":{"description":"Default grid 1h, only hourly/day grids accepted. Realized volatility is the legacy spot series, not venue-specific option RV.","operationId":"LegacyVolatilityHistoryController_iv_rv","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","BINANCE","BYBIT","OKX","COINCALL"],"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC. Most series are oldest first; gamma_bands is newest first. Resolution selects a time grid, not an average."},"atm":{"description":"ATM implied volatility operand, percentage points, published to four decimals. Not a price.","nullable":true,"type":"number"},"c":{"description":"Call implied volatility operand at the selected delta, percentage points, published to four decimals. Not call quantity.","nullable":true,"type":"number"},"p":{"description":"Put implied volatility operand at the selected delta, percentage points, published to four decimals. Not put quantity.","nullable":true,"type":"number"},"d":{"description":"Selected derived metric. actual_skew_model: round((p - c) / atm * 100, 2) from served operands in binary floating point, a percentage ratio. actual_risk_reversal_model / actual_butterfly_model: retained model result in volatility points, NOT that normalized ratio.","nullable":true,"type":"number"},"dvol":{"description":"Retained Deribit volatility-index level, in volatility percentage points. Not the ATM-IV series or the legacy VIX estimator.","nullable":true,"type":"number"},"index":{"description":"Reference asset/index price in quote-price units, not a volatility value.","nullable":true,"type":"number"},"index_price":{"description":"Retained average spot-index reference price in quote-price units, not a GEX value.","nullable":true,"type":"number"},"gex":{"description":"Legacy signed sum of gamma * underlying_price * open_interest; puts negative, calls positive. No extra 1%-move or squared-price scaling; not interchangeable with modern GEX.","nullable":true,"type":"number"},"vex":{"description":"Legacy signed vanna-style exposure term, including its 0.01 and /1000 scales. Not ordinary option vega or USD open interest; see the field guide formula.","nullable":true,"type":"number"},"gex_plus":{"description":"Arithmetic sum gex + vex under this legacy convention, not an independently calibrated exposure.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":{"nullable":true,"description":"Series-dependent field: numeric keys are target tenor days, not prices or row numbers. IV/RV keys encode tenor/lookback days. See the series-specific field guide; YIELD and SLOPE are not IV levels.","type":"number"},"description":"date is Unix milliseconds; surface keys are tenor days; IV/RV has iv_7..iv_365 and rv_7..rv_365; DVOL has dvol and index. Actual volatility has atm,c,p,d; absent tenor fields in actual RR/butterfly are omitted, not zero/null. GEX has gex,vex,gex_plus,index_price. Gamma bands have vwap,price,u1_4,u1_2,u1,u2,l1_4,l1_2,l1,l2, newest first. VIX has 15,30,90,180,index (no 60-day value), oldest first. Null withdrawals are explicit."}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible iv_rv history","tags":["Legacy Options Volatility History"]}},"/api/v1/options/instrument-history":{"get":{"description":"Retained v1 instrument observations served natively on v2, including price, IV, Greeks, references, OI and volume. projection selects fields; resolution samples the source grid rather than creating OHLC. Legacy timestamps and values remain unchanged. This is the migration equivalent of v1 option history, not a renamed modern ticker table.\n\nRetained legacy observation label. No universal one-minute shift to modern bucket timestamps is applied.\n\nExplicit UTC start/end, page and limit. Compatibility aliases retain legacy date-only and pagination conventions; use the route mapping for equivalent requests.\n\nPremium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.\n\nImplied volatility in percentage points: 65 means 65%, not 0.65.\n\nRetained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.\n\nVenue-reported retained volume state; not an interval sum. See the retained-history field guide.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: options.instrument_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.","operationId":"InstrumentHistoryController_read","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["deribit","okx","binance","bybit","paradex"]}},{"name":"instrument_name","required":true,"in":"query","schema":{"type":"string","minLength":1,"maxLength":256}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"projection","required":false,"in":"query","schema":{"default":"full","type":"string","enum":["full","iv","price","underlying_price","oi_volume"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["options.instrument_observations"]},"projection":{"type":"string","enum":["full","iv","price","underlying_price","oi_volume"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["options.instrument_observations"]},"exchange_supported":{"type":"boolean","enum":[true]},"instrument_eligible":{"nullable":true,"type":"boolean"},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["options.instrument_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","items","page","total_pages","limit","availability"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["dataset_id","projection","meta","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Instrument observations from retained history","tags":["Options Instrument History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","enum":["deribit","okx","binance","bybit","paradex"]},"instrument_name":{"type":"string","minLength":1,"maxLength":256},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."},"resolution":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]},"projection":{"default":"full","type":"string","enum":["full","iv","price","underlying_price","oi_volume"]},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"type":"integer","minimum":1,"maximum":1440}},"required":["exchange","instrument_name","start","end"]}}}}}},"/api/v1/historical/options/iv/{market}/{instrument}":{"get":{"operationId":"LegacyInstrumentHistoryController_iv","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","OKX","BINANCE","BYBIT","PARADEX"],"type":"string"}},{"name":"instrument","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"tags":["Legacy Options Instrument History"]}},"/api/v1/historical/options/price/{market}/{instrument}":{"get":{"operationId":"LegacyInstrumentHistoryController_price","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","OKX","BINANCE","BYBIT","PARADEX"],"type":"string"}},{"name":"instrument","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"tags":["Legacy Options Instrument History"]}},"/api/v1/historical/options/underlying_price/{market}/{instrument}":{"get":{"operationId":"LegacyInstrumentHistoryController_underlyingPrice","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","OKX","BINANCE","BYBIT","PARADEX"],"type":"string"}},{"name":"instrument","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"tags":["Legacy Options Instrument History"]}},"/api/v1/historical/options/oi_volume/{market}/{instrument}":{"get":{"operationId":"LegacyInstrumentHistoryController_oiVolume","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","OKX","BINANCE","BYBIT","PARADEX"],"type":"string"}},{"name":"instrument","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"tags":["Legacy Options Instrument History"]}},"/api/v1/historical/options/{market}/{instrument}":{"get":{"operationId":"LegacyInstrumentHistoryController_full","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["DERIBIT","OKX","BINANCE","BYBIT","PARADEX"],"type":"string"}},{"name":"instrument","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"index_price":{"description":"Retained spot-index reference price, in the underlying index quote currency. Distinct from the expiry-specific underlying_price; no substitution is made by this reader.","nullable":true,"type":"number"},"underlying_price":{"description":"Retained option-pricing reference (potentially an expiry-specific forward), in its reference quote currency. Not necessarily the spot index.","nullable":true,"type":"number"},"mark_price":{"description":"Option mark premium per source quantity unit, in the instrument premium currency. Inverse BTC/ETH and linear stablecoin options do not share one premium currency; no USD conversion is applied.","nullable":true,"type":"number"},"bid_price":{"description":"Best bid premium per source quantity unit, in the same premium currency as mark_price; not bid implied volatility.","nullable":true,"type":"number"},"ask_price":{"description":"Best ask premium per source quantity unit, in the same premium currency as mark_price; not ask implied volatility.","nullable":true,"type":"number"},"mark_iv":{"description":"Mark implied volatility in percentage points (50 means 50%, not 0.50). Retained source observation; no new model fit or rescaling is applied.","nullable":true,"type":"number"},"bid_iv":{"description":"Implied volatility associated with the bid quote, in percentage points. Not a premium or bid size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"ask_iv":{"description":"Implied volatility associated with the ask quote, in percentage points. Not a premium or ask size; unavailable retained values are not executable quotes.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding option quantity in retained source units. Not USD notional or premium value; this reader does not apply another contract multiplier.","nullable":true,"type":"number"},"volume":{"description":"Retained venue-reported option volume in source quantity units and source reporting window. Not the volume traded inside the requested resolution.","nullable":true,"type":"number"},"delta":{"description":"Retained option delta under the venue source convention. No cross-venue delta or premium-adjustment normalization is applied.","nullable":true,"type":"number"},"gamma":{"description":"Retained option gamma under the venue source convention; not aggregate gamma exposure (GEX).","nullable":true,"type":"number"},"theta":{"description":"Retained option theta under the venue source time and premium-currency convention; no daily/annual conversion is applied.","nullable":true,"type":"number"},"vega":{"description":"Retained option vega under the venue source volatility and premium-currency convention; not aggregate vega exposure.","nullable":true,"type":"number"},"daystogo":{"description":"Remaining time to maturity, in days, as retained. This is a duration, not an expiry timestamp or fixed-tenor selector.","nullable":true,"type":"number"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"tags":["Legacy Options Instrument History"]}},"/api/v1/perpetuals/instrument-history":{"get":{"description":"Retained v1 perpetual instrument observations served natively on v2: price, index, basis, yield, funding, next_funding, long_short_ratio, volume, volume_coin, open_interest, open_interest_coin, oi_volume24h, bid/ask and displayed sizes. Stored rows without deduplication, interval aggregation, gap filling or unit conversion. Not modern ticker states or OHLC bars; this is the migration equivalent of v1 perpetual history.\n\nRetained legacy observation label at whole-second precision, in ascending order. Not a modern interval-start bucket or ingestion/publication time; no one-minute shift to modern timestamps is applied.\n\nExplicit timezone-qualified start/end, inclusive after truncation to seconds. instrument_name is the exact case-sensitive legacy symbol; expired symbols are requestable without an active-catalog check. Sixteen legacy perpetual venues are accepted; acceptance is not evidence of retained rows. limit is 1-1440 (default 10) rows; total counts matching rows. Compatibility aliases keep v1 date-only whole-day bounds, the omitted-end default and legacy pagination accounting; use the route mapping for equivalent requests.\n\nRetained contract and reference-index prices in the source quotation convention; not OHLC.\n\nUSD-equivalent outstanding exposure and venue-reported rolling trading volume; volume is not a sum over the requested resolution.\n\nCorresponding base-asset quantities, not USD.\n\nround(open_interest / volume, 4): a dimensionless ratio, not a change in open interest.\n\nDisplayed level-1 quantity in source units; not book depth or a fill guarantee.\n\nRetained basis under the source convention. Whether it is a price difference, fraction or percentage is not specified here; do not combine it with modern basis fields without checking.\n\nAnnualized funding yield. Annualized percentage points (10.95 means 10.95% per year), not a compounded APY; do not re-annualize.\n\nPercentage points per the retained field guide (0.01 means 0.01%), normally 8-hour-equivalent as stored. Modern perpetual funding is a decimal (0.0001 means 0.01%), so the same rate is 100 times larger here. Not a payment amount or settlement timestamp.\n\nVenue-defined long/short ratio; its population is source-specific.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: perpetuals.instrument_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nAvailable to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"DerivativeInstrumentHistoryController_perpetuals","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["binance","bitmex","deribit","okx","dydx","huobi","kraken","bybit","bitget","aevo","blitz","coinbase","bitfinex","hyperliquid","paradex","vertex"]}},{"name":"instrument_name","required":true,"in":"query","schema":{"type":"string","minLength":1,"maxLength":256,"description":"Exact case-sensitive legacy symbol, including expired contracts."}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"projection","required":false,"in":"query","schema":{"default":"full","type":"string","enum":["full"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"projection":{"type":"string","enum":["full"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"exchange_supported":{"type":"boolean","enum":[true]},"instrument_eligible":{"nullable":true,"type":"boolean"},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","items","page","total_pages","limit","availability"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"price":{"description":"Retained normalized contract price, in the source price reference currency; not an OHLC close.","nullable":true,"type":"number"},"index":{"description":"Retained contract index/reference price. This field is a price, not a row number or instrument identifier.","nullable":true,"type":"number"},"basis":{"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader.","nullable":true,"type":"number"},"funding":{"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","nullable":true,"type":"number"},"yield":{"description":"For dated futures: annualized basis in percentage points. For perpetuals: Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","nullable":true,"type":"number"},"volume":{"description":"Venue-reported rolling trading volume in USD-equivalent units. Not the volume summed over the requested resolution.","nullable":true,"type":"number"},"volume_coin":{"description":"Corresponding retained trading volume in base-asset quantity units, not USD.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding derivative exposure in USD-equivalent units; not a contract count.","nullable":true,"type":"number"},"open_interest_coin":{"description":"Outstanding derivative exposure in base-asset quantity units; not USD.","nullable":true,"type":"number"},"oi_volume24h":{"description":"Dimensionless open_interest / volume ratio rounded to four decimals. Both operands use USD-equivalent units; not a 24-hour change in open interest.","nullable":true,"type":"number"},"long_short_ratio":{"description":"Retained venue long/short ratio. Population and measurement convention are source-specific; not a liquidation-side total.","nullable":true,"type":"number"},"next_funding":{"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","nullable":true,"type":"number"},"bid":{"description":"Retained best bid price in the contract quotation convention; not bid size.","nullable":true,"type":"number"},"bid_amount":{"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"ask":{"description":"Retained best ask price in the contract quotation convention; not ask size.","nullable":true,"type":"number"},"ask_amount":{"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"expiry":{"description":"Contract expiry date in legacy DD/MM/YY format. Date only: it does not encode the exchange-native expiry hour.","nullable":true,"type":"string"}},"required":["date"],"additionalProperties":false}}},"required":["dataset_id","projection","meta","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained perpetual instrument observations","tags":["Derivative Instrument History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","enum":["binance","bitmex","deribit","okx","dydx","huobi","kraken","bybit","bitget","aevo","blitz","coinbase","bitfinex","hyperliquid","paradex","vertex"]},"instrument_name":{"type":"string","minLength":1,"maxLength":256,"description":"Exact case-sensitive legacy symbol, including expired contracts."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."},"resolution":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]},"projection":{"default":"full","type":"string","enum":["full"]},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"type":"integer","minimum":1,"maximum":1440}},"required":["exchange","instrument_name","start","end"]}}}}}},"/api/v1/futures/instrument-history":{"get":{"description":"Retained v1 dated-future instrument observations served natively on v2: expiry, price, index, basis, yield, volume, volume_coin, open_interest, open_interest_coin, oi_volume24h, bid/ask and displayed sizes. Stored rows without deduplication, interval aggregation, gap filling or unit conversion. Not modern ticker states or OHLC bars; this is the migration equivalent of v1 dated-future history.\n\nRetained legacy observation label at whole-second precision, in ascending order. Not a modern interval-start bucket or ingestion/publication time; no one-minute shift to modern timestamps is applied.\n\nExplicit timezone-qualified start/end, inclusive after truncation to seconds. instrument_name is the exact case-sensitive legacy symbol; expired symbols are requestable without an active-catalog check. Eight legacy futures venues (kraken, deribit, okx, bybit, binance, bitget, bitmex, huobi) are accepted; acceptance is not evidence of retained rows. limit is 1-1440 (default 10) rows; total counts matching rows. Compatibility aliases keep v1 date-only whole-day bounds, the omitted-end default and legacy pagination accounting; use the route mapping for equivalent requests.\n\nRetained contract and reference-index prices in the source quotation convention; not OHLC.\n\nUSD-equivalent outstanding exposure and venue-reported rolling trading volume; volume is not a sum over the requested resolution.\n\nCorresponding base-asset quantities, not USD.\n\nround(open_interest / volume, 4): a dimensionless ratio, not a change in open interest.\n\nDisplayed level-1 quantity in source units; not book depth or a fill guarantee.\n\nRetained basis under the source convention. Whether it is a price difference, fraction or percentage is not specified here; do not combine it with modern basis fields without checking.\n\nAnnualized basis (carry), not perpetual funding. Annualized percentage points (10.95 means 10.95% per year), not a compounded APY; do not re-annualize.\n\nLegacy DD/MM/YY date only; it does not encode the exchange-native expiry hour.\n\nCurrent retained/corrected history, not certified as-originally-published data. A bucket timestamp is not its ingestion/publication time. Availability by the next minute boundary is not certified; no measured or guaranteed publication-lag bound is supplied here.\n\nDefinition: futures.instrument_history. Coverage and comparison guide: /migration/v1-to-v2/data-products.md.\n\nAvailable to eligible subscribers when enabled; API key or OAuth uses the same account history rights. x402 is not enabled. Field guide: https://apiv2.laevitas.ch/migration/v1-to-v2/history-field-guide.md.","operationId":"DerivativeInstrumentHistoryController_futures","parameters":[{"name":"exchange","required":true,"in":"query","schema":{"type":"string","enum":["kraken","deribit","okx","bybit","binance","bitget","bitmex","huobi"]}},{"name":"instrument_name","required":true,"in":"query","schema":{"type":"string","minLength":1,"maxLength":256,"description":"Exact case-sensitive legacy symbol, including expired contracts."}},{"name":"start","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."}},{"name":"end","required":true,"in":"query","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."}},{"name":"resolution","required":false,"in":"query","schema":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]}},{"name":"projection","required":false,"in":"query","schema":{"default":"full","type":"string","enum":["full"]}},{"name":"page","required":false,"in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"limit","required":false,"in":"query","schema":{"default":10,"type":"integer","minimum":1,"maximum":1440}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"dataset_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"projection":{"type":"string","enum":["full"]},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."},"limit":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"availability":{"type":"object","properties":{"empty_reason":{"nullable":true,"type":"string","enum":["classification_unavailable"]},"coverage":{"type":"object","properties":{"source_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"exchange_supported":{"type":"boolean","enum":[true]},"instrument_eligible":{"nullable":true,"type":"boolean"},"earliest_observed_at":{"nullable":true,"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))$"},"latest_observed_at":{"nullable":true,"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))$"}},"required":["source_id","exchange_supported","instrument_eligible","earliest_observed_at","latest_observed_at"],"additionalProperties":false},"completeness":{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"certification":{"type":"string","nullable":true,"enum":[null]},"complete_from":{"type":"string","nullable":true,"enum":[null]},"complete_through":{"type":"string","nullable":true,"enum":[null]},"complete_from_inclusive":{"type":"boolean","enum":[true]},"complete_through_inclusive":{"type":"boolean","enum":[false]},"monotonic":{"type":"boolean","enum":[false]},"monotonic_boundary":{"type":"string","enum":["complete_through"]},"revisions_possible":{"type":"boolean","enum":[true]},"certified_at":{"type":"string","nullable":true,"enum":[null]},"updated_at":{"type":"string","nullable":true,"enum":[null]},"unavailable_reason":{"type":"string","enum":["not_supported"]},"scope":{"type":"object","properties":{"endpoint_id":{"type":"string","enum":["perpetuals.instrument_observations","futures.instrument_observations"]},"source_ids":{"type":"array","items":{"type":"string"}},"exchange":{"nullable":true,"type":"string"},"instrument_name":{"nullable":true,"type":"string"}},"required":["endpoint_id","source_ids","exchange","instrument_name"],"additionalProperties":false}},"required":["status","certification","complete_from","complete_through","complete_from_inclusive","complete_through_inclusive","monotonic","monotonic_boundary","revisions_possible","certified_at","updated_at","unavailable_reason","scope"],"additionalProperties":false}},"required":["empty_reason","coverage","completeness"],"additionalProperties":false}},"required":["total","items","page","total_pages","limit","availability"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"price":{"description":"Retained normalized contract price, in the source price reference currency; not an OHLC close.","nullable":true,"type":"number"},"index":{"description":"Retained contract index/reference price. This field is a price, not a row number or instrument identifier.","nullable":true,"type":"number"},"basis":{"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader.","nullable":true,"type":"number"},"funding":{"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","nullable":true,"type":"number"},"yield":{"description":"For dated futures: annualized basis in percentage points. For perpetuals: Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","nullable":true,"type":"number"},"volume":{"description":"Venue-reported rolling trading volume in USD-equivalent units. Not the volume summed over the requested resolution.","nullable":true,"type":"number"},"volume_coin":{"description":"Corresponding retained trading volume in base-asset quantity units, not USD.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding derivative exposure in USD-equivalent units; not a contract count.","nullable":true,"type":"number"},"open_interest_coin":{"description":"Outstanding derivative exposure in base-asset quantity units; not USD.","nullable":true,"type":"number"},"oi_volume24h":{"description":"Dimensionless open_interest / volume ratio rounded to four decimals. Both operands use USD-equivalent units; not a 24-hour change in open interest.","nullable":true,"type":"number"},"long_short_ratio":{"description":"Retained venue long/short ratio. Population and measurement convention are source-specific; not a liquidation-side total.","nullable":true,"type":"number"},"next_funding":{"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","nullable":true,"type":"number"},"bid":{"description":"Retained best bid price in the contract quotation convention; not bid size.","nullable":true,"type":"number"},"bid_amount":{"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"ask":{"description":"Retained best ask price in the contract quotation convention; not ask size.","nullable":true,"type":"number"},"ask_amount":{"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"expiry":{"description":"Contract expiry date in legacy DD/MM/YY format. Date only: it does not encode the exchange-native expiry hour.","nullable":true,"type":"string"}},"required":["date"],"additionalProperties":false}}},"required":["dataset_id","projection","meta","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required","headers":{"payment-required":{"description":"Base64-encoded JSON with payment requirements (accepted networks, amounts, payTo address)","schema":{"type":"string"}}}}},"security":[{"X-API-Key":[]}],"summary":"Retained dated-future instrument observations","tags":["Derivative Instrument History"],"x-agentcash-auth":{"mode":"paid"},"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001"},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","enum":["kraken","deribit","okx","bybit","binance","bitget","bitmex","huobi"]},"instrument_name":{"type":"string","minLength":1,"maxLength":256,"description":"Exact case-sensitive legacy symbol, including expired contracts."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"ISO-8601 instant with Z or an explicit UTC offset."},"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"Inclusive, after truncation to seconds; not a whole-day shortcut."},"resolution":{"default":"native","description":"UTC observation grid, not candle aggregation.","type":"string","enum":["native","1m","5m","15m","30m","1h","2h","4h","6h","12h","1d"]},"projection":{"default":"full","type":"string","enum":["full"]},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"default":10,"type":"integer","minimum":1,"maximum":1440}},"required":["exchange","instrument_name","start","end"]}}}}}},"/api/v1/historical/derivs/perpetuals/{market}/{symbol}":{"get":{"operationId":"LegacyDerivativeInstrumentHistoryController_perpetuals","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["BINANCE","BITMEX","DERIBIT","OKX","DYDX","HUOBI","KRAKEN","BYBIT","BITGET","AEVO","BLITZ","COINBASE","BITFINEX","HYPERLIQUID","PARADEX","VERTEX"],"type":"string"}},{"name":"symbol","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"price":{"description":"Retained normalized contract price, in the source price reference currency; not an OHLC close.","nullable":true,"type":"number"},"index":{"description":"Retained contract index/reference price. This field is a price, not a row number or instrument identifier.","nullable":true,"type":"number"},"basis":{"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader.","nullable":true,"type":"number"},"funding":{"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","nullable":true,"type":"number"},"yield":{"description":"For dated futures: annualized basis in percentage points. For perpetuals: Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","nullable":true,"type":"number"},"volume":{"description":"Venue-reported rolling trading volume in USD-equivalent units. Not the volume summed over the requested resolution.","nullable":true,"type":"number"},"volume_coin":{"description":"Corresponding retained trading volume in base-asset quantity units, not USD.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding derivative exposure in USD-equivalent units; not a contract count.","nullable":true,"type":"number"},"open_interest_coin":{"description":"Outstanding derivative exposure in base-asset quantity units; not USD.","nullable":true,"type":"number"},"oi_volume24h":{"description":"Dimensionless open_interest / volume ratio rounded to four decimals. Both operands use USD-equivalent units; not a 24-hour change in open interest.","nullable":true,"type":"number"},"long_short_ratio":{"description":"Retained venue long/short ratio. Population and measurement convention are source-specific; not a liquidation-side total.","nullable":true,"type":"number"},"next_funding":{"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","nullable":true,"type":"number"},"bid":{"description":"Retained best bid price in the contract quotation convention; not bid size.","nullable":true,"type":"number"},"bid_amount":{"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"ask":{"description":"Retained best ask price in the contract quotation convention; not ask size.","nullable":true,"type":"number"},"ask_amount":{"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"expiry":{"description":"Contract expiry date in legacy DD/MM/YY format. Date only: it does not encode the exchange-native expiry hour.","nullable":true,"type":"string"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible retained perpetual instrument history","tags":["Legacy Derivative Instrument History"]}},"/api/v1/historical/derivs/futures/{market}/{symbol}":{"get":{"operationId":"LegacyDerivativeInstrumentHistoryController_futures","parameters":[{"name":"market","required":true,"in":"path","schema":{"enum":["KRAKEN","DERIBIT","OKX","BYBIT","BINANCE","BITGET","BITMEX","HUOBI"],"type":"string"}},{"name":"symbol","required":true,"in":"path","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Legacy ISO/date-only or 10/13-digit epoch.","schema":{"type":"string"}},{"name":"end","required":false,"in":"query","description":"Date-only includes the whole UTC day. Omitted end is end of tomorrow in UTC.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Known UTC sampling grid; omitted or -- means native.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"type":"integer","minimum":1},"description":"Omitted queries page 1 but omits meta.page, as in v1."},{"name":"limit","required":false,"in":"query","schema":{"type":"integer","minimum":1,"maximum":1440},"description":"Omitted queries 10 rows but uses divisor 1 for meta.total_pages, as in v1."}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total matching source rows for this window, not this page; instrument rows may share a timestamp."},"items":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows actually returned on this page."},"page":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"description":"One-based page number."},"total_pages":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Declared page count. Compatibility aliases preserve legacy omitted-limit accounting; send page and limit explicitly."}},"required":["total","items","total_pages"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Source observation time in Unix milliseconds, UTC; not the request time or a finality certificate. Resolution normally samples observations, not interval totals."},"price":{"description":"Retained normalized contract price, in the source price reference currency; not an OHLC close.","nullable":true,"type":"number"},"index":{"description":"Retained contract index/reference price. This field is a price, not a row number or instrument identifier.","nullable":true,"type":"number"},"basis":{"description":"Retained futures/perpetual basis under the source convention. Not funding paid; no percentage/fraction conversion is added by this reader.","nullable":true,"type":"number"},"funding":{"description":"Retained funding rate in percentage points (0.01 means 0.01%, not 1%). Normally an 8-hour-equivalent source rate; historical venue normalization is preserved, not recomputed here. Not a funding cashflow or an interval sum.","nullable":true,"type":"number"},"yield":{"description":"For dated futures: annualized basis in percentage points. For perpetuals: Retained annualized funding yield in percentage points (10.95 means 10.95% per year), not a compounded APY. Source annualization/rounding is preserved; not the rate for one funding interval.","nullable":true,"type":"number"},"volume":{"description":"Venue-reported rolling trading volume in USD-equivalent units. Not the volume summed over the requested resolution.","nullable":true,"type":"number"},"volume_coin":{"description":"Corresponding retained trading volume in base-asset quantity units, not USD.","nullable":true,"type":"number"},"open_interest":{"description":"Outstanding derivative exposure in USD-equivalent units; not a contract count.","nullable":true,"type":"number"},"open_interest_coin":{"description":"Outstanding derivative exposure in base-asset quantity units; not USD.","nullable":true,"type":"number"},"oi_volume24h":{"description":"Dimensionless open_interest / volume ratio rounded to four decimals. Both operands use USD-equivalent units; not a 24-hour change in open interest.","nullable":true,"type":"number"},"long_short_ratio":{"description":"Retained venue long/short ratio. Population and measurement convention are source-specific; not a liquidation-side total.","nullable":true,"type":"number"},"next_funding":{"description":"Next funding-rate estimate in percentage points, using the retained source interval convention. Not the next settlement timestamp and not a guaranteed payment.","nullable":true,"type":"number"},"bid":{"description":"Retained best bid price in the contract quotation convention; not bid size.","nullable":true,"type":"number"},"bid_amount":{"description":"Retained displayed quantity at the best bid, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"ask":{"description":"Retained best ask price in the contract quotation convention; not ask size.","nullable":true,"type":"number"},"ask_amount":{"description":"Retained displayed quantity at the best ask, in source quantity units. Not depth beyond level 1 or a fill guarantee.","nullable":true,"type":"number"},"expiry":{"description":"Contract expiry date in legacy DD/MM/YY format. Date only: it does not encode the exchange-native expiry hour.","nullable":true,"type":"string"}},"required":["date"],"additionalProperties":false}}},"required":["meta","items"],"additionalProperties":false}}}}},"security":[{"X-API-Key":[]}],"summary":"V1-compatible retained dated-future instrument history","tags":["Legacy Derivative Instrument History"]}},"/api/v1/x402/subscriptions/purchase/premium/monthly":{"post":{"description":"Premium subscription · Monthly · 1 month of prepaid access. List price 50.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=MONTHLY","operationId":"purchasePremium1MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Premium · Monthly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"50.00"}},"x-laevitas-subscription":{"plan":"Premium","cycle":"MONTHLY","months":1,"listPriceUSDC":"50.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=MONTHLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/premium/quarterly":{"post":{"description":"Premium subscription · Quarterly · 3 months of prepaid access. List price 150.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=QUARTERLY","operationId":"purchasePremium3MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Premium · Quarterly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"150.00"}},"x-laevitas-subscription":{"plan":"Premium","cycle":"QUARTERLY","months":3,"listPriceUSDC":"150.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=QUARTERLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/premium/six-month":{"post":{"description":"Premium subscription · Six months · 6 months of prepaid access. List price 300.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=BIYEARLY","operationId":"purchasePremium6MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Premium · Six months","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"300.00"}},"x-laevitas-subscription":{"plan":"Premium","cycle":"BIYEARLY","months":6,"listPriceUSDC":"300.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=BIYEARLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/premium/yearly":{"post":{"description":"Premium subscription · Yearly · 12 months of prepaid access. List price 504.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=YEARLY","operationId":"purchasePremium12MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Premium · Yearly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"504.00"}},"x-laevitas-subscription":{"plan":"Premium","cycle":"YEARLY","months":12,"listPriceUSDC":"504.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=02084c27-5942-4603-ad2c-813e80fd3b16&cycle=YEARLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/enterprise/monthly":{"post":{"description":"Enterprise subscription · Monthly · 1 month of prepaid access. List price 500.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=MONTHLY","operationId":"purchaseEnterprise1MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Enterprise · Monthly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"500.00"}},"x-laevitas-subscription":{"plan":"Enterprise","cycle":"MONTHLY","months":1,"listPriceUSDC":"500.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=MONTHLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/enterprise/quarterly":{"post":{"description":"Enterprise subscription · Quarterly · 3 months of prepaid access. List price 1500.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=QUARTERLY","operationId":"purchaseEnterprise3MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Enterprise · Quarterly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"1500.00"}},"x-laevitas-subscription":{"plan":"Enterprise","cycle":"QUARTERLY","months":3,"listPriceUSDC":"1500.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=QUARTERLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/enterprise/six-month":{"post":{"description":"Enterprise subscription · Six months · 6 months of prepaid access. List price 3000.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=BIYEARLY","operationId":"purchaseEnterprise6MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Enterprise · Six months","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"3000.00"}},"x-laevitas-subscription":{"plan":"Enterprise","cycle":"BIYEARLY","months":6,"listPriceUSDC":"3000.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=BIYEARLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/subscriptions/purchase/enterprise/yearly":{"post":{"description":"Enterprise subscription · Yearly · 12 months of prepaid access. List price 5040.00 USDC. The account-bound quote applies any unused subscription credit. Sign in and get a quote before authorizing payment. No automatic renewal. Checkout: https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=YEARLY","operationId":"purchaseEnterprise12MonthSubscription","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subscription active with payment receipt"},"202":{"description":"Payment confirmation or activation pending; poll the checkout status, do not pay again"},"400":{"description":"Missing or invalid account-bound checkout, or plan/period mismatch; no payment submitted"},"402":{"description":"USDC payment required. Public probes show list pricing; a valid account-bound checkout returns the final amount.","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Base/Solana payment options and subscription discovery metadata"}}},"503":{"description":"Subscription checkout temporarily unavailable"}},"summary":"Enterprise · Yearly","tags":["x402 subscriptions"],"servers":[{"url":"https://apiv2.laevitas.ch"}],"security":[{"SubscriptionCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account quote ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"5040.00"}},"x-laevitas-subscription":{"plan":"Enterprise","cycle":"YEARLY","months":12,"listPriceUSDC":"5040.00","autoRenew":false,"quoteUrl":"https://be.laevitas.ch/subscription/x402/quotes","dashboardUrl":"https://v3.laevitas.ch/profile/subscription/wallet?plan=4eda686a-f9b6-4cf2-abc2-7af0a03bf399&cycle=YEARLY","catalogUrl":"https://apiv2.laevitas.ch/api/v1/x402/subscriptions/products"}}},"/api/v1/x402/tick-data/purchase":{"post":{"description":"One-off historical Parquet datasets. Prices depend on data type, exchange, currencies and dates. Public probes show the lowest published per-currency day rate, not the price of your dataset. Quote and confirm an account-bound order before signing. No subscription or API credit bundle required. Payment status, delivery retries and download-link renewal do not charge again.","operationId":"purchaseTickData","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Checkout-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order handed to delivery with receipt"},"201":{"description":""},"202":{"description":"Confirmation or delivery handoff pending; poll, do not repay"},"400":{"description":"Missing or invalid account checkout; no payment submitted"},"402":{"description":"USDC payment challenge; public probes require a dataset quote before payment","headers":{"payment-required":{"schema":{"type":"string"},"description":"Base64 x402 v2 challenge with Bazaar input schema"}}}},"summary":"Tick-data datasets · USDC on Base or Solana","tags":["x402 tick data"],"security":[{"TickDataCheckoutToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","description":"Account-bound data checkout ID."}},"required":["checkoutId"],"additionalProperties":false}}}},"x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.50","max":"21474836.47"}},"x-laevitas-tick-data":{"catalogUrl":"https://be.laevitas.ch/data-export/catalog","quoteUrl":"https://be.laevitas.ch/data-export/quote","checkoutUrl":"https://be.laevitas.ch/data-export/x402/checkouts","dashboard":"https://v3.laevitas.ch/profile/data-orders/buy","authentication":"Laevitas account bearer token for checkout; X-Checkout-Token for payment","payment":"POST /api/v1/x402/tick-data/purchase with checkoutId and X-Checkout-Token","status":"GET /api/v1/x402/tick-data/checkouts/{id}","delivery":"Purchased files and refreshed download links remain available through your data order. No subscription or API credits required.","pricing":{"currency":"USD","minimumCents":50,"maximumCents":2147483647,"products":[{"dataType":"futures-trades","perCurrencyDayCents":300,"perCurrencyFullHistoryCents":12000,"allCurrenciesDayCents":2000},{"dataType":"futures-liquidations","perCurrencyDayCents":50,"perCurrencyFullHistoryCents":2000,"allCurrenciesDayCents":1200},{"dataType":"futures-orderbook-l2","perCurrencyDayCents":600,"perCurrencyFullHistoryCents":30000,"allCurrenciesDayCents":2800},{"dataType":"futures-stats","perCurrencyDayCents":100,"perCurrencyFullHistoryCents":4000,"allCurrenciesDayCents":1500},{"dataType":"options-trades","perCurrencyDayCents":400,"perCurrencyFullHistoryCents":16000,"allCurrenciesDayCents":2200},{"dataType":"options-stats","perCurrencyDayCents":200,"perCurrencyFullHistoryCents":8000,"allCurrenciesDayCents":1800},{"dataType":"spot-trades","perCurrencyDayCents":300,"perCurrencyFullHistoryCents":12000,"allCurrenciesDayCents":2000},{"dataType":"spot-orderbook-l2","perCurrencyDayCents":600,"perCurrencyFullHistoryCents":30000,"allCurrenciesDayCents":2800},{"dataType":"spot-stats","perCurrencyDayCents":100,"perCurrencyFullHistoryCents":4000,"allCurrenciesDayCents":1500},{"dataType":"index-prices","perCurrencyDayCents":50,"perCurrencyFullHistoryCents":2000,"allCurrenciesDayCents":1200}]},"quoteRequired":true}}}},"info":{"title":"Laevitas API V2","description":"\nProfessional 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\nMost data endpoints also support x402 pay-per-request without an API key.\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```\n","version":"1.45.2","contact":{"name":"Laevitas Support","url":"https://laevitas.ch","email":"support@laevitas.ch"}},"tags":[{"name":"Instruments","description":"Cross-market contract reference data — tick size, lot size, leverage, expiry, margin type"},{"name":"Macro","description":"Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR…), commodity (GOLD, OIL, SILVER…), forex (EURUSD, GBPUSD…), and index. Pull data via /perpetuals/* with the discovered instrument names."},{"name":"Spot","description":"Spot market data — OHLCVT, ticker, trades, volume, orderbook, and snapshots"},{"name":"Futures","description":"Futures market data, reference prices, and analytics"},{"name":"Perpetuals","description":"Perpetual swap market data, funding rates, basis, and carry"},{"name":"Options","description":"Options market data, Greeks, and volatility analytics"},{"name":"Options Backtests","description":"Asynchronous multi-strategy options simulations: templates, submission, polling, results and cancellation"},{"name":"Vol Surface","description":"Proprietary volatility surface data and live portfolio risk — snapshots, slices, term structure, strikes, decomposition, scenarios, and ladders."},{"name":"Predictions","description":"Prediction market data — Polymarket events, categories, and ticker history"},{"name":"Hyperliquid - HyperCore","description":"Hyperliquid L1 native trading data from HyperCore — wallet-attributed fills, liquidations, positions, funding payments, TWAP events, resting orders, and deep HyperCore-derived L2 books."},{"name":"Analytics","description":"Computed cross-asset analytics and derived market metrics"},{"name":"Changelog","description":"Public, machine-readable API releases, historical-data corrections, incidents, and coverage changes"},{"name":"MCP","description":"Model Context Protocol endpoint for AI agent tool calls (Streamable HTTP transport)"},{"name":"OAuthLogin","description":"OAuth 2.1 login flow for the MCP endpoint"},{"name":"McpOAuth","description":"OAuth 2.1 metadata, registration, authorization, and token endpoints for MCP clients"}],"servers":[{"url":"https://apiv2.laevitas.ch","description":"Production"}],"components":{"securitySchemes":{"X-API-Key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication. Contact support to obtain a key."},"SubscriptionCheckoutToken":{"type":"apiKey","in":"header","name":"X-Checkout-Token","description":"Account-bound token from the authenticated subscription quote. Required before any payment can be submitted."},"TickDataCheckoutToken":{"type":"apiKey","in":"header","name":"X-Checkout-Token","description":"Token from an authenticated data order. A public discovery probe cannot submit a payment."}},"schemas":{"WsPassResponseDto":{"type":"object","properties":{"expires_at":{"type":"number","example":1730412345678,"description":"New pass expiry as unix epoch milliseconds. Source of truth."},"expires_at_iso":{"type":"string","example":"2026-04-30T18:25:45.678Z","description":"Human-readable form of expires_at. Equivalent to new Date(expires_at).toISOString()."},"duration":{"type":"string","example":"hour","enum":["hour","day"],"description":"Which SKU was purchased on this call. Stacking is additive, so the resulting pass duration may exceed this single SKU."},"wallet":{"type":"string","example":"0xabcdef0123456789abcdef0123456789abcdef01","description":"Wallet that owns the pass (lowercase, EVM checksum stripped)."},"extended_from":{"type":"number","example":1730408745678,"description":"If this purchase extended an existing active pass, the previous expires_at. Omitted when no prior pass was active."}},"required":["expires_at","expires_at_iso","duration","wallet"]},"CreditTokenChallengeRequestDto":{"type":"object","properties":{"address":{"type":"string","example":"0x1234567890abcdef1234567890abcdef12345678","description":"Wallet that holds the prepaid credits. EVM 0x address or Solana base58 address."},"chain_id":{"type":"string","example":"eip155:8453","description":"CAIP-2 network the wallet signs on. Must be one of the networks x402 accepts on this server."}},"required":["address","chain_id"]},"CreditTokenChallengeInfoDto":{"type":"object","properties":{"domain":{"type":"string","example":"apiv2.laevitas.ch"},"uri":{"type":"string","example":"https://apiv2.laevitas.ch/api/v1/x402/credit-token"},"version":{"type":"string","example":"1"},"statement":{"type":"string","example":"Refresh a Laevitas x402 credit token for this wallet. This signature does not authorize any payment."},"nonce":{"type":"string","example":"9f2c7a1e5b8d4c3a6e0f1b2d3c4a5b6e"},"issuedAt":{"type":"string","example":"2026-10-02T10:00:00.000Z"},"expirationTime":{"type":"string","example":"2026-10-02T10:05:00.000Z"},"chainId":{"type":"string","example":"eip155:8453"},"type":{"type":"string","example":"eip191","enum":["eip191","ed25519"]}},"required":["domain","uri","version","statement","nonce","issuedAt","expirationTime","chainId","type"]},"CreditTokenChallengeResponseDto":{"type":"object","properties":{"info":{"description":"CAIP-122 fields; echo them back with the signature.","allOf":[{"$ref":"#/components/schemas/CreditTokenChallengeInfoDto"}]},"message":{"type":"string","description":"Exact text the wallet must sign (EIP-191 personal_sign on EVM, raw ed25519 on Solana)."},"expires_at":{"type":"string","example":"2026-10-02T10:05:00.000Z","description":"The challenge is single-use and expires here."}},"required":["info","message","expires_at"]},"CreditTokenErrorDto":{"type":"object","properties":{"error":{"type":"string","example":"nonce_invalid"},"message":{"type":"string","example":"The challenge is unknown, already used or expired. Request a new one."}},"required":["error","message"]},"CreditTokenResponseDto":{"type":"object","properties":{"credit_token":{"type":"string","description":"JWT to send as the X-Credit-Token header. Valid for 24 hours."},"wallet":{"type":"string","example":"0x1234567890abcdef1234567890abcdef12345678","description":"Lowercased wallet address."},"credits_remaining":{"type":"number","example":4200,"description":"Credits left on the wallet. Unchanged by this call."},"expires_in_seconds":{"type":"number","example":86400}},"required":["credit_token","wallet","credits_remaining","expires_in_seconds"]},"PaginationMetaEntity":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Pass this value as the cursor parameter in the next request. Null indicates no more pages.","example":"eyJpZCI6MTIzNDU2NzgsInRzIjoxNjQwOTk1MjAwfQ==","nullable":true},"has_more":{"type":"boolean","description":"True when another page exists for the same filters and sort direction. This is derived with a one-bucket lookahead rather than inferred from the number of rows returned."},"empty_reason":{"type":"string","description":"Machine-readable explanation for an empty data array. classification_unavailable is explicit when this endpoint cannot safely distinguish the cause.","enum":["unsupported_exchange","ineligible_instrument","outside_retention","outside_entitlement","outside_coverage","no_matching_data","classification_unavailable"],"nullable":true},"coverage":{"type":"object","description":"Observed source coverage used for empty-response classification. Observed timestamps do not certify completeness."},"completeness":{"type":"object","description":"Gap-aware persistence-completeness metadata. When available, the half-open interval contains every persisted closed 1m source row; a missing minute stops certification. Unsupported endpoint families report status=unavailable."}},"required":["next_cursor"]},"PaginatedResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"array"}},"meta":{"$ref":"#/components/schemas/PaginationMetaEntity"}},"required":["data","meta"]},"OptionsOhlcvtEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"open":{"type":"number","description":"First open. Premium candle including synthetic mark-price bars when no trades are recorded. A price is not evidence of an execution. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","example":42150.5},"high":{"type":"number","description":"Maximum high. Premium candle including synthetic mark-price bars when no trades are recorded. A price is not evidence of an execution. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","example":42890.75},"low":{"type":"number","description":"Minimum low. Premium candle including synthetic mark-price bars when no trades are recorded. A price is not evidence of an execution. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","example":41920.25},"close":{"type":"number","description":"Last close. Premium candle including synthetic mark-price bars when no trades are recorded. A price is not evidence of an execution. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","example":42500},"vwap":{"type":"number","description":"Volume-weighted average price across the interval. When total traded volume is zero, the mean of the minute reference prices is retained.","example":42350.5},"volume":{"type":"number","description":"Traded volume (buy + sell) in the bucket, in the venue-native size unit; 0 on synthetic candles.","example":2700.8},"buy_volume":{"type":"number","description":"Buy-side volume (direction = buy)","example":1500.5},"sell_volume":{"type":"number","description":"Sell-side volume (direction = sell)","example":1200.3},"trades_count":{"type":"number","description":"Number of trades (buy + sell); 0 identifies a synthetic mark-filled candle.","example":270},"buy_trades_count":{"type":"number","description":"Number of buy trades","example":150},"sell_trades_count":{"type":"number","description":"Number of sell trades","example":120},"liquidation_short_volume":{"type":"number","description":"Volume from short liquidations (forced buy orders)","example":50.25,"nullable":true},"liquidation_long_volume":{"type":"number","description":"Volume from long liquidations (forced sell orders)","example":75.5,"nullable":true},"block_trade_buy_volume":{"type":"number","description":"Volume from block trade buys","example":100,"nullable":true},"block_trade_sell_volume":{"type":"number","description":"Volume from block trade sells","example":150,"nullable":true},"mark_price":{"type":"number","description":"Mark price at the final observed minute of the bucket; not OHLC.","example":42500.5,"nullable":true},"index_price":{"type":"number","description":"Exchange spot index at the final observed candle minute. Null when unavailable; never substituted with the option underlying pricing reference.","example":42505,"nullable":true},"days_to_expiry":{"type":"number","description":"Days until expiry (NULL for PERPETUAL)","example":90.5,"nullable":true}},"required":["date","open","high","low","close","vwap","volume","buy_volume","sell_volume","trades_count","buy_trades_count","sell_trades_count"]},"OptionsTickerDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"mark_price":{"type":"number","description":"Final observed mark premium. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","nullable":true},"index_price":{"type":"number","description":"Exchange spot-index price, not the expiry-specific option underlying/forward reference.","nullable":true},"bid_price":{"type":"number","description":"Final observed best bid premium. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","nullable":true},"ask_price":{"type":"number","description":"Final observed best ask premium. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","nullable":true},"bid_ask_spread":{"type":"number","description":"Final observed ask minus bid premium. Premium in the instrument price currency: BTC/ETH for inverse Deribit options, stablecoin/USD for linear products. Do not combine these without conversion.","nullable":true},"bid_size":{"type":"number","description":"Displayed bid quantity at final observation. Retained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.","nullable":true},"ask_size":{"type":"number","description":"Displayed ask quantity at final observation. Retained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.","nullable":true},"oi":{"type":"number","description":"Outstanding quantity at final observation. Retained source quantity units; the API does not apply an additional contract multiplier. Not USD notional or a universal one-contract-one-coin convention.","nullable":true},"volume_usd_24h":{"type":"number","description":"Final ticker-reported rolling 24-hour USD volume; not a sum over this bucket.","nullable":true},"bid_iv":{"type":"number","description":"Final observed bid IV. Implied volatility in percentage points: 65 means 65%, not 0.65.","nullable":true,"example":64},"ask_iv":{"type":"number","description":"Final observed ask IV. Implied volatility in percentage points: 65 means 65%, not 0.65.","nullable":true,"example":66},"mark_iv":{"type":"number","description":"Final observed mark IV. Implied volatility in percentage points: 65 means 65%, not 0.65.","nullable":true,"example":65},"iv_spread":{"type":"number","description":"Ask IV minus bid IV, in volatility percentage points.","nullable":true,"example":2}},"required":["date","mark_price","index_price","bid_price","ask_price","bid_ask_spread","bid_size","ask_size","oi","volume_usd_24h","bid_iv","ask_iv","mark_iv","iv_spread"]},"OptionsVolatilityDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"strike":{"type":"number","description":"Option strike price","example":70000,"nullable":true},"maturity":{"type":"string","description":"Maturity date string","example":"16OCT26","nullable":true},"days_to_expiry":{"type":"number","description":"Days until expiry","example":15.25,"nullable":true},"underlying_price":{"type":"number","description":"Option underlying pricing reference, potentially expiry-specific. Distinct from the spot index; missing references are unavailable, not substituted with each other.","example":68900,"nullable":true},"mark_iv_open":{"type":"number","description":"Mark IV at period open. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":62,"nullable":true},"mark_iv_high":{"type":"number","description":"Highest mark IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":65,"nullable":true},"mark_iv_low":{"type":"number","description":"Lowest mark IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":60,"nullable":true},"mark_iv_close":{"type":"number","description":"Mark IV at period close. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":63,"nullable":true},"bid_iv_open":{"type":"number","description":"Bid IV at period open. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":61,"nullable":true},"bid_iv_high":{"type":"number","description":"Highest bid IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":64,"nullable":true},"bid_iv_low":{"type":"number","description":"Lowest bid IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":59,"nullable":true},"bid_iv_close":{"type":"number","description":"Bid IV at period close. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":62,"nullable":true},"ask_iv_open":{"type":"number","description":"Ask IV at period open. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":63,"nullable":true},"ask_iv_high":{"type":"number","description":"Highest ask IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":66,"nullable":true},"ask_iv_low":{"type":"number","description":"Lowest ask IV during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":61,"nullable":true},"ask_iv_close":{"type":"number","description":"Ask IV at period close. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":64,"nullable":true},"iv_spread_open":{"type":"number","description":"IV spread (ask - bid) at period open. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":2,"nullable":true},"iv_spread_high":{"type":"number","description":"Maximum IV spread during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":2.5,"nullable":true},"iv_spread_low":{"type":"number","description":"Minimum IV spread during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":1.5,"nullable":true},"iv_spread_close":{"type":"number","description":"IV spread at period close. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":2,"nullable":true},"iv_spread_avg":{"type":"number","description":"Average IV spread during period. Implied volatility in percentage points: 65 means 65%, not 0.65.","example":2,"nullable":true},"delta":{"type":"number","description":"Delta - rate of change of option price with respect to underlying","example":0.45,"nullable":true},"gamma":{"type":"number","description":"Gamma - rate of change of delta","example":0.012,"nullable":true},"theta":{"type":"number","description":"Theta - time decay","example":-12.5,"nullable":true},"vega":{"type":"number","description":"Vega - sensitivity to volatility","example":5.2,"nullable":true},"rho":{"type":"number","description":"Rho - sensitivity to interest rate","example":2.1,"nullable":true},"ticker_updates_count":{"type":"number","description":"Number of ticker updates during period","example":250,"nullable":true}},"required":["date"]},"OptionsRefDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"mark_price_open":{"type":"number","description":"Mark price at time bucket start","example":62100.5},"mark_price_high":{"type":"number","description":"Highest mark price during time bucket","example":62150},"mark_price_low":{"type":"number","description":"Lowest mark price during time bucket","example":62080},"mark_price_close":{"type":"number","description":"Mark price at time bucket end","example":62110},"underlying_price":{"type":"number","description":"Exchange-reported option underlying pricing reference at the final observed minute. It may be expiry-specific and is separate from the spot index. Null when unavailable.","example":62080.5,"nullable":true},"index_price":{"type":"number","description":"Exchange spot index at the final observed minute. Null when unavailable; never substituted with the option underlying pricing reference.","nullable":true}},"required":["date","mark_price_open","mark_price_high","mark_price_low","mark_price_close"]},"BaseVolumeDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"volume_24h":{"type":"number","description":"Venue-reported rolling 24-hour volume at the final ticker minute (unit per route definition); not a bucket sum","example":1500.25,"nullable":true},"volume_usd_24h":{"type":"number","description":"Rolling 24-hour USD volume at the final ticker minute; not a bucket sum","example":95000000.5,"nullable":true},"buy_volume":{"type":"number","description":"Buy volume traded in the bucket (venue-native size unit)","example":750.12,"nullable":true},"sell_volume":{"type":"number","description":"Sell volume traded in the bucket (venue-native size unit)","example":680.5,"nullable":true},"volume":{"type":"number","description":"Volume traded in the bucket: buy_volume + sell_volume (venue-native size unit)","example":1430.62,"nullable":true},"buy_trades_count":{"type":"number","description":"Number of buy trades in the resolution bucket","example":245,"nullable":true},"sell_trades_count":{"type":"number","description":"Number of sell trades in the resolution bucket","example":198,"nullable":true},"trades_count":{"type":"number","description":"Total number of trades in the resolution bucket","example":443,"nullable":true}},"required":["date"]},"OptionsTradeEntity":{"type":"object","properties":{"instrument_name":{"type":"string","description":"Instrument identifier","example":"BTC-16OCT26"},"timestamp":{"type":"number","description":"Unix timestamp in milliseconds","example":1234567890123},"date":{"type":"string","description":"ISO 8601 formatted date string","example":"2023-06-15T14:30:00.000Z"},"trade_id":{"type":"string","description":"Unique trade identifier","example":"trade_123456"},"block_trade_id":{"type":"string","description":"Block trade identifier if applicable","example":"block_123"},"combo_id":{"type":"string","description":"Combo trade identifier if applicable","example":"combo_123"},"combo_trade_id":{"type":"string","description":"Combo trade ID if part of combo","example":"combo_trade_123"},"strategy":{"type":"string","description":"Trading strategy identifier","example":"strategy_1"},"direction":{"type":"string","description":"Trade direction","enum":["buy","sell"],"example":"buy"},"tick_direction":{"type":"object","description":"Tick direction indicator","example":1,"nullable":true},"amount":{"type":"number","description":"Trade amount/size","example":1.5},"price":{"type":"number","description":"Trade execution price","example":45000.5},"index_price":{"type":"object","description":"Index price at time of trade","example":45010,"nullable":true},"oi_change":{"type":"object","description":"Change in open interest","example":100,"nullable":true},"open_interest":{"type":"object","description":"Open interest after trade","example":10000,"nullable":true},"oi_before":{"type":"object","description":"Open interest before trade","example":9900,"nullable":true}},"required":["instrument_name","timestamp","date","trade_id","direction","amount","price"]},"BaseOpenInterestEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"oi_open":{"type":"number","description":"Open interest at time bucket start (base units)","example":22000.1},"oi_high":{"type":"number","description":"Highest open interest during time bucket (base units)","example":22500.3},"oi_low":{"type":"number","description":"Lowest open interest during time bucket (base units)","example":21950},"oi_close":{"type":"number","description":"Open interest at time bucket end (base units)","example":22350.5}},"required":["date","oi_open","oi_high","oi_low","oi_close"]},"OptionsFlowBucketEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"trade_count":{"type":"number","description":"Total number of trades in bucket"},"buy_count":{"type":"number","description":"Number of buy trades"},"sell_count":{"type":"number","description":"Number of sell trades"},"total_amount":{"type":"number","description":"Total trade amount (contracts)"},"buy_amount":{"type":"number","description":"Buy side amount (contracts)"},"sell_amount":{"type":"number","description":"Sell side amount (contracts)"},"total_premium_usd":{"type":"number","description":"Total premium in USD"},"buy_premium_usd":{"type":"number","description":"Buy side premium in USD"},"sell_premium_usd":{"type":"number","description":"Sell side premium in USD"},"total_notional":{"type":"number","description":"Total notional in USD"},"buy_notional":{"type":"number","description":"Buy side notional in USD"},"sell_notional":{"type":"number","description":"Sell side notional in USD"},"call_premium_usd":{"type":"number","description":"Call option premium in USD"},"put_premium_usd":{"type":"number","description":"Put option premium in USD"},"call_count":{"type":"number","description":"Number of call option trades"},"put_count":{"type":"number","description":"Number of put option trades"},"block_trade_count":{"type":"number","description":"Number of block trades"},"block_premium_usd":{"type":"number","description":"Block trade premium in USD"},"net_oi_change":{"type":"number","description":"Net open interest change"},"avg_iv":{"type":"object","description":"Average implied volatility","nullable":true},"avg_abs_delta":{"type":"object","description":"Average absolute delta","nullable":true}},"required":["date","trade_count","buy_count","sell_count","total_amount","buy_amount","sell_amount","total_premium_usd","buy_premium_usd","sell_premium_usd","total_notional","buy_notional","sell_notional","call_premium_usd","put_premium_usd","call_count","put_count","block_trade_count","block_premium_usd","net_oi_change","avg_iv","avg_abs_delta"]},"OptionsFlowActiveStrikeEntity":{"type":"object","properties":{"instrument_name":{"type":"string","description":"Instrument name"},"trade_count":{"type":"number","description":"Number of trades on this instrument"},"premium_usd":{"type":"number","description":"Total premium in USD"},"net_oi_change":{"type":"number","description":"Net open interest change"}},"required":["instrument_name","trade_count","premium_usd","net_oi_change"]},"OptionsFlowSummaryEntity":{"type":"object","properties":{"start":{"type":"string","description":"Start of aggregation window (ISO 8601 UTC)","example":"2026-03-11T10:00:00.000Z"},"end":{"type":"string","description":"End of aggregation window (ISO 8601 UTC)","example":"2026-03-18T10:00:00.000Z"},"resolution":{"type":"string","description":"Resolution used for time buckets","example":"1h"},"total_trades":{"type":"number","description":"Total number of trades in window"},"total_premium_usd":{"type":"number","description":"Total premium across all trades in USD"},"total_notional_usd":{"type":"number","description":"Total notional across all trades in USD"},"call_premium_usd":{"type":"number","description":"Total premium for call options in USD"},"put_premium_usd":{"type":"number","description":"Total premium for put options in USD"},"buy_premium_usd":{"type":"number","description":"Total premium for buy-side trades in USD"},"sell_premium_usd":{"type":"number","description":"Total premium for sell-side trades in USD"},"net_delta":{"type":"number","description":"Net delta across all trades"},"net_gamma":{"type":"number","description":"Net gamma across all trades"},"net_vega":{"type":"number","description":"Net vega across all trades"},"opening_trades":{"type":"number","description":"Number of opening trades (strategy starts with Opened)"},"closing_trades":{"type":"number","description":"Number of closing trades (strategy starts with Closed)"},"net_oi_change":{"type":"number","description":"Net open interest change"},"block_trade_count":{"type":"number","description":"Number of block trades"},"block_trade_premium_usd":{"type":"number","description":"Block trade premium in USD"},"most_active_strikes":{"description":"Most active instruments by premium","type":"array","items":{"$ref":"#/components/schemas/OptionsFlowActiveStrikeEntity"}}},"required":["start","end","resolution","total_trades","total_premium_usd","total_notional_usd","call_premium_usd","put_premium_usd","buy_premium_usd","sell_premium_usd","net_delta","net_gamma","net_vega","opening_trades","closing_trades","net_oi_change","block_trade_count","block_trade_premium_usd","most_active_strikes"]},"OptionsGexCatalogEntity":{"type":"object","properties":{"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"first_date":{"type":"string","description":"Earliest available aggregate GEX timestamp","example":"2025-10-04T00:00:00.000Z"},"latest_date":{"type":"string","description":"Latest available aggregate GEX timestamp","example":"2026-06-15T10:06:00.000Z"},"row_count":{"type":"number","description":"Number of aggregate GEX rows available for this currency/venue","example":318224},"spot":{"type":"number","description":"Latest spot price used for the GEX calculation","example":65651.87},"total_gex":{"type":"number","description":"Latest total dealer gamma exposure per 1% underlying move","example":-4542768.08},"net_long_gex":{"type":"number","description":"Latest positive dealer GEX contribution","example":19984373.25},"net_short_gex":{"type":"number","description":"Latest negative dealer GEX contribution","example":-24527141.33},"regime":{"type":"string","description":"Latest dealer regime classification","example":"neutral"}},"required":["currency","exchange","market","first_date","latest_date","row_count","spot","total_gex","net_long_gex","net_short_gex","regime"]},"OptionsGexIndexEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"spot":{"type":"number","description":"Spot price used for the GEX calculation","example":65651.87},"total_gex":{"type":"number","description":"Total dealer gamma exposure per 1% underlying move, USD-normalized","example":-4542768.08},"net_long_gex":{"type":"number","description":"Positive dealer GEX contribution","example":19984373.25},"net_short_gex":{"type":"number","description":"Negative dealer GEX contribution","example":-24527141.33},"regime":{"type":"string","description":"Dealer regime classification","example":"neutral"}},"required":["date","currency","exchange","market","spot","total_gex","net_long_gex","net_short_gex","regime"]},"OptionsGexProfileEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"spot":{"type":"number","description":"Spot price used for the GEX calculation","example":65651.87},"total_gex":{"type":"number","description":"Total dealer gamma exposure per 1% underlying move, USD-normalized","example":-4542768.08},"net_long_gex":{"type":"number","description":"Positive dealer GEX contribution","example":19984373.25},"net_short_gex":{"type":"number","description":"Negative dealer GEX contribution","example":-24527141.33},"regime":{"type":"string","description":"Dealer regime classification","example":"neutral"},"profile_group":{"type":"string","description":"Profile group, usually 'all_expiries' or an expiry code","example":"all_expiries"},"strike_label":{"type":"string","description":"Original profile strike token as calculated","example":"65000"},"strike":{"type":"number","description":"Numeric strike parsed from strike_label","example":65000},"gex":{"type":"number","description":"Legacy raw interpolated GEX value at this profile strike. Use weighted_gex for the dealer-model weighted profile.","example":-1200000},"raw_gex":{"type":"number","description":"Raw interpolated GEX value at this profile strike before dealer-model weighting","example":-1200000},"weighted_gex":{"type":"number","description":"Dealer-model weighted interpolated GEX value at this profile strike","example":-1037880},"min_strike":{"type":"number","description":"Minimum strike in the interpolated profile domain","example":40000},"max_strike":{"type":"number","description":"Maximum strike in the interpolated profile domain","example":90000},"interpolator":{"type":"string","description":"Interpolation method used for the profile","example":"pchip"}},"required":["date","currency","exchange","market","spot","total_gex","net_long_gex","net_short_gex","regime","profile_group","strike_label","strike","gex","raw_gex","weighted_gex","min_strike","max_strike","interpolator"]},"OptionsGexRegimeChangeEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"spot":{"type":"number","description":"Spot price used for the GEX calculation","example":65651.87},"total_gex":{"type":"number","description":"Total dealer gamma exposure per 1% underlying move, USD-normalized","example":-4542768.08},"net_long_gex":{"type":"number","description":"Positive dealer GEX contribution","example":19984373.25},"net_short_gex":{"type":"number","description":"Negative dealer GEX contribution","example":-24527141.33},"regime":{"type":"string","description":"Dealer regime classification","example":"neutral"},"previous_regime":{"type":"string","description":"Previous regime before the transition","example":"positive"}},"required":["date","currency","exchange","market","spot","total_gex","net_long_gex","net_short_gex","regime","previous_regime"]},"OptionsGexStrikeContributionEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"spot":{"type":"number","description":"Spot price used for the GEX calculation","example":65651.87},"total_gex":{"type":"number","description":"Total dealer gamma exposure per 1% underlying move, USD-normalized","example":-4542768.08},"net_long_gex":{"type":"number","description":"Positive dealer GEX contribution","example":19984373.25},"net_short_gex":{"type":"number","description":"Negative dealer GEX contribution","example":-24527141.33},"regime":{"type":"string","description":"Dealer regime classification","example":"neutral"},"expiry":{"type":"string","description":"Expiry code, or 'all_expiries' for the aggregate view","example":"all_expiries"},"is_aggregate":{"type":"boolean","description":"True when this row belongs to the aggregate all-expiries view","example":true},"strike_label":{"type":"string","description":"Original strike token as calculated","example":"65000"},"strike":{"type":"number","description":"Numeric strike parsed from strike_label","example":65000},"contribution":{"type":"number","description":"Legacy raw GEX contribution for this strike bucket. Use weighted_contribution to reconcile with aggregate total_gex.","example":-1500000},"pos_contribution":{"type":"number","description":"Legacy raw positive GEX contribution for this strike bucket.","example":200000},"neg_contribution":{"type":"number","description":"Legacy raw negative GEX contribution for this strike bucket.","example":-1700000},"raw_contribution":{"type":"number","description":"Raw GEX contribution before dealer-model weighting","example":-1500000},"raw_pos_contribution":{"type":"number","description":"Raw positive GEX contribution before dealer-model weighting","example":200000},"raw_neg_contribution":{"type":"number","description":"Raw negative GEX contribution before dealer-model weighting","example":-1700000},"weighted_contribution":{"type":"number","description":"Dealer-model weighted GEX contribution. Sum per-expiry weighted_contribution rows to reconcile with aggregate total_gex.","example":-1297350},"weighted_pos_contribution":{"type":"number","description":"Dealer-model weighted positive GEX contribution.","example":172980},"weighted_neg_contribution":{"type":"number","description":"Dealer-model weighted negative GEX contribution.","example":-1470330},"moneyness_weight":{"type":"number","description":"Moneyness weighting used by the dealer model","example":0.93},"expiry_weight":{"type":"number","description":"Expiry weighting used by the dealer model; zero on all_expiries rows","example":0}},"required":["date","currency","exchange","market","spot","total_gex","net_long_gex","net_short_gex","regime","expiry","is_aggregate","strike_label","strike","contribution","pos_contribution","neg_contribution","raw_contribution","raw_pos_contribution","raw_neg_contribution","weighted_contribution","weighted_pos_contribution","weighted_neg_contribution","moneyness_weight","expiry_weight"]},"OptionsGexTermStructureEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"currency":{"type":"string","description":"Dealer-worker currency","example":"BTC"},"exchange":{"type":"string","description":"Venue name resolved from dealer market id","example":"deribit"},"market":{"type":"number","description":"Dealer market id. 0 maps to Deribit.","example":0},"expiry":{"type":"string","description":"Expiry code","example":"27JUN26"},"total_gex":{"type":"number","description":"Legacy raw total GEX contribution for this expiry. Use weighted_total_gex to reconcile with aggregate total_gex.","example":-1500000},"net_long_gex":{"type":"number","description":"Legacy raw positive GEX contribution for this expiry","example":200000},"net_short_gex":{"type":"number","description":"Legacy raw negative GEX contribution for this expiry","example":-1700000},"raw_total_gex":{"type":"number","description":"Raw total GEX contribution for this expiry before dealer-model weighting","example":-1500000},"raw_net_long_gex":{"type":"number","description":"Raw positive GEX contribution for this expiry before dealer-model weighting","example":200000},"raw_net_short_gex":{"type":"number","description":"Raw negative GEX contribution for this expiry before dealer-model weighting","example":-1700000},"weighted_total_gex":{"type":"number","description":"Dealer-model weighted total GEX contribution for this expiry. Sum this field across expiries to reconcile with snapshot_total_gex.","example":-1297350},"weighted_net_long_gex":{"type":"number","description":"Dealer-model weighted positive GEX contribution for this expiry","example":172980},"weighted_net_short_gex":{"type":"number","description":"Dealer-model weighted negative GEX contribution for this expiry","example":-1470330},"strike_count":{"type":"number","description":"Number of strike buckets contributing to this expiry","example":43},"spot":{"type":"number","description":"Spot price used for this snapshot","example":65651.87},"snapshot_total_gex":{"type":"number","description":"Full-snapshot total GEX for context","example":-4542768.08}},"required":["date","currency","exchange","market","expiry","total_gex","net_long_gex","net_short_gex","raw_total_gex","raw_net_long_gex","raw_net_short_gex","weighted_total_gex","weighted_net_long_gex","weighted_net_short_gex","strike_count","spot","snapshot_total_gex"]},"MetadataResponseEntity":{"type":"object","properties":{"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-PERPETUAL"},"start_date":{"type":"string","description":"Start date of available data (ISO 8601 format)","example":"2020-01-01T00:00:00.000Z"},"end_date":{"type":"string","description":"End date of available data (ISO 8601 format)","example":"2025-11-21T23:59:00.000Z"},"total_count":{"type":"number","description":"Total count of records available","example":1500000},"total_pages":{"type":"number","description":"ceil(total_count / page size): the request limit (default 100) where the endpoint accepts one; spot metadata always uses a fixed page size of 100","example":15000}},"required":["exchange","instrument_name","start_date","end_date","total_count","total_pages"]},"PerpetualsOhlcvtEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"open":{"type":"number","description":"First open in the bucket. Trade price, or the mark price on synthetic mark-filled minutes without executions (trades_count = 0).","example":42150.5},"high":{"type":"number","description":"Maximum high in the bucket; synthetic mark-filled minutes contribute their mark price.","example":42890.75},"low":{"type":"number","description":"Minimum low in the bucket; synthetic mark-filled minutes contribute their mark price.","example":41920.25},"close":{"type":"number","description":"Last close in the bucket; trade price or, on a synthetic mark-filled minute, the mark price.","example":42500},"vwap":{"type":"number","description":"Volume-weighted average price across the interval. When total traded volume is zero, the mean of the minute reference prices is retained.","example":42350.5},"volume":{"type":"number","description":"Traded volume (buy + sell) in the bucket, in the venue-native size unit; 0 on synthetic candles.","example":2700.8},"buy_volume":{"type":"number","description":"Buy-side volume (direction = buy)","example":1500.5},"sell_volume":{"type":"number","description":"Sell-side volume (direction = sell)","example":1200.3},"trades_count":{"type":"number","description":"Number of trades (buy + sell); 0 identifies a synthetic mark-filled candle.","example":270},"buy_trades_count":{"type":"number","description":"Number of buy trades","example":150},"sell_trades_count":{"type":"number","description":"Number of sell trades","example":120},"liquidation_short_volume":{"type":"number","description":"Volume from short liquidations (forced buy orders)","example":50.25,"nullable":true},"liquidation_long_volume":{"type":"number","description":"Volume from long liquidations (forced sell orders)","example":75.5,"nullable":true},"block_trade_buy_volume":{"type":"number","description":"Volume from block trade buys","example":100,"nullable":true},"block_trade_sell_volume":{"type":"number","description":"Volume from block trade sells","example":150,"nullable":true},"mark_price":{"type":"number","description":"Mark price at the final observed minute of the bucket; not OHLC.","example":42500.5,"nullable":true},"index_price":{"type":"number","description":"Index price at the final observed minute of the bucket; not OHLC.","example":42505,"nullable":true}},"required":["date","open","high","low","close","vwap","volume","buy_volume","sell_volume","trades_count","buy_trades_count","sell_trades_count"]},"PerpetualsTickerDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"mark_price":{"type":"number","description":"Mark price at the final observed minute of the bucket (quote currency).","nullable":true},"index_price":{"type":"number","description":"Exchange index price at the final observed minute of the bucket.","nullable":true},"bid_price":{"type":"number","description":"Best bid price at the final observed minute of the bucket.","nullable":true},"ask_price":{"type":"number","description":"Best ask price at the final observed minute of the bucket.","nullable":true},"bid_ask_spread":{"type":"number","description":"Ask minus bid at the final observed minute of the bucket.","nullable":true},"bid_size":{"type":"number","description":"Displayed best-bid size at the final observed minute (venue-native size unit).","nullable":true},"ask_size":{"type":"number","description":"Displayed best-ask size at the final observed minute (venue-native size unit).","nullable":true},"oi":{"type":"number","description":"Open interest at the final observed minute, in base coin (venue conventions in the route definition).","nullable":true},"volume_usd_24h":{"type":"number","description":"Venue-reported rolling 24-hour USD volume at the final observed minute; not a bucket sum.","nullable":true},"open":{"type":"number","description":"Snapshot only: first trade-candle open of the minute/bucket (mark price on synthetic candles)."},"high":{"type":"number","description":"Snapshot only: maximum trade-candle high of the minute/bucket."},"low":{"type":"number","description":"Snapshot only: minimum trade-candle low of the minute/bucket."},"close":{"type":"number","description":"Snapshot only: last trade-candle close of the minute/bucket."},"vwap":{"type":"number","description":"Snapshot only: traded-volume-weighted average price of the minute/bucket."},"buy_volume":{"type":"number","description":"Snapshot only: buy volume traded in the minute/bucket (venue-native size unit)."},"sell_volume":{"type":"number","description":"Snapshot only: sell volume traded in the minute/bucket (venue-native size unit)."},"volume":{"type":"number","description":"Snapshot only: buy_volume + sell_volume."},"buy_trades_count":{"type":"number","description":"Snapshot only: number of buy trades in the minute/bucket."},"sell_trades_count":{"type":"number","description":"Snapshot only: number of sell trades in the minute/bucket."},"trades_count":{"type":"number","description":"Snapshot only: number of trades in the minute/bucket."},"next_funding_time":{"type":"number","description":"Next funding timestamp in milliseconds. Null when the venue does not report it.","example":1733788800000,"nullable":true},"funding_rate":{"type":"number","description":"Current funding rate as a decimal per venue funding interval (e.g. 0.0001 = 0.01%). Null when the venue does not report it.","example":0.0001,"nullable":true}},"required":["date","mark_price","index_price","bid_price","ask_price","bid_ask_spread","bid_size","ask_size","oi","volume_usd_24h","next_funding_time","funding_rate"]},"PerpetualsOhlcCarryEntity":{"type":"object","properties":{"timestamp":{"type":"number","description":"UTC bucket start in Unix milliseconds","example":1733788800000},"minute":{"type":"string","description":"UTC bucket start as ISO 8601. This route has no date field.","example":"2024-12-10T00:00:00.000Z"},"funding_rate_open":{"type":"number","description":"First funding_rate in the bucket (venue-native per-interval decimal)","example":0.0001,"nullable":true},"funding_rate_high":{"type":"number","description":"Highest funding_rate during the bucket","example":0.00015,"nullable":true},"funding_rate_low":{"type":"number","description":"Lowest funding_rate during the bucket","example":0.00008,"nullable":true},"funding_rate_close":{"type":"number","description":"Last funding_rate in the bucket, as a decimal per venue funding interval (e.g. hourly on Hyperliquid, 8-hourly on Binance)","example":0.00012,"nullable":true},"funding_8h_open":{"type":"number","description":"First 8-hour-normalized funding rate (decimal) in the bucket","example":0.0003,"nullable":true},"funding_8h_high":{"type":"number","description":"Highest 8-hour-normalized funding rate during the bucket","example":0.0004,"nullable":true},"funding_8h_low":{"type":"number","description":"Lowest 8-hour-normalized funding rate during the bucket","example":0.00025,"nullable":true},"funding_8h_close":{"type":"number","description":"Last 8-hour-normalized funding rate (decimal) in the bucket","example":0.00035,"nullable":true},"basis_open":{"type":"number","description":"Observed mark − index at the first source minute with a usable index","example":25.5,"nullable":true},"basis_high":{"type":"number","description":"Synthetic upper bound: maximum of mark_high − index_low; not an observed basis","example":28.1,"nullable":true},"basis_low":{"type":"number","description":"Synthetic lower bound: minimum of mark_low − index_high; not an observed basis","example":24.2,"nullable":true},"basis_close":{"type":"number","description":"Observed mark − index at the last source minute with a usable index","example":27.1,"nullable":true},"annualized_carry":{"type":"number","description":"Annualized carry rate (%) from the 8h-normalized funding rate: funding_8h_close * 3 * 365 * 100. Null when funding_8h_close is unavailable.","example":10.95,"nullable":true}},"required":["timestamp","minute"]},"BaseBookEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"bid_price_open":{"type":"number","description":"First best bid price in the bucket","example":62000.5},"bid_price_high":{"type":"number","description":"Highest best bid price during the bucket","example":62050},"bid_price_low":{"type":"number","description":"Lowest best bid price during the bucket","example":61980},"bid_price_close":{"type":"number","description":"Last best bid price in the bucket","example":62010},"ask_price_open":{"type":"number","description":"First best ask price in the bucket","example":62010.5},"ask_price_high":{"type":"number","description":"Highest best ask price during the bucket","example":62070},"ask_price_low":{"type":"number","description":"Lowest best ask price during the bucket","example":62000},"ask_price_close":{"type":"number","description":"Last best ask price in the bucket","example":62020},"bid_size_open":{"type":"number","description":"First displayed best-bid size in the bucket (venue-native size unit)","example":55.5},"bid_size_high":{"type":"number","description":"Maximum displayed best-bid size during the bucket (venue-native size unit)","example":55.5},"bid_size_low":{"type":"number","description":"Minimum displayed best-bid size during the bucket (venue-native size unit)","example":55.5},"bid_size_close":{"type":"number","description":"Last displayed best-bid size in the bucket (venue-native size unit)","example":57.2},"ask_size_open":{"type":"number","description":"First displayed best-ask size in the bucket (venue-native size unit)","example":48.3},"ask_size_high":{"type":"number","description":"Maximum displayed best-ask size during the bucket (venue-native size unit)","example":48.3},"ask_size_low":{"type":"number","description":"Minimum displayed best-ask size during the bucket (venue-native size unit)","example":48.3},"ask_size_close":{"type":"number","description":"Last displayed best-ask size in the bucket (venue-native size unit)","example":49.1},"bid_ask_spread_open":{"type":"number","description":"First ask minus bid spread in the bucket","example":10},"bid_ask_spread_high":{"type":"number","description":"Maximum ask minus bid spread during the bucket","example":10},"bid_ask_spread_low":{"type":"number","description":"Minimum ask minus bid spread during the bucket","example":10},"bid_ask_spread_close":{"type":"number","description":"Last ask minus bid spread in the bucket","example":9.5},"total_liquidity_open":{"type":"number","description":"Bid-size plus ask-size for the first complete top-of-book observation in a 1m bucket. At coarser resolutions, this is the open from the first persisted 1m bucket.","example":120.5},"total_liquidity_high":{"type":"number","description":"Maximum bid-size plus ask-size across the complete top-of-book observations in a 1m bucket. At coarser resolutions, this is the maximum of the persisted 1m highs.","example":120.5},"total_liquidity_low":{"type":"number","description":"Minimum bid-size plus ask-size across the complete top-of-book observations in a 1m bucket. At coarser resolutions, this is the minimum of the persisted 1m lows.","example":120.5},"total_liquidity_close":{"type":"number","description":"Bid-size plus ask-size for the last complete top-of-book observation in a 1m bucket. At coarser resolutions, this is the close from the last persisted 1m bucket.","example":122.2},"total_liquidity_avg":{"type":"number","description":"Arithmetic mean of bid-size plus ask-size over complete top-of-book observations. At 1m, a source update contributes only when both sizes are present in that same update; open, low, high, close, and average use that identical sample population. Coarser resolutions use the unweighted arithmetic mean of the available persisted 1m averages and are not derived from low and high.","example":121.3}},"required":["date","bid_price_open","bid_price_high","bid_price_low","bid_price_close","ask_price_open","ask_price_high","ask_price_low","ask_price_close","bid_size_open","bid_size_high","bid_size_low","bid_size_close","ask_size_open","ask_size_high","ask_size_low","ask_size_close","bid_ask_spread_open","bid_ask_spread_high","bid_ask_spread_low","bid_ask_spread_close","total_liquidity_open","total_liquidity_high","total_liquidity_low","total_liquidity_close","total_liquidity_avg"]},"BaseL2OrderbookEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"instrument_type":{"type":"string","description":"Instrument type (future or perpetual)","example":"future"},"maturity":{"type":"string","description":"Maturity date string (null for perpetuals)","example":"16OCT26","nullable":true},"days_to_expiry":{"type":"number","description":"Days until expiry (null for perpetuals)","example":90.5,"nullable":true},"bid_liq_10_open":{"type":"number","description":"Sum of top-10 bid sizes at bucket open","example":0.301},"bid_liq_10_high":{"type":"number","description":"Highest sum of top-10 bid sizes during bucket","example":0.55},"bid_liq_10_low":{"type":"number","description":"Lowest sum of top-10 bid sizes during bucket","example":0.15},"bid_liq_10_close":{"type":"number","description":"Sum of top-10 bid sizes at bucket close","example":0.42},"bid_liq_10_avg":{"type":"number","description":"Average sum of top-10 bid sizes during bucket","example":0.35},"bid_liq_20_open":{"type":"number","description":"Sum of top-20 bid sizes at bucket open","example":0.359},"bid_liq_20_high":{"type":"number","description":"Highest sum of top-20 bid sizes during bucket","example":0.8},"bid_liq_20_low":{"type":"number","description":"Lowest sum of top-20 bid sizes during bucket","example":0.2},"bid_liq_20_close":{"type":"number","description":"Sum of top-20 bid sizes at bucket close","example":0.5},"bid_liq_20_avg":{"type":"number","description":"Average sum of top-20 bid sizes during bucket","example":0.45},"bid_liq_50_open":{"type":"number","description":"Sum of top-50 bid sizes at bucket open","example":7.831},"bid_liq_50_high":{"type":"number","description":"Highest sum of top-50 bid sizes during bucket","example":10.5},"bid_liq_50_low":{"type":"number","description":"Lowest sum of top-50 bid sizes during bucket","example":5.2},"bid_liq_50_close":{"type":"number","description":"Sum of top-50 bid sizes at bucket close","example":8.1},"bid_liq_50_avg":{"type":"number","description":"Average sum of top-50 bid sizes during bucket","example":7.5},"bid_liq_100_open":{"type":"number","description":"Sum of all 100 bid sizes at bucket open","example":12.891},"bid_liq_100_high":{"type":"number","description":"Highest sum of all 100 bid sizes during bucket","example":18},"bid_liq_100_low":{"type":"number","description":"Lowest sum of all 100 bid sizes during bucket","example":9},"bid_liq_100_close":{"type":"number","description":"Sum of all 100 bid sizes at bucket close","example":14.5},"bid_liq_100_avg":{"type":"number","description":"Average sum of all 100 bid sizes during bucket","example":13.2},"ask_liq_10_open":{"type":"number","description":"Sum of top-10 ask sizes at bucket open","example":5.375},"ask_liq_10_high":{"type":"number","description":"Highest sum of top-10 ask sizes during bucket","example":6.2},"ask_liq_10_low":{"type":"number","description":"Lowest sum of top-10 ask sizes during bucket","example":4.1},"ask_liq_10_close":{"type":"number","description":"Sum of top-10 ask sizes at bucket close","example":5.1},"ask_liq_10_avg":{"type":"number","description":"Average sum of top-10 ask sizes during bucket","example":5},"ask_liq_20_open":{"type":"number","description":"Sum of top-20 ask sizes at bucket open","example":6.398},"ask_liq_20_high":{"type":"number","description":"Highest sum of top-20 ask sizes during bucket","example":8},"ask_liq_20_low":{"type":"number","description":"Lowest sum of top-20 ask sizes during bucket","example":4.5},"ask_liq_20_close":{"type":"number","description":"Sum of top-20 ask sizes at bucket close","example":6},"ask_liq_20_avg":{"type":"number","description":"Average sum of top-20 ask sizes during bucket","example":5.8},"ask_liq_50_open":{"type":"number","description":"Sum of top-50 ask sizes at bucket open","example":18.966},"ask_liq_50_high":{"type":"number","description":"Highest sum of top-50 ask sizes during bucket","example":22},"ask_liq_50_low":{"type":"number","description":"Lowest sum of top-50 ask sizes during bucket","example":15},"ask_liq_50_close":{"type":"number","description":"Sum of top-50 ask sizes at bucket close","example":19.5},"ask_liq_50_avg":{"type":"number","description":"Average sum of top-50 ask sizes during bucket","example":18.2},"ask_liq_100_open":{"type":"number","description":"Sum of all 100 ask sizes at bucket open","example":40.834},"ask_liq_100_high":{"type":"number","description":"Highest sum of all 100 ask sizes during bucket","example":50},"ask_liq_100_low":{"type":"number","description":"Lowest sum of all 100 ask sizes during bucket","example":30},"ask_liq_100_close":{"type":"number","description":"Sum of all 100 ask sizes at bucket close","example":42},"ask_liq_100_avg":{"type":"number","description":"Average sum of all 100 ask sizes during bucket","example":39.5},"imbalance_10_open":{"type":"number","description":"Order book imbalance at depth 10 at bucket open. Range [-1,1]: negative = ask-heavy, positive = bid-heavy","example":-0.894},"imbalance_10_high":{"type":"number","description":"Highest imbalance at depth 10 during bucket","example":-0.5},"imbalance_10_low":{"type":"number","description":"Lowest imbalance at depth 10 during bucket","example":-0.95},"imbalance_10_close":{"type":"number","description":"Order book imbalance at depth 10 at bucket close","example":-0.82},"imbalance_10_avg":{"type":"number","description":"Average imbalance at depth 10 during bucket","example":-0.78},"imbalance_20_open":{"type":"number","description":"Order book imbalance at depth 20 at bucket open","example":-0.894},"imbalance_20_high":{"type":"number","description":"Highest imbalance at depth 20 during bucket","example":-0.5},"imbalance_20_low":{"type":"number","description":"Lowest imbalance at depth 20 during bucket","example":-0.95},"imbalance_20_close":{"type":"number","description":"Order book imbalance at depth 20 at bucket close","example":-0.82},"imbalance_20_avg":{"type":"number","description":"Average imbalance at depth 20 during bucket","example":-0.78},"imbalance_50_open":{"type":"number","description":"Order book imbalance at depth 50 at bucket open","example":-0.416},"imbalance_50_high":{"type":"number","description":"Highest imbalance at depth 50 during bucket","example":-0.1},"imbalance_50_low":{"type":"number","description":"Lowest imbalance at depth 50 during bucket","example":-0.6},"imbalance_50_close":{"type":"number","description":"Order book imbalance at depth 50 at bucket close","example":-0.35},"imbalance_50_avg":{"type":"number","description":"Average imbalance at depth 50 during bucket","example":-0.38},"imbalance_100_open":{"type":"number","description":"Order book imbalance at depth 100 at bucket open","example":-0.52},"imbalance_100_high":{"type":"number","description":"Highest imbalance at depth 100 during bucket","example":-0.2},"imbalance_100_low":{"type":"number","description":"Lowest imbalance at depth 100 during bucket","example":-0.7},"imbalance_100_close":{"type":"number","description":"Order book imbalance at depth 100 at bucket close","example":-0.45},"imbalance_100_avg":{"type":"number","description":"Average imbalance at depth 100 during bucket","example":-0.48},"microprice_open":{"type":"number","description":"Microprice (top-of-book size-weighted mid) at bucket open","example":89967.9},"microprice_high":{"type":"number","description":"Highest microprice during bucket","example":89975},"microprice_low":{"type":"number","description":"Lowest microprice during bucket","example":89960},"microprice_close":{"type":"number","description":"Microprice at bucket close","example":89970.5},"microprice_avg":{"type":"number","description":"Average microprice; coarser buckets average the minute averages","example":89968.2},"snapshot_count":{"type":"number","description":"Number of order-book snapshots aggregated in this bucket (summed across minutes)","example":60}},"required":["date","bid_liq_10_open","bid_liq_10_high","bid_liq_10_low","bid_liq_10_close","bid_liq_10_avg","bid_liq_20_open","bid_liq_20_high","bid_liq_20_low","bid_liq_20_close","bid_liq_20_avg","bid_liq_50_open","bid_liq_50_high","bid_liq_50_low","bid_liq_50_close","bid_liq_50_avg","bid_liq_100_open","bid_liq_100_high","bid_liq_100_low","bid_liq_100_close","bid_liq_100_avg","ask_liq_10_open","ask_liq_10_high","ask_liq_10_low","ask_liq_10_close","ask_liq_10_avg","ask_liq_20_open","ask_liq_20_high","ask_liq_20_low","ask_liq_20_close","ask_liq_20_avg","ask_liq_50_open","ask_liq_50_high","ask_liq_50_low","ask_liq_50_close","ask_liq_50_avg","ask_liq_100_open","ask_liq_100_high","ask_liq_100_low","ask_liq_100_close","ask_liq_100_avg","imbalance_10_open","imbalance_10_high","imbalance_10_low","imbalance_10_close","imbalance_10_avg","imbalance_20_open","imbalance_20_high","imbalance_20_low","imbalance_20_close","imbalance_20_avg","imbalance_50_open","imbalance_50_high","imbalance_50_low","imbalance_50_close","imbalance_50_avg","imbalance_100_open","imbalance_100_high","imbalance_100_low","imbalance_100_close","imbalance_100_avg","microprice_open","microprice_high","microprice_low","microprice_close","microprice_avg","snapshot_count"]},"BaseL2OrderbookRawEntity":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix timestamp in milliseconds","example":1769066457868},"date":{"type":"string","description":"Snapshot time as ISO 8601 UTC truncated to whole seconds; use timestamp for millisecond ordering","example":"2026-01-22T07:20:57.000Z"},"exchange":{"type":"string","description":"Exchange name","example":"bybit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTCUSDT"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"instrument_type":{"type":"string","description":"Instrument type","example":"perpetual"},"maturity":{"type":"object","description":"Maturity date string","example":"16OCT26","nullable":true},"days_to_expiry":{"type":"object","description":"Days until expiry","example":90,"nullable":true},"margin_type":{"type":"object","description":"Margin type. Null when not recorded.","example":"linear","nullable":true},"multiplier":{"type":"object","description":"Contract multiplier. Null when not recorded.","example":1,"nullable":true},"depth":{"type":"number","description":"Number of depth levels (max 100)","example":100},"bids":{"type":"array","description":"Bid levels ordered best to worst (max 100)","example":[{"price":89967.9,"size":0.169},{"price":89967.8,"size":0.002}],"items":{"type":"object","properties":{"price":{"type":"number"},"size":{"type":"number"}}}},"asks":{"type":"array","description":"Ask levels ordered best to worst (max 100)","example":[{"price":89968,"size":3.085},{"price":89968.2,"size":0.002}],"items":{"type":"object","properties":{"price":{"type":"number"},"size":{"type":"number"}}}},"bid_liquidity_10":{"type":"number","description":"Sum of top 10 bid sizes","example":0.301},"ask_liquidity_10":{"type":"number","description":"Sum of top 10 ask sizes","example":5.375},"bid_liquidity_20":{"type":"number","description":"Sum of top 20 bid sizes","example":0.359},"ask_liquidity_20":{"type":"number","description":"Sum of top 20 ask sizes","example":6.398},"bid_liquidity_50":{"type":"number","description":"Sum of top 50 bid sizes","example":7.831},"ask_liquidity_50":{"type":"number","description":"Sum of top 50 ask sizes","example":18.966},"bid_liquidity_100":{"type":"number","description":"Sum of all 100 bid sizes","example":12.891},"ask_liquidity_100":{"type":"number","description":"Sum of all 100 ask sizes","example":40.834},"imbalance_10":{"type":"number","description":"Order book imbalance at depth 10 (-1 to 1)","example":-0.894},"imbalance_20":{"type":"number","description":"Order book imbalance at depth 20 (-1 to 1)","example":-0.894},"imbalance_50":{"type":"number","description":"Order book imbalance at depth 50 (-1 to 1)","example":-0.416},"imbalance_100":{"type":"number","description":"Order book imbalance at depth 100 (-1 to 1)","example":-0.52},"microprice":{"type":"number","description":"Top-of-book size-weighted mid: (bid × ask_size + ask × bid_size) / (bid_size + ask_size)","example":89967.905}},"required":["timestamp","date","exchange","instrument_name","currency","instrument_type","depth","bids","asks","bid_liquidity_10","ask_liquidity_10","bid_liquidity_20","ask_liquidity_20","bid_liquidity_50","ask_liquidity_50","bid_liquidity_100","ask_liquidity_100","imbalance_10","imbalance_20","imbalance_50","imbalance_100","microprice"]},"FuturesOhlcrefDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"mark_price_open":{"type":"number","description":"Mark price at time bucket start","example":62100.5},"mark_price_high":{"type":"number","description":"Highest mark price during time bucket","example":62150},"mark_price_low":{"type":"number","description":"Lowest mark price during time bucket","example":62080},"mark_price_close":{"type":"number","description":"Mark price at time bucket end","example":62110},"underlying_price":{"type":"number","description":"Always null on perpetual and dated-futures reference prices; use index_price_* for the exchange index.","example":62080.5,"nullable":true},"index_price_open":{"type":"number","description":"Index price at time bucket start","example":62050.2,"nullable":true},"index_price_high":{"type":"number","description":"Highest index price during time bucket","example":62100.3,"nullable":true},"index_price_low":{"type":"number","description":"Lowest index price during time bucket","example":62040.1,"nullable":true},"index_price_close":{"type":"number","description":"Index price at time bucket end","example":62080.5,"nullable":true}},"required":["date","mark_price_open","mark_price_high","mark_price_low","mark_price_close"]},"FuturesTradeEntity":{"type":"object","properties":{"instrument_name":{"type":"string","description":"Instrument identifier","example":"BTC-16OCT26"},"timestamp":{"type":"number","description":"Unix timestamp in milliseconds","example":1234567890123},"date":{"type":"string","description":"Venue trade event time as 'YYYY-MM-DD HH:MM:SS.mmm' in UTC (space separator, no 'Z'; not ISO 8601). Use timestamp for machine parsing.","example":"2026-10-02 13:01:41.954"},"trade_id":{"type":"string","description":"Unique trade identifier","example":"trade_123456"},"block_trade_id":{"type":"string","description":"Block trade identifier if applicable","example":"block_123"},"combo_id":{"type":"string","description":"Combo trade identifier if applicable","example":"combo_123"},"combo_trade_id":{"type":"string","description":"Combo trade ID if part of combo","example":"combo_trade_123"},"strategy":{"type":"string","description":"Trading strategy identifier","example":"strategy_1"},"direction":{"type":"string","description":"Trade direction","enum":["buy","sell"],"example":"buy"},"tick_direction":{"type":"object","description":"Tick direction indicator","example":1,"nullable":true},"amount":{"type":"number","description":"Trade amount in the venue-native unit: USD on Deribit inverse, USDT notional on Binance USDT-M; other venues unverified. Not converted across venues.","example":50},"price":{"type":"number","description":"Trade execution price","example":45000.5},"index_price":{"type":"object","description":"Index price at time of trade","example":45010,"nullable":true},"oi_change":{"type":"object","description":"Change in open interest","example":100,"nullable":true},"open_interest":{"type":"object","description":"Open interest after the trade as reported by the venue (USD on Deribit inverse). Null when the venue reports no trade-level open interest.","example":806346290,"nullable":true},"oi_before":{"type":"object","description":"Open interest before trade","example":9900,"nullable":true},"maturity":{"type":"object","description":"Maturity code, or 'PERPETUAL' for perpetual swaps","example":"25DEC26"},"days_to_expiry":{"type":"object","description":"Fractional days to expiry (dated futures). Omitted when not applicable.","example":84.8},"basis":{"type":"object","description":"Trade price minus index price. Null when no usable index price is attached.","example":23.07,"nullable":true},"funding":{"type":"object","description":"Perpetual funding rate attached to the trade, as a decimal. Omitted when not reported.","example":0.00005811}},"required":["instrument_name","timestamp","date","trade_id","direction","amount","price"]},"LiquidationEntity":{"type":"object","properties":{"instrument_name":{"type":"string","description":"Instrument identifier","example":"BTCUSDT"},"timestamp":{"type":"number","description":"Unix timestamp in milliseconds","example":1234567890123},"date":{"type":"string","description":"ISO 8601 UTC event time derived from timestamp","example":"2025-01-15T14:30:00.000Z"},"exchange":{"type":"string","description":"Exchange name","example":"binance"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"direction":{"type":"string","description":"Liquidation order direction (buy = short squeeze, sell = long liquidation)","enum":["buy","sell"],"example":"sell"},"position_side":{"type":"string","description":"Position side being liquidated","enum":["long","short"],"example":"long"},"category":{"type":"string","description":"Liquidation category","example":"forced"},"price":{"type":"number","description":"Execution price","example":68187.4},"amount":{"type":"number","description":"Venue-native liquidation quantity (contracts or coin depending on venue; per-venue convention unverified). Use amount_base or amount_usd to compare venues.","example":0.075},"amount_base":{"type":"object","description":"Amount in base currency","example":0.075,"nullable":true},"amount_usd":{"type":"object","description":"USD value: price × amount_base. min_amount_usd filters on this field.","example":5114.05,"nullable":true},"mark_price":{"type":"object","description":"Mark price at time of liquidation","example":68187.5,"nullable":true},"index_price":{"type":"object","description":"Index price at time of liquidation","example":68222.5,"nullable":true},"margin_type":{"type":"string","description":"Margin type","example":"linear"},"maturity":{"type":"object","description":"Maturity date (null for perpetuals)","example":"16OCT26","nullable":true},"days_to_expiry":{"type":"object","description":"Days to expiry (null for perpetuals)","example":90,"nullable":true},"trade_id":{"type":"object","description":"Trade identifier","nullable":true},"order_id":{"type":"object","description":"Order identifier","nullable":true}},"required":["instrument_name","timestamp","date","exchange","currency","direction","position_side","category","price","amount"]},"ObservedDataCoverageEntity":{"type":"object","properties":{"source_id":{"type":"string","description":"Stable identifier for the endpoint source mapping used to classify this response.","example":"perpetuals.liquidations"},"exchange_supported":{"type":"object","description":"Whether the requested exchange is served by this endpoint.","example":true},"instrument_eligible":{"type":"object","description":"Whether the exact exchange/instrument/product selector exists in authoritative instrument metadata or historical rows. Null when no instrument selector was supplied or eligibility was not evaluated.","example":true,"nullable":true},"earliest_observed_at":{"type":"object","description":"Earliest stored row observed for the selected endpoint scope. This is an observed-history boundary, not a completeness watermark.","example":"2025-09-26T13:13:29.578Z","nullable":true},"latest_observed_at":{"type":"object","description":"Latest stored row observed for the selected endpoint scope. This is an observed-history boundary, not a completeness watermark or maximum-lag guarantee.","example":"2026-08-07T08:10:00.000Z","nullable":true}},"required":["source_id","exchange_supported"]},"DataAvailabilityPaginationMetaEntity":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for fetching the next page of results. Pass this value as the cursor parameter in the next request. Null indicates no more pages.","example":"eyJpZCI6MTIzNDU2NzgsInRzIjoxNjQwOTk1MjAwfQ==","nullable":true},"has_more":{"type":"boolean","description":"True when another page exists for the same filters and sort direction. This is derived with a one-bucket lookahead rather than inferred from the number of rows returned."},"empty_reason":{"type":"string","description":"Machine-readable explanation when data is empty. Null when rows are returned. outside_retention means the endpoint keeps a rolling retention window and the requested interval ends before it; outside_entitlement means the rows exist but the requested interval starts before the history the API key is entitled to (see entitlement.required_product); outside_coverage means the interval ends before the earliest stored row; no_matching_data means the selector is eligible and the interval overlaps observed coverage, but no stored rows matched all request filters.","enum":["unsupported_exchange","ineligible_instrument","outside_retention","outside_entitlement","outside_coverage","no_matching_data","classification_unavailable"],"nullable":true,"example":"no_matching_data"},"coverage":{"description":"Observed source coverage used to classify an empty response. Its timestamps are not source-completeness watermarks.","allOf":[{"$ref":"#/components/schemas/ObservedDataCoverageEntity"}]},"completeness":{"type":"object","description":"Gap-aware persistence-completeness interval for closed 1m source rows. Every minute in the half-open interval is persisted; a missing minute stops certification. complete_through is the exclusive monotonic boundary, and published corrections or backfills may still revise earlier values.","example":{"status":"available","certification":"contiguous_persisted_minutes","complete_from":"2026-08-08T06:20:00.000Z","complete_through":"2026-08-08T06:25:00.000Z","complete_from_inclusive":true,"complete_through_inclusive":false,"monotonic":true,"monotonic_boundary":"complete_through","revisions_possible":true,"certified_at":"2026-08-08T06:20:06.000Z","updated_at":"2026-08-08T06:25:06.000Z","unavailable_reason":null,"scope":{"endpoint_id":"perpetuals.ohlcvt","source_ids":["perpetuals.ohlcvt"],"exchange":"deribit","instrument_name":"BTC-PERPETUAL"}}},"entitlement":{"type":"object","description":"History the API key may query, derived from its plan. history_months is null when unrestricted. Present only on deployments that publish entitlement metadata.","example":{"history_months":3,"source":"plan","required_product":null}},"generation":{"type":"object","description":"For endpoints whose stored series changed meaning at boundary_at: the labels of each generation and which one the requested interval falls in.","example":{"boundary_at":"2026-09-03T00:00:00.000Z","before":"large_trades_only","after":"full_raw","requested":"after"}}},"required":["next_cursor"]},"FuturesOhlcvtEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"open":{"type":"number","description":"First open in the bucket. Trade price, or the mark price on synthetic mark-filled minutes without executions (trades_count = 0).","example":42150.5},"high":{"type":"number","description":"Maximum high in the bucket; synthetic mark-filled minutes contribute their mark price.","example":42890.75},"low":{"type":"number","description":"Minimum low in the bucket; synthetic mark-filled minutes contribute their mark price.","example":41920.25},"close":{"type":"number","description":"Last close in the bucket; trade price or, on a synthetic mark-filled minute, the mark price.","example":42500},"vwap":{"type":"number","description":"Volume-weighted average price across the interval. When total traded volume is zero, the mean of the minute reference prices is retained.","example":42350.5},"volume":{"type":"number","description":"Traded volume (buy + sell) in the bucket, in the venue-native size unit; 0 on synthetic candles.","example":2700.8},"buy_volume":{"type":"number","description":"Buy-side volume (direction = buy)","example":1500.5},"sell_volume":{"type":"number","description":"Sell-side volume (direction = sell)","example":1200.3},"trades_count":{"type":"number","description":"Number of trades (buy + sell); 0 identifies a synthetic mark-filled candle.","example":270},"buy_trades_count":{"type":"number","description":"Number of buy trades","example":150},"sell_trades_count":{"type":"number","description":"Number of sell trades","example":120},"liquidation_short_volume":{"type":"number","description":"Volume from short liquidations (forced buy orders)","example":50.25,"nullable":true},"liquidation_long_volume":{"type":"number","description":"Volume from long liquidations (forced sell orders)","example":75.5,"nullable":true},"block_trade_buy_volume":{"type":"number","description":"Volume from block trade buys","example":100,"nullable":true},"block_trade_sell_volume":{"type":"number","description":"Volume from block trade sells","example":150,"nullable":true},"mark_price":{"type":"number","description":"Mark price at the final observed minute of the bucket; not OHLC.","example":42500.5,"nullable":true},"index_price":{"type":"number","description":"Index price at the final observed minute of the bucket; not OHLC.","example":42505,"nullable":true},"days_to_expiry":{"type":"number","description":"Fractional days until expiry for dated futures, taken from one source minute of the bucket (not necessarily its close). For perpetual instruments the field is not applicable and may be omitted or returned as null; clients should treat those forms as equivalent.","example":90.5,"nullable":true}},"required":["date","open","high","low","close","vwap","volume","buy_volume","sell_volume","trades_count","buy_trades_count","sell_trades_count"]},"FuturesTickerDataEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"mark_price":{"type":"number","description":"Mark price at the final observed minute of the bucket (quote currency).","nullable":true},"index_price":{"type":"number","description":"Exchange index price at the final observed minute of the bucket.","nullable":true},"bid_price":{"type":"number","description":"Best bid price at the final observed minute of the bucket.","nullable":true},"ask_price":{"type":"number","description":"Best ask price at the final observed minute of the bucket.","nullable":true},"bid_ask_spread":{"type":"number","description":"Ask minus bid at the final observed minute of the bucket.","nullable":true},"bid_size":{"type":"number","description":"Displayed best-bid size at the final observed minute (venue-native size unit).","nullable":true},"ask_size":{"type":"number","description":"Displayed best-ask size at the final observed minute (venue-native size unit).","nullable":true},"oi":{"type":"number","description":"Open interest at the final observed minute, in base coin (venue conventions in the route definition).","nullable":true},"volume_usd_24h":{"type":"number","description":"Venue-reported rolling 24-hour USD volume at the final observed minute; not a bucket sum.","nullable":true},"open":{"type":"number","description":"Snapshot only: first trade-candle open of the minute/bucket (mark price on synthetic candles)."},"high":{"type":"number","description":"Snapshot only: maximum trade-candle high of the minute/bucket."},"low":{"type":"number","description":"Snapshot only: minimum trade-candle low of the minute/bucket."},"close":{"type":"number","description":"Snapshot only: last trade-candle close of the minute/bucket."},"vwap":{"type":"number","description":"Snapshot only: traded-volume-weighted average price of the minute/bucket."},"buy_volume":{"type":"number","description":"Snapshot only: buy volume traded in the minute/bucket (venue-native size unit)."},"sell_volume":{"type":"number","description":"Snapshot only: sell volume traded in the minute/bucket (venue-native size unit)."},"volume":{"type":"number","description":"Snapshot only: buy_volume + sell_volume."},"buy_trades_count":{"type":"number","description":"Snapshot only: number of buy trades in the minute/bucket."},"sell_trades_count":{"type":"number","description":"Snapshot only: number of sell trades in the minute/bucket."},"trades_count":{"type":"number","description":"Snapshot only: number of trades in the minute/bucket."},"days_to_expiry":{"type":"number","description":"Fractional days until expiry at the final observed minute of the bucket."}},"required":["date","mark_price","index_price","bid_price","ask_price","bid_ask_spread","bid_size","ask_size","oi","volume_usd_24h"]},"FuturesOhlcCarryEntity":{"type":"object","properties":{"timestamp":{"type":"number","description":"UTC bucket start in Unix milliseconds","example":1733788800000},"minute":{"type":"string","description":"UTC bucket start as ISO 8601. This route has no date field.","example":"2024-12-10T00:00:00.000Z"},"basis_open":{"type":"number","description":"Observed mark − index at the first source minute with a usable index","example":25.5,"nullable":true},"basis_high":{"type":"number","description":"Synthetic upper bound: maximum of mark_high − index_low; not an observed basis","example":28.1,"nullable":true},"basis_low":{"type":"number","description":"Synthetic lower bound: minimum of mark_low − index_high; not an observed basis","example":24.2,"nullable":true},"basis_close":{"type":"number","description":"Observed mark − index at the last source minute with a usable index","example":27.1,"nullable":true},"days_to_expiry":{"type":"number","description":"Fractional days until expiry at the last source minute of the bucket","example":45.5,"nullable":true},"annualized_carry":{"type":"number","description":"Annualized carry (%): basis_close / final index price × 365 / days_to_expiry × 100. Null when the index or days_to_expiry is missing or non-positive.","example":12.5,"nullable":true}},"required":["timestamp","minute"]},"VolSurfaceEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"maturity":{"type":"string","description":"Maturity date string","example":"16OCT26"},"days_to_expiry":{"type":"number","description":"Days until expiry","example":25.5},"underlying_price":{"type":"number","description":"Underlying asset price","example":103722.83},"atm_iv":{"type":"number","description":"At-the-money implied volatility (call with delta closest to 0.5)","example":47.62,"nullable":true},"call_25d_iv":{"type":"number","description":"25-delta call implied volatility","example":43.8,"nullable":true},"put_25d_iv":{"type":"number","description":"25-delta put implied volatility","example":52.1,"nullable":true},"skew_25d":{"type":"number","description":"25-delta skew (put_25d_iv - call_25d_iv)","example":8.3,"nullable":true},"butterfly_25d":{"type":"number","description":"25-delta butterfly ((call_25d_iv + put_25d_iv) / 2 - atm_iv)","example":0.33,"nullable":true},"call_10d_iv":{"type":"number","description":"10-delta call implied volatility","example":40.1,"nullable":true},"put_10d_iv":{"type":"number","description":"10-delta put implied volatility","example":58.3,"nullable":true},"skew_10d":{"type":"number","description":"10-delta skew (put_10d_iv - call_10d_iv)","example":18.2,"nullable":true},"butterfly_10d":{"type":"number","description":"10-delta butterfly ((call_10d_iv + put_10d_iv) / 2 - atm_iv)","example":1.58,"nullable":true}},"required":["date","exchange","currency","maturity","days_to_expiry","underlying_price"]},"TermStructureEntity":{"type":"object","properties":{"date":{"type":"string","description":"ISO 8601 timestamp for this data point (present in time-series mode only)","example":"2026-02-01T12:00:00.000Z","nullable":true},"tenor":{"type":"number","description":"Constant-maturity tenor in days","example":30},"atm_iv":{"type":"number","description":"Interpolated ATM implied volatility at this tenor","example":38.55,"nullable":true},"call_25d_iv":{"type":"number","description":"Interpolated 25-delta call implied volatility at this tenor","example":36.2,"nullable":true},"put_25d_iv":{"type":"number","description":"Interpolated 25-delta put implied volatility at this tenor","example":41.9,"nullable":true},"skew_25d":{"type":"number","description":"25-delta skew (put_25d_iv - call_25d_iv)","example":5.7,"nullable":true},"butterfly_25d":{"type":"number","description":"25-delta butterfly ((call_25d_iv + put_25d_iv) / 2 - atm_iv)","example":0.5,"nullable":true},"call_10d_iv":{"type":"number","description":"Interpolated 10-delta call implied volatility at this tenor","example":33.1,"nullable":true},"put_10d_iv":{"type":"number","description":"Interpolated 10-delta put implied volatility at this tenor","example":48.5,"nullable":true},"skew_10d":{"type":"number","description":"10-delta skew (put_10d_iv - call_10d_iv)","example":15.4,"nullable":true},"butterfly_10d":{"type":"number","description":"10-delta butterfly ((call_10d_iv + put_10d_iv) / 2 - atm_iv)","example":2.25,"nullable":true}},"required":["tenor"]},"SpotOhlcvtEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"instrument_name":{"type":"string","description":"Instrument name","example":"BTC-16OCT26"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"open":{"type":"number","description":"Open of the bucket (first stored minute). Flat zero-volume candles carry a price without a trade, so this is not evidence of an execution","example":42150.5},"high":{"type":"number","description":"Highest price in the bucket (maximum of the minute highs)","example":42890.75},"low":{"type":"number","description":"Lowest price in the bucket (minimum of the minute lows)","example":41920.25},"close":{"type":"number","description":"Close of the bucket (last stored minute)","example":42500},"vwap":{"type":"number","description":"Base-volume-weighted average price; a bucket with zero volume reports the mean of its minute VWAP values","example":42350.5},"volume":{"type":"number","description":"Total volume in base currency (buy + sell)","example":2700.8},"buy_volume":{"type":"number","description":"Buy-side volume in base currency","example":1500.5},"sell_volume":{"type":"number","description":"Sell-side volume in base currency","example":1200.3},"quote_volume":{"type":"number","description":"Total volume in quote currency (buy + sell)","example":114500000},"buy_quote_volume":{"type":"number","description":"Buy-side volume in quote currency","example":63500000},"sell_quote_volume":{"type":"number","description":"Sell-side volume in quote currency","example":51000000},"trades_count":{"type":"number","description":"Total number of trades (buy + sell)","example":270},"buy_trades_count":{"type":"number","description":"Number of buy trades","example":150},"sell_trades_count":{"type":"number","description":"Number of sell trades","example":120},"first_trade_id":{"type":"string","description":"First trade ID in the time bucket","example":"trade_100001"},"last_trade_id":{"type":"string","description":"Last trade ID in the time bucket","example":"trade_100270"},"data_source":{"type":"string","description":"Data source identifier","example":"rest"},"quote_currency":{"type":"string","description":"Quote currency","example":"USDT"}},"required":["date","open","high","low","close","vwap","volume","buy_volume","sell_volume","quote_volume","buy_quote_volume","sell_quote_volume","trades_count","buy_trades_count","sell_trades_count","first_trade_id","last_trade_id","data_source","quote_currency"]},"RealizedVolatilityEntity":{"type":"object","properties":{"date":{"type":"string","description":"Date in ISO 8601 format (UTC)","example":"2024-12-10T00:00:00.000Z","format":"date-time"},"exchange":{"type":"string","description":"Exchange name","example":"deribit"},"currency":{"type":"string","description":"Base currency","example":"BTC"},"instrument_name":{"type":"string","description":"Full instrument identifier","example":"BTC-PERPETUAL"},"frequency":{"type":"string","description":"Sampling frequency used to compute realised volatility","example":"daily"},"window_days":{"type":"number","description":"Realised volatility lookback window in days","example":30},"estimator":{"type":"string","description":"Realised volatility estimator","example":"close_to_close"},"rv_annualized":{"type":"number","description":"Annualized realised volatility, expressed as a percentage (e.g. 38.76 = 38.76% annualised vol).","example":38.76},"sample_count":{"type":"number","description":"Number of samples used to compute the metric","example":30}},"required":["date","exchange","currency","instrument_name","frequency","window_days","estimator","rv_annualized","sample_count"]},"VolSurfaceCatalogEntity":{"type":"object","properties":{"exchange":{"type":"string","example":"deribit"},"currency":{"type":"string","example":"BTC"},"margin":{"type":"string","example":"inverse","enum":["inverse","linear"]},"model":{"type":"string","example":"svi"},"date":{"type":"object","example":"2026-06-08T12:00:00.000Z","format":"date-time"},"index_price":{"type":"object","example":104000.25},"n_slices":{"type":"object","example":10},"n_forward_knots":{"type":"object","example":7}},"required":["exchange","currency","margin","model","date","index_price","n_slices","n_forward_knots"]},"VolSurfaceSnapshotEntity":{"type":"object","properties":{"date":{"type":"object","example":"2026-06-08T12:00:00.000Z","format":"date-time"},"exchange":{"type":"string","example":"deribit"},"currency":{"type":"string","example":"BTC"},"margin":{"type":"string","example":"inverse","enum":["inverse","linear"]},"model":{"type":"string","example":"svi"},"index_price":{"type":"object","example":104000.25},"n_slices":{"type":"object","example":10},"n_forward_knots":{"type":"object","example":7},"calendar_arb_pairs_checked":{"type":"object","example":9},"calendar_arb_violating_pairs":{"type":"object","example":0},"calendar_arb_in_range_violations":{"type":"object","example":0},"calendar_arb_max_excess":{"type":"object","example":0},"forward_curve":{"type":"object","description":"Forward curve JSON decoded when possible."}},"required":["date","exchange","currency","margin","model","index_price","n_slices","n_forward_knots","calendar_arb_pairs_checked","calendar_arb_violating_pairs","calendar_arb_in_range_violations","calendar_arb_max_excess"]},"VolSurfaceSliceEntity":{"type":"object","properties":{"date":{"type":"object","example":"2026-06-08T12:00:00.000Z","format":"date-time"},"exchange":{"type":"string","example":"deribit"},"currency":{"type":"string","example":"BTC"},"margin":{"type":"string","example":"inverse","enum":["inverse","linear"]},"model":{"type":"string","example":"svi"},"model_params":{"type":"object","description":"Model-native parameter JSON decoded when possible."},"expiry":{"type":"object","example":"2026-06-26T08:00:00.000Z","format":"date-time"}},"required":["date","exchange","currency","margin","model","expiry"]},"VolSurfaceTermStructureRowEntity":{"type":"object","properties":{"date":{"type":"object","example":"2026-06-08T12:00:00.000Z","format":"date-time"},"exchange":{"type":"string","example":"deribit"},"currency":{"type":"string","example":"BTC"},"margin":{"type":"string","example":"inverse","enum":["inverse","linear"]},"tenor_days":{"type":"object","example":30}},"required":["date","exchange","currency","margin","tenor_days"]},"VolSurfaceStrikeEntity":{"type":"object","properties":{"date":{"type":"object","example":"2026-06-08T12:00:00.000Z","format":"date-time"},"exchange":{"type":"string","example":"deribit"},"currency":{"type":"string","example":"BTC"},"margin":{"type":"string","example":"inverse","enum":["inverse","linear"]},"expiry":{"type":"object","example":"2026-06-26T08:00:00.000Z","format":"date-time"},"instrument":{"type":"string","example":"BTC-26JUN26-100000-C"},"strike":{"type":"object","example":100000},"option_type":{"type":"string","example":"C","enum":["C","P"]}},"required":["date","exchange","currency","margin","expiry","instrument","strike","option_type"]},"VolSurfaceRiskPositionDto":{"type":"object","properties":{"instrument":{"type":"string","description":"Instrument identifier.","example":"BTC-26JUN26-100000-C"},"kind":{"type":"string","description":"Position kind. Empty defaults to option in the engine.","enum":["option","perpetual","future","spot"],"default":"option"},"exchange":{"type":"string","description":"Exchange. Defaults from the request if omitted.","example":"deribit"},"currency":{"type":"string","description":"Base currency. Defaults from the request if omitted.","example":"BTC"},"margin":{"type":"string","description":"Margin book. Spot must be linear; options/perps/futures default to inverse when omitted by the engine.","enum":["inverse","linear"],"example":"inverse"},"strike":{"type":"number","description":"Option strike. Required for option positions.","example":100000},"expiry":{"type":"string","description":"Option or dated future expiry. Accepts ISO 8601 (2026-06-26T08:00:00Z or 2026-06-26) or any exchange-native date code: DDMMMYY (26JUN26), YYMMDD (260626), YYYYMMDD (20260626). Date-only forms resolve to 08:00 UTC settlement. Omit on an option to derive it from the instrument name.","example":"26JUN26"},"option_type":{"type":"string","description":"Option type. Required for option positions.","enum":["C","P"],"example":"C"},"quantity":{"type":"number","description":"Position quantity. Positive is long, negative is short.","example":2.5},"entry_price":{"type":"number","description":"Entry price for PnL calculations.","example":0.075},"entry_spot":{"type":"number","description":"Entry spot used for inverse PnL conversion.","example":96000},"mark_price":{"type":"number","description":"Current mark price for delta-one positions.","example":104000},"funding_pnl_usd":{"type":"number","description":"Caller-supplied realized funding PnL in USD.","example":-12.5},"funding_pnl_coin":{"type":"number","description":"Caller-supplied realized funding PnL in coin.","example":-0.00012}},"required":["instrument","quantity"]},"VolSurfaceRiskDecomposeRequestDto":{"type":"object","properties":{"exchange":{"type":"string","description":"Exchange used for risk request routing.","example":"deribit"},"currency":{"type":"string","description":"Base currency used for risk request routing.","example":"BTC"},"positions":{"description":"Portfolio positions to price or risk-analyze.","type":"array","items":{"$ref":"#/components/schemas/VolSurfaceRiskPositionDto"}},"timeout_ms":{"type":"number","description":"Risk request timeout in milliseconds.","default":5000,"minimum":100,"maximum":30000}},"required":["exchange","currency","positions"]},"VolSurfaceScenarioShockDto":{"type":"object","properties":{"name":{"type":"string","description":"Scenario name.","example":"Crash"},"spot_shift_pct":{"type":"number","description":"Spot shift in percent.","example":-20},"level_shift_vol":{"type":"number","description":"Parallel volatility shift in vol points.","example":15,"default":0},"skew_shift":{"type":"number","description":"Skew shock.","example":-0.15,"default":0},"curvature_shift":{"type":"number","description":"Curvature shock.","example":0,"default":0},"time_decay_days":{"type":"number","description":"Time decay shock in days.","example":1,"default":0}},"required":["spot_shift_pct"]},"VolSurfaceRiskScenarioRequestDto":{"type":"object","properties":{"exchange":{"type":"string","description":"Exchange used for risk request routing.","example":"deribit"},"currency":{"type":"string","description":"Base currency used for risk request routing.","example":"BTC"},"positions":{"description":"Portfolio positions to price or risk-analyze.","type":"array","items":{"$ref":"#/components/schemas/VolSurfaceRiskPositionDto"}},"timeout_ms":{"type":"number","description":"Risk request timeout in milliseconds.","default":5000,"minimum":100,"maximum":30000},"shock":{"description":"Scenario shock definition.","allOf":[{"$ref":"#/components/schemas/VolSurfaceScenarioShockDto"}]}},"required":["exchange","currency","positions","shock"]},"VolSurfaceRiskLadderRequestDto":{"type":"object","properties":{"exchange":{"type":"string","description":"Exchange used for risk request routing.","example":"deribit"},"currency":{"type":"string","description":"Base currency used for risk request routing.","example":"BTC"},"positions":{"description":"Portfolio positions to price or risk-analyze.","type":"array","items":{"$ref":"#/components/schemas/VolSurfaceRiskPositionDto"}},"timeout_ms":{"type":"number","description":"Risk request timeout in milliseconds.","default":5000,"minimum":100,"maximum":30000},"spot_shifts_pct":{"description":"Spot-shift grid rows in percent.","example":[-20,-10,-5,0,5,10,20],"type":"array","items":{"type":"number"}},"vol_shifts":{"description":"Parallel vol-shift grid columns in vol points.","example":[-10,-5,0,5,10],"type":"array","items":{"type":"number"}},"skew_shift":{"type":"number","description":"Fixed skew shock applied to every cell.","example":0,"default":0},"curvature_shift":{"type":"number","description":"Fixed curvature shock applied to every cell.","example":0,"default":0},"time_decay_days":{"type":"number","description":"Fixed time decay applied to every cell, in days.","example":0,"default":0}},"required":["exchange","currency","positions","spot_shifts_pct","vol_shifts"]},"ErrorResponseDto":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code","example":400},"message":{"description":"Error message(s). Can be a string or array of validation errors","example":["symbol must be a string","exchange is required"],"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string","description":"Error type identifier","example":"Bad Request"},"timestamp":{"type":"string","description":"Timestamp when the error occurred","example":"2024-01-01T12:00:00Z","format":"date-time"},"path":{"type":"string","description":"API request path that caused the error","example":"/api/v1/ohlc/price"}},"required":["statusCode","message","error"]},"UnauthorizedErrorDto":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP 401 status code","example":401,"default":401},"message":{"description":"Unauthorized error message","example":"Invalid API key","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":"Unauthorized"},"error":{"type":"string","description":"Error type","example":"Unauthorized","default":"Unauthorized"},"timestamp":{"type":"string","description":"Timestamp when the error occurred","example":"2024-01-01T12:00:00Z","format":"date-time"},"path":{"type":"string","description":"API request path that caused the error","example":"/api/v1/ohlc/price"}},"required":["statusCode","message","error"]},"RateLimitErrorDto":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP 429 status code","example":429,"default":429},"message":{"description":"Rate limit error message","example":"Rate limit exceeded. Please retry after 60 seconds","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":"Too Many Requests"},"error":{"type":"string","description":"Error type","example":"Too Many Requests","default":"Too Many Requests"},"timestamp":{"type":"string","description":"Timestamp when the error occurred","example":"2024-01-01T12:00:00Z","format":"date-time"},"path":{"type":"string","description":"API request path that caused the error","example":"/api/v1/ohlc/price"},"retryAfter":{"type":"number","description":"Number of seconds to wait before retrying","example":60},"limit":{"type":"number","description":"Current rate limit quota","example":1000},"remaining":{"type":"number","description":"Number of requests remaining in current window","example":0}},"required":["statusCode","message","error"]},"ValidationErrorDto":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP 400 status code","example":400,"default":400},"message":{"description":"Validation error messages","example":["symbol must be a string","interval must be one of: 1m, 5m, 15m, 30m, 1h, 4h, 6h, 1d"],"type":"array","items":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"error":{"type":"string","description":"Error type","example":"Bad Request","default":"Bad Request"},"timestamp":{"type":"string","description":"Timestamp when the error occurred","example":"2024-01-01T12:00:00Z","format":"date-time"},"path":{"type":"string","description":"API request path that caused the error","example":"/api/v1/ohlc/price"}},"required":["statusCode","message","error"]},"ServerErrorDto":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP 500 status code","example":500,"default":500},"message":{"description":"Internal server error message","example":"An unexpected error occurred. Please try again later.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":"Internal Server Error"},"error":{"type":"string","description":"Error type","example":"Internal Server Error","default":"Internal Server Error"},"timestamp":{"type":"string","description":"Timestamp when the error occurred","example":"2024-01-01T12:00:00Z","format":"date-time"},"path":{"type":"string","description":"API request path that caused the error","example":"/api/v1/ohlc/price"},"errorId":{"type":"string","description":"Error tracking ID for support reference","example":"ERR-123456-ABCD"}},"required":["statusCode","message","error"]},"BacktestRequest":{"type":"object","properties":{"exchange":{"type":"string","enum":["deribit"]},"currency":{"type":"string","enum":["BTC","ETH","BTC_USDC","ETH_USDC","SOL","XRP","AVAX","TRX","HYPE"],"description":"Deribit product: BTC/ETH are inverse; BTC_USDC/ETH_USDC and altcoins are USDC-settled. See strategies.products for capital currency and contract sizes."},"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))$"},"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))$"},"initial_capital":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":1000000000,"description":"One shared balance in the product collateral currency: BTC/ETH for inverse products, USDC for linear products."},"capital_model":{"type":"string","enum":["shared"]},"margin_model":{"type":"string","enum":["research_stress_v1"]},"resolution":{"description":"Simulation/valuation/risk interval; defaults to 1m. Entries remain scheduled on whole UTC hours.","type":"string","enum":["1m","1h"]},"equity_interval":{"description":"Equity-curve reporting interval; defaults to 1h plus execution/terminal points. Does not change simulation/risk frequency.","type":"string","enum":["1m","1h"]},"execution_model":{"type":"string","enum":["bid_ask","mark"]},"fees":{"type":"object","properties":{"trade_rate":{"type":"number","minimum":0,"maximum":0.1},"trade_premium_cap":{"type":"number","minimum":0,"maximum":1},"settlement_rate":{"type":"number","minimum":0,"maximum":0.1},"settlement_premium_cap":{"type":"number","minimum":0,"maximum":1}},"required":["trade_rate","trade_premium_cap","settlement_rate","settlement_premium_cap"],"additionalProperties":false},"slippage_bps":{"type":"number","minimum":0,"maximum":1000},"missing_entry_policy":{"type":"string","enum":["fail","skip"],"description":"Scheduled entries of flat components only. After entry retries are exhausted, fail stops the job; skip records a rejected batch. Applies to missing contracts/quotes, missing or insufficient displayed liquidity and insufficient margin. Margin failures are immediate, not retried. Rolls of held positions are governed by unfilled_roll_policy instead."},"entry_retry_minutes":{"description":"Entry retry budget in minutes, default 120 at both resolutions. Every simultaneous entry leg must fill together on a fresh observed minute; at 1h resolution the engine reads the following minutes only while an entry is pending, then returns to the hourly grid. Zero disables retries (one attempt at the scheduled hour). Original schedule and expiry targets remain fixed.","type":"integer","minimum":0,"maximum":120},"unfilled_roll_policy":{"description":"What happens when a scheduled roll of held positions cannot fully execute within its 120-minute retry window, at either resolution. stop (default) ends the simulation there with completion_status partial, termination roll_unfilled and the positions reported open. hold_position keeps the held positions unchanged, records the roll in skipped_rolls and continues: they are valued, risk-checked and settled as usual, and the component tries again at its next scheduled roll.","type":"string","enum":["stop","hold_position"]},"missing_held_quote_policy":{"description":"Defaults to carry_forward on REST, MCP and dashboard at both resolutions. Missing observations carry the last valid earlier valuation with its original timestamp, without a gap-duration failure. No stale fills or risk decisions. Scheduled rolls wait for fresh data up to their retry budget, then return a partial report; missing terminal observations preserve open positions. Explicit fail and minute-only skip_short_gaps remain strict opt-ins.","type":"string","enum":["fail","skip_short_gaps","carry_forward"]},"carry_forward_warning_minutes":{"description":"Consecutive-gap warning threshold, default 60 minutes. Reporting only: longer gaps continue with flagged last-observed valuations, never fabricated executions.","type":"integer","minimum":1,"maximum":1440},"max_carry_forward_minutes":{"description":"Deprecated compatibility alias for carry_forward_warning_minutes in v1.8. It is a warning threshold, not a failure limit. The new field wins when both are supplied.","type":"integer","minimum":1,"maximum":1440},"risk_limits":{"type":"object","properties":{"stop_loss":{"type":"number","minimum":0,"exclusiveMinimum":true},"take_profit":{"type":"number","minimum":0,"exclusiveMinimum":true}},"additionalProperties":false},"components":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"},"first_entry_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 entry at any whole UTC hour within the run. Subsequent rolls retain this UTC hour independently per component."},"roll_every_days":{"type":"integer","minimum":1,"maximum":365,"description":"Days between entries, at the first entry UTC hour."},"expiry_days":{"type":"integer","minimum":1,"maximum":365,"description":"Target UTC calendar-date offset from each entry date, at 08:00 UTC; exact unless expiry_selection is explicitly nearest_listed."},"expiry_selection":{"description":"Defaults to exact for compatibility. nearest_listed chooses the expiry closest to the original target among contracts observed at entry; an equal-distance tie chooses the later expiry. If the initial catalogue is absent, entry retries may discover it at their actual observation time. No quote/filter/liquidity fallback to a different expiry.","type":"string","enum":["exact","nearest_listed"]},"legs":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"},"option_type":{"type":"string","enum":["C","P"]},"side":{"type":"string","enum":["buy","sell"]},"quantity":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":10000},"strike_rank":{"type":"integer","minimum":1,"maximum":8,"description":"Orders strikes within a component: every leg with a higher rank gets a strictly higher strike, and legs sharing a rank share one strike. A call butterfly is rank 1 (low), 2 (middle, two legs or double quantity), 3 (high). Selections must be consistent with this order, e.g. call deltas decreasing and put deltas increasing in absolute value as the rank rises; otherwise no ladder exists and the entry is rejected with detail NO_ASCENDING_LADDER."},"selection":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["atm"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["moneyness"]},"value":{"type":"string","enum":["OTM","ITM"]}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["delta"]},"value":{"type":"number","minimum":0,"maximum":1}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["strike"]},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Numeric strike, e.g. 1.06. Deribit instrument names write decimal strikes with a d separator (XRP_USDC-26SEP26-1d06-C is strike 1.06); pass the number here, not the name fragment."}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["strike_distance"]},"value":{"type":"number","minimum":0,"maximum":10}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vega"]},"value":{"type":"number","minimum":0}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["gamma"]},"value":{"type":"number","minimum":0}},"required":["kind","value"],"additionalProperties":false}]},"filters":{"type":"object","properties":{"min_open_interest":{"type":"number","minimum":0},"min_volume":{"type":"number","minimum":0},"max_spread_fraction":{"type":"number","minimum":0,"maximum":1},"min_abs_delta":{"type":"number","minimum":0,"maximum":1},"max_abs_delta":{"type":"number","minimum":0,"maximum":1},"max_abs_gamma":{"type":"number","minimum":0},"min_vega":{"type":"number","minimum":0},"max_vega":{"type":"number","minimum":0}},"additionalProperties":false}},"required":["id","option_type","side","quantity","strike_rank","selection"],"additionalProperties":false}},"risk_limits":{"type":"object","properties":{"stop_loss":{"type":"number","minimum":0,"exclusiveMinimum":true},"take_profit":{"type":"number","minimum":0,"exclusiveMinimum":true}},"additionalProperties":false}},"required":["id","first_entry_at","roll_every_days","expiry_days","legs"],"additionalProperties":false}}},"required":["exchange","currency","start","end","initial_capital","capital_model","margin_model","fees","slippage_bps","missing_entry_policy","components"],"additionalProperties":false},"BacktestJob":{"type":"object","properties":{"job_id":{"type":"string","pattern":"^bt_[a-f0-9]{64}$"},"status":{"type":"string","enum":["queued","running","cancel_requested","completed","failed","cancelled"]},"progress":{"type":"number","minimum":0,"maximum":100,"description":"Completion percentage, not remaining runtime."},"engine_version":{"type":"string"},"build_sha":{"description":"Worker build once claimed, otherwise submitting API build. Inspect build_sha_source; a queued job has no known worker build.","nullable":true,"type":"string","pattern":"^[a-f0-9]{40}$"},"build_sha_source":{"type":"string","enum":["worker","submission","unavailable"]},"submission_build_sha":{"nullable":true,"type":"string","pattern":"^[a-f0-9]{40}$"},"worker_build_sha":{"nullable":true,"type":"string","pattern":"^[a-f0-9]{40}$"},"submitted_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))$"},"completion_status":{"type":"string","enum":["partial","full_period"]},"termination":{"type":"string"},"expires_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":"Upper retention bound; bounded recent-result storage may evict a job earlier."},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"coordinate":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["code","message"],"additionalProperties":false}},"required":["job_id","status","progress","engine_version","submitted_at","expires_at"],"additionalProperties":false},"BacktestResultResponse":{"type":"object","properties":{"job_id":{"type":"string","pattern":"^bt_[a-f0-9]{64}$"},"result":{"type":"object","properties":{"engine_version":{"type":"string"},"build_sha":{"nullable":true,"type":"string","pattern":"^[a-f0-9]{40}$"},"currency":{"type":"string","description":"Collateral currency. Monetary amounts use this currency unless labelled otherwise."},"capital_model":{"type":"string","enum":["shared"]},"margin_model":{"type":"string","enum":["research_stress_v1"]},"requested_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))$"},"requested_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))$"},"completed_through":{"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))$"},"termination":{"type":"string","enum":["end","end_with_open_positions","roll_unfilled","margin_call","stop_loss","take_profit"]},"completion_status":{"description":"A completed processing job can contain a partial simulation; always inspect completed_through.","type":"string","enum":["partial","full_period"]},"open_positions":{"type":"array","items":{"type":"object","properties":{"position_id":{"type":"string"},"component_id":{"type":"string"},"leg_id":{"type":"string"},"instrument":{"type":"string"},"signed_quantity":{"type":"number"},"opened_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))$"},"expiry_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))$"},"entry_price":{"type":"number"},"entry_fee":{"type":"number"},"mark_price":{"type":"number"},"mark_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))$"},"valuation_status":{"type":"string","enum":["observed","carried_forward"]},"marked_value":{"type":"number"},"unrealized_pnl_before_fees":{"type":"number"}},"required":["position_id","component_id","leg_id","instrument","signed_quantity","opened_at","expiry_at","entry_price","entry_fee","mark_price","mark_observed_at","marked_value","unrealized_pnl_before_fees"],"additionalProperties":false}},"unfilled_exit":{"type":"object","properties":{"timestamp":{"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))$"},"code":{"type":"string"},"message":{"type":"string"},"coordinate":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["timestamp","code","message"],"additionalProperties":false},"termination_detail":{"type":"object","properties":{"timestamp":{"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))$"},"equity_before_exit":{"type":"number"},"initial_margin_before_exit":{"type":"number"},"maintenance_margin_before_exit":{"type":"number"}},"required":["timestamp","equity_before_exit","initial_margin_before_exit","maintenance_margin_before_exit"],"additionalProperties":false},"summary":{"type":"object","properties":{"initial_capital":{"type":"number"},"ending_equity":{"type":"number"},"net_pnl":{"type":"number"},"total_fees":{"type":"number"},"return_fraction":{"type":"number"},"max_drawdown_fraction":{"type":"number"},"executions":{"type":"integer","minimum":0,"maximum":9007199254740991},"rejected_entries":{"type":"integer","minimum":0,"maximum":9007199254740991},"component_pnl":{"type":"object","additionalProperties":{"type":"number"}},"longest_gap_minutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"settlement_minute_executions":{"type":"integer","minimum":0,"maximum":9007199254740991},"settlement_minute_spread_cost":{"nullable":true,"type":"number"},"spread_cost_vs_mid":{"description":"Sum of spread_cost_vs_mid over every open/close fill that has one. Null when no fill carries it (mark model or no two-sided quote).","nullable":true,"type":"number"},"spread_cost_executions":{"description":"Open/close fills included in spread_cost_vs_mid.","type":"integer","minimum":0,"maximum":9007199254740991}},"required":["initial_capital","ending_equity","net_pnl","total_fees","return_fraction","max_drawdown_fraction","executions","rejected_entries","component_pnl"],"additionalProperties":false},"equity":{"type":"array","items":{"type":"object","properties":{"timestamp":{"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))$"},"valuation_status":{"type":"string","enum":["observed","carried_forward","flat_no_positions"]},"stale_price_timestamps":{"type":"object","additionalProperties":{"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))$"}},"risk_observed":{"type":"boolean"},"margin_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))$"},"cash":{"type":"number"},"option_value":{"type":"number"},"index_price":{"nullable":true,"type":"number"},"index_price_observed_at":{"nullable":true,"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))$"},"index_price_status":{"type":"string","enum":["observed","carried_forward","unavailable"]},"equity":{"type":"number"},"pnl":{"type":"number"},"initial_margin":{"type":"number"},"maintenance_margin":{"type":"number"},"component_pnl":{"type":"object","additionalProperties":{"type":"number"}},"open_positions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["timestamp","cash","option_value","equity","pnl","initial_margin","maintenance_margin","component_pnl","open_positions"],"additionalProperties":false}},"executions":{"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timestamp":{"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))$"},"component_id":{"type":"string"},"leg_id":{"type":"string"},"position_id":{"type":"string"},"instrument":{"type":"string"},"event":{"type":"string","enum":["open","close","settlement"]},"execution_basis":{"type":"string","enum":["historical_bid_ask","modeled_mark","official_delivery"]},"reason":{"type":"string","enum":["scheduled_entry","roll","expiry","end","stop_loss","take_profit","margin_call"]},"signed_quantity":{"type":"number","description":"Signed contracts: positive buy, negative sell."},"price":{"type":"number","description":"Quoted price in collateral per base unit. Cashflow also includes the contract_size in assumptions.product; signed_quantity is contracts."},"premium_cashflow":{"type":"number"},"fee":{"type":"number"},"cash_after":{"type":"number"},"realized_pnl":{"nullable":true,"type":"number"},"source_timestamp":{"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))$"},"scheduled_timestamp":{"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))$"},"settlement_minute":{"type":"boolean"},"bid_ask_spread":{"description":"Ask minus bid of the filled instrument at the fill minute, in price units. On every open/close fill; null when the quote is not two-sided. Absent on settlements.","nullable":true,"type":"number"},"spread_cost_vs_mid":{"description":"Half the quoted spread times quantity and contract size, in collateral: the give-up of a bid/ask fill against mid, before slippage and fees. Null for mark fills or without a two-sided quote.","nullable":true,"type":"number"},"index_price":{"type":"number"},"delta":{"nullable":true,"type":"number"},"liquidity":{"nullable":true,"description":"Null for official expiry settlement, which consumes no book size.","type":"object","properties":{"model":{"type":"string","enum":["displayed_l1_all_or_none"]},"side":{"type":"string","enum":["bid","ask"]},"size_unit":{"type":"string","enum":["contracts"]},"displayed_quantity":{"type":"number"},"available_before":{"type":"number"},"available_after":{"type":"number"}},"required":["model","side","size_unit","displayed_quantity","available_before","available_after"],"additionalProperties":false}},"required":["sequence","timestamp","component_id","leg_id","position_id","instrument","event","execution_basis","reason","signed_quantity","price","premium_cashflow","fee","cash_after","realized_pnl","source_timestamp","liquidity"],"additionalProperties":false}},"rejections":{"type":"array","items":{"type":"object","properties":{"timestamp":{"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))$"},"scheduled_timestamp":{"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))$"},"attempts":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"component_ids":{"type":"array","items":{"type":"string"}},"reason":{"type":"string","enum":["NO_MATCHING_CONTRACT","INSUFFICIENT_MARGIN","MISSING_LIQUIDITY","INSUFFICIENT_LIQUIDITY"]},"contract_selection":{"type":"object","properties":{"target_expiry_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))$"},"expiry_selection":{"type":"string","enum":["exact","nearest_listed"]},"selected_expiry_at":{"nullable":true,"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))$"},"detail":{"type":"string","enum":["EXPIRY_NOT_OBSERVED","STRATEGY_FILTERS_UNSATISFIED"]},"selection_failure":{"description":"Why STRATEGY_FILTERS_UNSATISFIED: which part of the strike ladder failed.","type":"string","enum":["NO_ELIGIBLE_CONTRACT","NO_COMMON_STRIKE","NO_ASCENDING_LADDER"]},"strike_rank":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"leg_ids":{"description":"The legs to change.","type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["target_expiry_at","expiry_selection","selected_expiry_at","detail"],"additionalProperties":false},"liquidity_shortfalls":{"type":"array","items":{"type":"object","properties":{"instrument":{"type":"string"},"side":{"type":"string","enum":["bid","ask"]},"requested_quantity":{"type":"number"},"displayed_quantity":{"nullable":true,"type":"number"},"available_quantity":{"nullable":true,"type":"number"},"reason":{"type":"string","enum":["MISSING_LIQUIDITY","INSUFFICIENT_LIQUIDITY"]}},"required":["instrument","side","requested_quantity","displayed_quantity","available_quantity","reason"],"additionalProperties":false}}},"required":["timestamp","component_ids","reason"],"additionalProperties":false}},"skipped_rolls":{"description":"Rolls given up under unfilled_roll_policy hold_position; the held positions stayed open.","type":"array","items":{"type":"object","properties":{"component_id":{"type":"string"},"scheduled_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))$"},"abandoned_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))$"},"attempts":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"last_failure_code":{"type":"string"},"coordinate":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["component_id","scheduled_at","abandoned_at","attempts","last_failure_code"],"additionalProperties":false}},"execution_delays":{"type":"array","items":{"type":"object","properties":{"component_id":{"type":"string"},"scheduled_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))$"},"executed_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))$"},"reason":{"type":"string"},"action":{"type":"string","enum":["entry","roll"]},"attempts":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991}},"required":["component_id","scheduled_at","executed_at","reason"],"additionalProperties":false}},"data_quality":{"type":"object","properties":{"status":{"type":"string","enum":["no_skipped_observations","completed_with_gaps"]},"warnings":{"type":"array","items":{"type":"string"}},"skipped_minutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"carried_forward_minutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"longest_gap_minutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"evaluated_steps":{"type":"integer","minimum":0,"maximum":9007199254740991},"gap_limit_minutes":{"nullable":true,"description":"Null for carry-forward (no duration failure); total skip-policy allowance for strict skip_short_gaps. Historical v1.7 results may contain their then-enforced carry limit.","type":"integer","minimum":0,"maximum":9007199254740991},"gaps":{"type":"array","items":{"type":"object","properties":{"from":{"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))$"},"to_exclusive":{"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))$"},"resumed_at":{"nullable":true,"description":"Null if the gap is still open at the simulation stop; no later observation was used.","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))$"},"missing_minutes":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"instruments":{"type":"array","items":{"type":"string"}},"reason":{"type":"string","enum":["MISSING_HELD_SNAPSHOT"]}},"required":["from","to_exclusive","resumed_at","missing_minutes","instruments","reason"],"additionalProperties":false}}},"required":["status","warnings","skipped_minutes","evaluated_steps","gap_limit_minutes","gaps"],"additionalProperties":false},"assumptions":{"type":"object","additionalProperties":{},"description":"Execution, fees, scheduling, research margin and missing-data assumptions."},"provenance":{"type":"object","additionalProperties":{},"description":"Retained-input fingerprints and historical delivery-price evidence."},"view":{"description":"Read-time projection. Compact arrays are paginated; follow each section next_offset. Summary always covers the entire stored result.","type":"object","additionalProperties":{}}},"required":["engine_version","currency","capital_model","margin_model","requested_start","requested_end","completed_through","termination","summary","equity","executions","rejections","data_quality","assumptions","provenance"],"additionalProperties":false}},"required":["job_id","result"],"additionalProperties":false},"BacktestStrategies":{"type":"object","properties":{"engine_version":{"type":"string"},"build_sha":{"nullable":true,"type":"string","pattern":"^[a-f0-9]{40}$"},"currencies":{"type":"array","items":{"type":"string"}},"products":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"underlying":{"type":"string"},"instrument_prefix":{"type":"string"},"collateral_currency":{"type":"string","enum":["BTC","ETH","USDC"]},"margin_type":{"type":"string","enum":["inverse","linear"]},"contract_size":{"type":"number","minimum":0,"exclusiveMinimum":true},"quantity_step":{"type":"number","minimum":0,"exclusiveMinimum":true},"delivery_index":{"type":"string"}},"required":["currency","underlying","instrument_prefix","collateral_currency","margin_type","contract_size","quantity_step","delivery_index"],"additionalProperties":false}},"exchanges":{"type":"array","items":{"type":"string"}},"valuation_interval":{"type":"string"},"supported_resolutions":{"type":"array","items":{"type":"string"}},"default_resolution":{"type":"string"},"default_equity_interval":{"type":"string"},"max_minute_equity_points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"data_gap_policy":{"type":"object","properties":{"default_1m":{"type":"string"},"default_1h":{"type":"string"},"max_consecutive_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_missing_fraction_of_requested_steps":{"type":"number"},"minimum_total_allowance_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limits_apply_to":{"type":"string"},"default_max_carry_forward_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"default_carry_forward_warning_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"carry_forward_limit_action":{"type":"string","enum":["warning_only"]},"maximum_max_carry_forward_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"default_entry_retry_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exhausted_roll_policy":{"type":"string"},"entry_policy":{"type":"string"},"maintenance_handling":{"type":"string"},"actions_during_gaps":{"type":"string"},"critical_scheduled_observations":{"type":"string"}},"required":["default_1m","default_1h","max_consecutive_minutes","max_missing_fraction_of_requested_steps","minimum_total_allowance_minutes","actions_during_gaps","critical_scheduled_observations"],"additionalProperties":false},"execution_models":{"type":"array","items":{"type":"string"}},"default_execution_model":{"type":"string"},"scheduling":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"liquidity":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"capital_model":{"type":"string","enum":["shared"]},"max_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_components":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_legs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"request_schema":{"type":"object","additionalProperties":{}},"unfilled_roll_policies":{"type":"array","items":{"type":"string"}},"default_unfilled_roll_policy":{"type":"string"},"instrument_naming":{"type":"string"},"account_limits":{"type":"object","properties":{"outstanding_jobs_per_account":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"capacity_error":{"type":"string"}},"required":["outstanding_jobs_per_account","capacity_error"],"additionalProperties":false},"history_entitlement":{"description":"The calling account’s history window. Starts before earliest_start are refused with 403.","type":"object","properties":{"earliest_start":{"nullable":true,"description":"Earliest start this account may request, or null when unrestricted.","type":"string"},"lookback_months":{"nullable":true,"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"rule":{"type":"string"}},"required":["earliest_start","lookback_months","rule"],"additionalProperties":false},"capabilities":{"type":"object","additionalProperties":{"type":"boolean"}},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"legs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"option_type":{"type":"string","enum":["C","P"]},"side":{"type":"string","enum":["buy","sell"]},"strike_rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity_multiplier":{"type":"number"}},"required":["id","option_type","side","strike_rank","quantity_multiplier"],"additionalProperties":false}}},"required":["id","legs"],"additionalProperties":false}}},"required":["engine_version","currencies","products","exchanges","valuation_interval","supported_resolutions","default_resolution","default_equity_interval","max_minute_equity_points","data_gap_policy","execution_models","default_execution_model","scheduling","liquidity","capital_model","max_days","max_components","max_legs","request_schema","capabilities","templates"],"additionalProperties":false},"BacktestHttpError":{"type":"object","properties":{"statusCode":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error":{"type":"string"},"code":{"description":"For example BACKTEST_CAPACITY on admission limits.","type":"string"}},"required":["statusCode","message"],"additionalProperties":false}}},"externalDocs":{"description":"Laevitas API documentation","url":"https://apiv2.laevitas.ch/redoc"}}